From 4f982d5aa5a399d14bfa4e07e2bbdd156f832427 Mon Sep 17 00:00:00 2001 From: Lubos Date: Sun, 16 Nov 2025 16:27:32 +0800 Subject: [PATCH 01/15] test: break sample output --- dev/openapi-ts.config.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 2320c3687..d22b6b933 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -305,9 +305,10 @@ export default defineConfig(() => { // case: 'SCREAMING_SNAKE_CASE', // comments: false, exportFromIndex: true, - // infiniteQueryKeys: { - // name: '{{name}}IQK', - // }, + infiniteQueryKeys: { + // name: '{{name}}IQK', + name: 'options', + }, infiniteQueryOptions: { meta() { return { @@ -315,6 +316,7 @@ export default defineConfig(() => { }; }, // name: '{{name}}IQO', + name: 'options', }, mutationOptions: { meta() { @@ -323,10 +325,12 @@ export default defineConfig(() => { }; }, // name: '{{name}}MO', + name: 'options', }, name: '@tanstack/react-query', queryKeys: { // name: '{{name}}QK', + name: 'options', tags: true, }, // queryOptions: false, @@ -336,7 +340,8 @@ export default defineConfig(() => { // custom: 'value', // } // }, - name: '{{name}}QO', + // name: '{{name}}QO', + name: 'options', }, useQuery: true, '~hooks': { From 2b253c05a9f0981a71eec1269593b9266185b77c Mon Sep 17 00:00:00 2001 From: Lubos Date: Sun, 23 Nov 2025 09:07:51 +0800 Subject: [PATCH 02/15] feat: canonical symbols --- dev/openapi-ts.config.ts | 15 +- docs/package.json | 2 +- docs/scripts/optimize-images.js | 13 + .../openapi-ts-openai/src/client/types.gen.ts | 122 +++---- .../codegen-core/src/__tests__/bimap.test.ts | 13 +- .../codegen-core/src/__tests__/files.test.ts | 2 + .../src/__tests__/symbols.test.ts | 67 ++-- packages/codegen-core/src/bimap/bimap.ts | 28 +- packages/codegen-core/src/bimap/types.d.ts | 4 +- packages/codegen-core/src/bindings/utils.ts | 10 +- .../types.d.ts => extensions.d.ts} | 0 packages/codegen-core/src/files/registry.ts | 1 + packages/codegen-core/src/files/types.d.ts | 4 + packages/codegen-core/src/index.ts | 7 +- .../src/{output/types.d.ts => output.d.ts} | 0 packages/codegen-core/src/project/project.ts | 8 +- packages/codegen-core/src/project/types.d.ts | 4 +- packages/codegen-core/src/renderer/types.d.ts | 2 +- packages/codegen-core/src/symbols/registry.ts | 46 +-- packages/codegen-core/src/symbols/symbol.ts | 316 ++++++++++++++++++ packages/codegen-core/src/symbols/types.d.ts | 46 +-- packages/codegen-core/src/syntax-node.d.ts | 20 ++ packages/codegen-core/tsconfig.base.json | 2 + packages/codegen-core/tsconfig.json | 1 - .../plugins/valibot/default/valibot.gen.ts | 2 +- .../plugins/valibot/default/valibot.gen.ts | 2 +- .../3.0.x/validators/valibot.gen.ts | 4 +- .../plugins/valibot/default/valibot.gen.ts | 2 +- .../validators-circular-ref-2/valibot.gen.ts | 2 +- .../validators-circular-ref/valibot.gen.ts | 4 +- .../3.1.x/validators-metadata/valibot.gen.ts | 4 +- .../3.1.x/validators-types/valibot.gen.ts | 4 +- .../3.1.x/validators/valibot.gen.ts | 4 +- .../method-class-conflict/class/sdk.gen.ts | 38 +-- .../2.0.x/mini/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v3/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 2 +- .../3.0.x/mini/circular/zod.gen.ts | 10 +- .../3.0.x/mini/default/zod.gen.ts | 2 +- .../3.0.x/mini/validators/zod.gen.ts | 4 +- .../3.0.x/v3/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v3/default/zod.gen.ts | 2 +- .../3.0.x/v3/validators/zod.gen.ts | 4 +- .../3.0.x/v4/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 2 +- .../3.0.x/v4/validators/zod.gen.ts | 4 +- .../3.1.x/mini/default/zod.gen.ts | 2 +- .../mini/validators-circular-ref-2/zod.gen.ts | 2 +- .../mini/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 4 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/mini/validators-types/zod.gen.ts | 4 +- .../3.1.x/mini/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v3/default/zod.gen.ts | 2 +- .../v3/validators-circular-ref-2/zod.gen.ts | 2 +- .../v3/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v3/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v3/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v3/validators-types/zod.gen.ts | 4 +- .../3.1.x/v3/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 2 +- .../v4/validators-circular-ref-2/zod.gen.ts | 2 +- .../v4/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v4/validators-types/zod.gen.ts | 4 +- .../3.1.x/v4/validators/zod.gen.ts | 4 +- .../2.0.x/mini/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v3/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 2 +- .../3.0.x/mini/circular/zod.gen.ts | 10 +- .../3.0.x/mini/default/zod.gen.ts | 2 +- .../3.0.x/mini/validators/zod.gen.ts | 4 +- .../3.0.x/v3/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v3/default/zod.gen.ts | 2 +- .../3.0.x/v3/validators/zod.gen.ts | 4 +- .../3.0.x/v4/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 2 +- .../3.0.x/v4/validators/zod.gen.ts | 4 +- .../3.1.x/mini/default/zod.gen.ts | 2 +- .../mini/validators-circular-ref-2/zod.gen.ts | 2 +- .../mini/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 4 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/mini/validators-types/zod.gen.ts | 4 +- .../3.1.x/mini/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v3/default/zod.gen.ts | 2 +- .../v3/validators-circular-ref-2/zod.gen.ts | 2 +- .../v3/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v3/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v3/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v3/validators-types/zod.gen.ts | 4 +- .../3.1.x/v3/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 2 +- .../v4/validators-circular-ref-2/zod.gen.ts | 2 +- .../v4/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v4/validators-types/zod.gen.ts | 4 +- .../3.1.x/v4/validators/zod.gen.ts | 4 +- .../src/generate/__tests__/renderer.test.ts | 6 +- packages/openapi-ts/src/generate/renderer.ts | 70 ++-- .../plugins/@angular/common/httpRequests.ts | 22 +- .../plugins/@angular/common/httpResources.ts | 12 +- .../plugins/@hey-api/client-core/client.ts | 5 +- .../client-core/createClientConfig.ts | 6 +- .../src/plugins/@hey-api/schemas/plugin.ts | 15 +- .../src/plugins/@hey-api/sdk/shared/class.ts | 20 +- .../plugins/@hey-api/sdk/shared/functions.ts | 5 +- .../@hey-api/sdk/shared/typeOptions.ts | 6 +- .../plugins/@hey-api/transformers/plugin.ts | 5 +- .../typescript/shared/clientOptions.ts | 4 +- .../@hey-api/typescript/shared/export.ts | 88 ++++- .../@hey-api/typescript/shared/operation.ts | 30 +- .../@hey-api/typescript/shared/webhook.ts | 12 +- .../@hey-api/typescript/shared/webhooks.ts | 4 +- .../plugins/@hey-api/typescript/v1/plugin.ts | 30 +- .../@hey-api/typescript/v1/toAst/string.ts | 12 +- .../plugins/@pinia/colada/mutationOptions.ts | 5 +- .../src/plugins/@pinia/colada/queryKey.ts | 12 +- .../src/plugins/@pinia/colada/queryOptions.ts | 6 +- .../plugins/@tanstack/query-core/queryKey.ts | 12 +- .../query-core/v5/infiniteQueryOptions.ts | 8 +- .../query-core/v5/mutationOptions.ts | 5 +- .../@tanstack/query-core/v5/queryOptions.ts | 6 +- .../@tanstack/query-core/v5/useQuery.ts | 5 +- .../src/plugins/arktype/shared/export.ts | 8 +- .../src/plugins/arktype/v2/plugin.ts | 3 - .../openapi-ts/src/plugins/fastify/plugin.ts | 7 +- .../openapi-ts/src/plugins/swr/v2/useSwr.ts | 5 +- .../src/plugins/valibot/shared/export.ts | 4 +- .../src/plugins/valibot/shared/operation.ts | 2 - .../src/plugins/valibot/shared/webhook.ts | 1 - .../src/plugins/valibot/v1/plugin.ts | 1 - .../openapi-ts/src/plugins/zod/mini/plugin.ts | 3 - .../src/plugins/zod/shared/export.ts | 8 +- .../src/plugins/zod/shared/operation.ts | 6 - .../src/plugins/zod/shared/webhook.ts | 3 - .../openapi-ts/src/plugins/zod/v3/plugin.ts | 3 - .../openapi-ts/src/plugins/zod/v4/plugin.ts | 3 - packages/openapi-ts/src/ts-dsl/base.ts | 56 +++- packages/openapi-ts/src/ts-dsl/decl/class.ts | 67 ++-- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 27 +- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 17 +- packages/openapi-ts/src/ts-dsl/decl/field.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/func.ts | 31 +- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/init.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/member.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/method.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/param.ts | 6 + .../openapi-ts/src/ts-dsl/decl/pattern.ts | 6 + packages/openapi-ts/src/ts-dsl/decl/setter.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/array.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/as.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/attr.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/await.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/binary.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/call.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/expr.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/id.ts | 6 + .../openapi-ts/src/ts-dsl/expr/literal.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/new.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/object.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/prefix.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/prop.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/regexp.ts | 6 + .../openapi-ts/src/ts-dsl/expr/template.ts | 6 + .../openapi-ts/src/ts-dsl/expr/ternary.ts | 6 + packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 6 + packages/openapi-ts/src/ts-dsl/layout/doc.ts | 6 + packages/openapi-ts/src/ts-dsl/layout/hint.ts | 6 + .../openapi-ts/src/ts-dsl/layout/newline.ts | 6 + packages/openapi-ts/src/ts-dsl/layout/note.ts | 6 + .../openapi-ts/src/ts-dsl/mixins/apply.ts | 1 - packages/openapi-ts/src/ts-dsl/mixins/args.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/decorator.ts | 13 +- packages/openapi-ts/src/ts-dsl/mixins/do.ts | 6 +- packages/openapi-ts/src/ts-dsl/mixins/doc.ts | 9 +- packages/openapi-ts/src/ts-dsl/mixins/hint.ts | 9 +- .../openapi-ts/src/ts-dsl/mixins/modifiers.ts | 71 ++-- packages/openapi-ts/src/ts-dsl/mixins/note.ts | 9 +- .../openapi-ts/src/ts-dsl/mixins/param.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/pattern.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/type-args.ts | 6 +- .../src/ts-dsl/mixins/type-params.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/value.ts | 6 +- packages/openapi-ts/src/ts-dsl/stmt/if.ts | 6 + packages/openapi-ts/src/ts-dsl/stmt/return.ts | 6 + packages/openapi-ts/src/ts-dsl/stmt/stmt.ts | 6 + packages/openapi-ts/src/ts-dsl/stmt/throw.ts | 6 + packages/openapi-ts/src/ts-dsl/stmt/var.ts | 19 +- packages/openapi-ts/src/ts-dsl/token.ts | 6 + packages/openapi-ts/src/ts-dsl/type/alias.ts | 19 +- packages/openapi-ts/src/ts-dsl/type/and.ts | 6 + packages/openapi-ts/src/ts-dsl/type/attr.ts | 30 +- packages/openapi-ts/src/ts-dsl/type/expr.ts | 41 ++- packages/openapi-ts/src/ts-dsl/type/func.ts | 6 + .../openapi-ts/src/ts-dsl/type/idx-sig.ts | 6 + packages/openapi-ts/src/ts-dsl/type/idx.ts | 6 + .../openapi-ts/src/ts-dsl/type/literal.ts | 6 + packages/openapi-ts/src/ts-dsl/type/mapped.ts | 6 + packages/openapi-ts/src/ts-dsl/type/object.ts | 6 + .../openapi-ts/src/ts-dsl/type/operator.ts | 6 + packages/openapi-ts/src/ts-dsl/type/or.ts | 6 + packages/openapi-ts/src/ts-dsl/type/param.ts | 6 + packages/openapi-ts/src/ts-dsl/type/prop.ts | 6 + packages/openapi-ts/src/ts-dsl/type/query.ts | 6 + .../openapi-ts/src/ts-dsl/type/template.ts | 6 + packages/openapi-ts/src/ts-dsl/type/tuple.ts | 6 + 210 files changed, 1523 insertions(+), 745 deletions(-) rename packages/codegen-core/src/{extensions/types.d.ts => extensions.d.ts} (100%) rename packages/codegen-core/src/{output/types.d.ts => output.d.ts} (100%) create mode 100644 packages/codegen-core/src/symbols/symbol.ts create mode 100644 packages/codegen-core/src/syntax-node.d.ts diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index d22b6b933..9f2aaffb2 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -39,8 +39,9 @@ export default defineConfig(() => { '3.1.x', // 'circular.yaml', // 'dutchie.json', + 'enum-names-values.yaml', // 'invalid', - 'full.yaml', + // 'full.yaml', // 'object-property-names.yaml', // 'openai.yaml', // 'opencode.yaml', @@ -217,7 +218,7 @@ export default defineConfig(() => { { // baseUrl: false, // exportFromIndex: true, - name: '@hey-api/client-angular', + // name: '@hey-api/client-angular', // runtimeConfigPath: path.resolve(__dirname, 'hey-api.ts'), // runtimeConfigPath: './src/hey-api.ts', // strictBaseUrl: true, @@ -265,7 +266,7 @@ export default defineConfig(() => { name: '@hey-api/sdk', // operationId: false, // paramsStructure: 'flat', - responseStyle: 'data', + // responseStyle: 'data', // signature: 'auto', // signature: 'client', // signature: 'object', @@ -293,13 +294,13 @@ export default defineConfig(() => { { // bigInt: true, dates: true, - name: '@hey-api/transformers', + // name: '@hey-api/transformers', }, { - name: 'fastify', + // name: 'fastify', }, { - name: 'swr', + // name: 'swr', }, { // case: 'SCREAMING_SNAKE_CASE', @@ -362,7 +363,7 @@ export default defineConfig(() => { }, }, { - name: 'arktype', + // name: 'arktype', types: { infer: true, }, diff --git a/docs/package.json b/docs/package.json index d6b803f50..34794fcd7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "@docs/openapi-ts", "version": "0.10.4", - "description": "Documentation for OpenaAPI TypeScript.", + "description": "Documentation for OpenAPI TypeScript.", "private": true, "type": "module", "scripts": { diff --git a/docs/scripts/optimize-images.js b/docs/scripts/optimize-images.js index 2bc7898f9..fca42f964 100644 --- a/docs/scripts/optimize-images.js +++ b/docs/scripts/optimize-images.js @@ -31,6 +31,19 @@ const images = [ ], source: 'bricks.png', }, + // { + // sizes: [ + // { + // formats: ['png'], + // width: 300, + // }, + // { + // formats: ['png'], + // width: 640, + // }, + // ], + // source: 'hero.png', + // }, { sizes: [ { diff --git a/examples/openapi-ts-openai/src/client/types.gen.ts b/examples/openapi-ts-openai/src/client/types.gen.ts index ac7532f67..449f08aca 100644 --- a/examples/openapi-ts-openai/src/client/types.gen.ts +++ b/examples/openapi-ts-openai/src/client/types.gen.ts @@ -259,8 +259,8 @@ export const AssistantSupportedModels = { GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', } as const; -export type AssistantSupportedModels = - (typeof AssistantSupportedModels)[keyof typeof AssistantSupportedModels]; +export type AssistantSupportedModels2 = + (typeof AssistantSupportedModels2)[keyof typeof AssistantSupportedModels2]; /** * Code interpreter tool @@ -378,8 +378,8 @@ export const AudioResponseFormat = { * The format of the output, in one of these options: `json`, `text`, `srt`, `verbose_json`, or `vtt`. For `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`, the only supported format is `json`. * */ -export type AudioResponseFormat = - (typeof AudioResponseFormat)[keyof typeof AudioResponseFormat]; +export type AudioResponseFormat2 = + (typeof AudioResponseFormat2)[keyof typeof AudioResponseFormat2]; /** * A log of a user action or configuration change within this organization. @@ -389,7 +389,7 @@ export type AuditLog = { * The ID of this log. */ id: string; - type: AuditLogEventType; + type: AuditLogEventType2; /** * The Unix timestamp (in seconds) of the event. */ @@ -949,8 +949,8 @@ export const AuditLogEventType = { /** * The event type. */ -export type AuditLogEventType = - (typeof AuditLogEventType)[keyof typeof AuditLogEventType]; +export type AuditLogEventType2 = + (typeof AuditLogEventType2)[keyof typeof AuditLogEventType2]; /** * Auto Chunking Strategy @@ -1911,8 +1911,8 @@ export const ChatCompletionRole = { /** * The role of the author of a message */ -export type ChatCompletionRole = - (typeof ChatCompletionRole)[keyof typeof ChatCompletionRole]; +export type ChatCompletionRole2 = + (typeof ChatCompletionRole2)[keyof typeof ChatCompletionRole2]; /** * Options for streaming response. Only set this when you set `stream: true`. @@ -2698,7 +2698,7 @@ export type CreateAssistantRequest = { * ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them. * */ - model: string | AssistantSupportedModels; + model: string | AssistantSupportedModels2; /** * The name of the assistant. The maximum length is 256 characters. * @@ -2714,7 +2714,7 @@ export type CreateAssistantRequest = { * */ instructions?: string; - reasoning_effort?: ReasoningEffort; + reasoning_effort?: ReasoningEffort2; /** * A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`. * @@ -2815,8 +2815,8 @@ export type CreateChatCompletionRequest = CreateModelResponseProperties & { */ model: ModelIdsShared; modalities?: ResponseModalities; - verbosity?: Verbosity; - reasoning_effort?: ReasoningEffort; + verbosity?: Verbosity2; + reasoning_effort?: ReasoningEffort2; /** * An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and [reasoning tokens](https://platform.openai.com/docs/guides/reasoning). * @@ -2856,7 +2856,7 @@ export type CreateChatCompletionRequest = CreateModelResponseProperties & { type: 'approximate'; approximate: WebSearchLocation; }; - search_context_size?: WebSearchContextSize; + search_context_size?: WebSearchContextSize2; }; /** * An integer between 0 and 20 specifying the number of most likely tokens to @@ -3077,7 +3077,7 @@ export type CreateChatCompletionResponse = { * The model used for the chat completion. */ model: string; - service_tier?: ServiceTier; + service_tier?: ServiceTier2; /** * This fingerprint represents the backend configuration that the model runs with. * @@ -3151,7 +3151,7 @@ export type CreateChatCompletionStreamResponse = { * The model to generate the completion. */ model: string; - service_tier?: ServiceTier; + service_tier?: ServiceTier2; /** * This fingerprint represents the backend configuration that the model runs with. * Can be used in conjunction with the `seed` request parameter to understand when backend changes have been made that might impact determinism. @@ -3859,7 +3859,7 @@ export type CreateFileRequest = { * */ file: Blob | File; - purpose: FilePurpose; + purpose: FilePurpose2; expires_after?: FileExpirationAfter; }; @@ -4065,7 +4065,7 @@ export type CreateImageEditRequest = { * */ user?: string; - input_fidelity?: ImageInputFidelity; + input_fidelity?: ImageInputFidelity2; /** * Edit the image in streaming mode. Defaults to `false`. See the * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information. @@ -4498,7 +4498,7 @@ export type CreateResponse = CreateModelResponseProperties & * enrolled in the zero data retention program). * */ - include?: Array; + include?: Array; /** * Whether to allow the model to run tool calls in parallel. * @@ -4538,8 +4538,8 @@ export type CreateRunRequest = { /** * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to be used to execute this run. If a value is provided here, it will override the model associated with the assistant. If not, the model associated with the assistant will be used. */ - model?: string | AssistantSupportedModels; - reasoning_effort?: ReasoningEffort; + model?: string | AssistantSupportedModels2; + reasoning_effort?: ReasoningEffort2; /** * Overrides the [instructions](https://platform.openai.com/docs/api-reference/assistants/createAssistant) of the assistant. This is useful for modifying the behavior on a per-run basis. */ @@ -4836,7 +4836,7 @@ export type CreateTranscriptionRequest = { * */ prompt?: string; - response_format?: AudioResponseFormat; + response_format?: AudioResponseFormat2; /** * The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use [log probability](https://en.wikipedia.org/wiki/Log_probability) to automatically increase the temperature until certain thresholds are hit. * @@ -4866,7 +4866,7 @@ export type CreateTranscriptionRequest = { * the models `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. * */ - include?: Array; + include?: Array; }; /** @@ -5746,7 +5746,7 @@ export type EvalResponsesSource = { /** * Optional reasoning effort parameter. This is a query parameter used to select responses. */ - reasoning_effort?: ReasoningEffort; + reasoning_effort?: ReasoningEffort2; /** * Sampling temperature. This is a query parameter used to select responses. */ @@ -6181,8 +6181,8 @@ export const FileSearchRanker = { /** * The ranker to use for the file search. If not specified will use the `auto` ranker. */ -export type FileSearchRanker = - (typeof FileSearchRanker)[keyof typeof FileSearchRanker]; +export type FileSearchRanker2 = + (typeof FileSearchRanker2)[keyof typeof FileSearchRanker2]; /** * File search tool call ranking options @@ -6193,7 +6193,7 @@ export type FileSearchRanker = * */ export type FileSearchRankingOptions = { - ranker?: FileSearchRanker; + ranker?: FileSearchRanker2; /** * The score threshold for the file search. All values must be a floating point number between 0 and 1. */ @@ -7313,7 +7313,7 @@ export type ImageGenTool = { * */ background?: 'transparent' | 'opaque' | 'auto'; - input_fidelity?: ImageInputFidelity; + input_fidelity?: ImageInputFidelity2; /** * Optional mask for inpainting. Contains `image_url` * (string, optional) and `file_id` (string, optional). @@ -7381,8 +7381,8 @@ export const ImageInputFidelity = { HIGH: 'high', LOW: 'low' } as const; * for `gpt-image-1`. Supports `high` and `low`. Defaults to `low`. * */ -export type ImageInputFidelity = - (typeof ImageInputFidelity)[keyof typeof ImageInputFidelity]; +export type ImageInputFidelity2 = + (typeof ImageInputFidelity2)[keyof typeof ImageInputFidelity2]; /** * Image generation response @@ -7494,7 +7494,7 @@ export const Includable = { * enrolled in the zero data retention program). * */ -export type Includable = (typeof Includable)[keyof typeof Includable]; +export type Includable2 = (typeof Includable2)[keyof typeof Includable2]; /** * Audio input @@ -8846,7 +8846,7 @@ export type ModelIdsResponses = | 'computer-use-preview' | 'computer-use-preview-2025-03-11'; -export type ModelIdsShared = string | ChatModel; +export type ModelIdsShared = string | ChatModel2; export type ModelResponseProperties = { metadata?: Metadata; @@ -8892,7 +8892,7 @@ export type ModelResponseProperties = { * */ prompt_cache_key?: string; - service_tier?: ServiceTier; + service_tier?: ServiceTier2; }; export type ModifyAssistantRequest = { @@ -8900,8 +8900,8 @@ export type ModifyAssistantRequest = { * ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them. * */ - model?: string | AssistantSupportedModels; - reasoning_effort?: ReasoningEffort; + model?: string | AssistantSupportedModels2; + reasoning_effort?: ReasoningEffort2; /** * The name of the assistant. The maximum length is 256 characters. * @@ -12424,7 +12424,7 @@ export type RealtimeTranscriptionSessionCreateResponse = { * */ export type Reasoning = { - effort?: ReasoningEffort; + effort?: ReasoningEffort2; /** * A summary of the reasoning performed by the model. This can be * useful for debugging and understanding the model's reasoning process. @@ -12468,8 +12468,8 @@ export const ReasoningEffort = { * on reasoning in a response. * */ -export type ReasoningEffort = - (typeof ReasoningEffort)[keyof typeof ReasoningEffort]; +export type ReasoningEffort2 = + (typeof ReasoningEffort2)[keyof typeof ReasoningEffort2]; /** * Reasoning @@ -12980,7 +12980,7 @@ export type ResponseCustomToolCallInputDoneEvent = { * */ export type ResponseError = { - code: ResponseErrorCode; + code: ResponseErrorCode2; /** * A human-readable description of the error. * @@ -13017,8 +13017,8 @@ export const ResponseErrorCode = { * The error code for the response. * */ -export type ResponseErrorCode = - (typeof ResponseErrorCode)[keyof typeof ResponseErrorCode]; +export type ResponseErrorCode2 = + (typeof ResponseErrorCode2)[keyof typeof ResponseErrorCode2]; /** * Emitted when an error occurs. @@ -13896,7 +13896,7 @@ export type ResponseProperties = { */ text?: { format?: TextResponseFormatConfiguration; - verbosity?: Verbosity; + verbosity?: Verbosity2; }; /** * An array of tools the model may call while generating a response. You @@ -13923,7 +13923,7 @@ export type ResponseProperties = { * */ tool_choice?: - | ToolChoiceOptions + | ToolChoiceOptions2 | ToolChoiceAllowed | ToolChoiceTypes | ToolChoiceFunction @@ -14765,7 +14765,7 @@ export type RunObject = { * The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run. */ assistant_id: string; - status: RunStatus; + status: RunStatus2; /** * Details on the action required to continue the run. Will be `null` if no action is required. */ @@ -15190,7 +15190,7 @@ export type RunStepDetailsToolCallsFileSearchObject = { * The ranking options for the file search. */ export type RunStepDetailsToolCallsFileSearchRankingOptionsObject = { - ranker: FileSearchRanker; + ranker: FileSearchRanker2; /** * The score threshold for the file search. All values must be a floating point number between 0 and 1. */ @@ -15537,7 +15537,7 @@ export const ServiceTier = { * When the `service_tier` parameter is set, the response body will include the `service_tier` value based on the processing mode actually used to serve the request. This response value may be different from the value set in the parameter. * */ -export type ServiceTier = (typeof ServiceTier)[keyof typeof ServiceTier]; +export type ServiceTier2 = (typeof ServiceTier2)[keyof typeof ServiceTier2]; /** * Emitted for each chunk of audio data generated during speech synthesis. @@ -15933,8 +15933,8 @@ export const ToolChoiceOptions = { * `required` means the model must call one or more tools. * */ -export type ToolChoiceOptions = - (typeof ToolChoiceOptions)[keyof typeof ToolChoiceOptions]; +export type ToolChoiceOptions2 = + (typeof ToolChoiceOptions2)[keyof typeof ToolChoiceOptions2]; /** * Hosted tool @@ -16100,8 +16100,8 @@ export type TranscriptionChunkingStrategy = 'auto' | VadConfig; export const TranscriptionInclude = { LOGPROBS: 'logprobs' } as const; -export type TranscriptionInclude = - (typeof TranscriptionInclude)[keyof typeof TranscriptionInclude]; +export type TranscriptionInclude2 = + (typeof TranscriptionInclude2)[keyof typeof TranscriptionInclude2]; export type TranscriptionSegment = { /** @@ -17000,7 +17000,7 @@ export const Verbosity = { * Currently supported values are `low`, `medium`, and `high`. * */ -export type Verbosity = (typeof Verbosity)[keyof typeof Verbosity]; +export type Verbosity2 = (typeof Verbosity2)[keyof typeof Verbosity2]; export type VoiceIdsShared = | string @@ -17106,8 +17106,8 @@ export const WebSearchContextSize = { * search. One of `low`, `medium`, or `high`. `medium` is the default. * */ -export type WebSearchContextSize = - (typeof WebSearchContextSize)[keyof typeof WebSearchContextSize]; +export type WebSearchContextSize2 = + (typeof WebSearchContextSize2)[keyof typeof WebSearchContextSize2]; /** * Web search location @@ -18269,7 +18269,7 @@ export const FilePurpose = { * The intended purpose of the uploaded file. One of: - `assistants`: Used in the Assistants API - `batch`: Used in the Batch API - `fine-tune`: Used for fine-tuning - `vision`: Images used for vision fine-tuning - `user_data`: Flexible file type for any purpose - `evals`: Used for eval data sets * */ -export type FilePurpose = (typeof FilePurpose)[keyof typeof FilePurpose]; +export type FilePurpose2 = (typeof FilePurpose2)[keyof typeof FilePurpose2]; export type BatchError = { /** @@ -18451,7 +18451,7 @@ export const ChatModel = { GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', } as const; -export type ChatModel = (typeof ChatModel)[keyof typeof ChatModel]; +export type ChatModel2 = (typeof ChatModel2)[keyof typeof ChatModel2]; export type CreateThreadAndRunRequestWithoutStream = { /** @@ -18567,8 +18567,8 @@ export type CreateRunRequestWithoutStream = { /** * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to be used to execute this run. If a value is provided here, it will override the model associated with the assistant. If not, the model associated with the assistant will be used. */ - model?: string | AssistantSupportedModels; - reasoning_effort?: ReasoningEffort; + model?: string | AssistantSupportedModels2; + reasoning_effort?: ReasoningEffort2; /** * Overrides the [instructions](https://platform.openai.com/docs/api-reference/assistants/createAssistant) of the assistant. This is useful for modifying the behavior on a per-run basis. */ @@ -18648,7 +18648,7 @@ export const RunStatus = { /** * The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`. */ -export type RunStatus = (typeof RunStatus)[keyof typeof RunStatus]; +export type RunStatus2 = (typeof RunStatus2)[keyof typeof RunStatus2]; /** * The delta containing the fields that have changed on the run step. @@ -20419,7 +20419,7 @@ export type ListAuditLogsData = { /** * Return only events with a `type` in one of these values. For example, `project.created`. For all options, see the documentation for the [audit log object](https://platform.openai.com/docs/api-reference/audit-logs/object). */ - 'event_types[]'?: Array; + 'event_types[]'?: Array; /** * Return only events performed by these actors. Can be a user ID, a service account ID, or an api key tracking ID. */ @@ -22143,7 +22143,7 @@ export type GetResponseData = { * parameter for Response creation above for more information. * */ - include?: Array; + include?: Array; /** * If set to true, the model response data will be streamed to the client * as it is generated using [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format). @@ -22251,7 +22251,7 @@ export type ListInputItemsData = { * parameter for Response creation above for more information. * */ - include?: Array; + include?: Array; }; url: '/responses/{response_id}/input_items'; }; diff --git a/packages/codegen-core/src/__tests__/bimap.test.ts b/packages/codegen-core/src/__tests__/bimap.test.ts index b28fe2665..2a4b25d96 100644 --- a/packages/codegen-core/src/__tests__/bimap.test.ts +++ b/packages/codegen-core/src/__tests__/bimap.test.ts @@ -8,11 +8,11 @@ describe('BiMap', () => { // set and get expect(bimap.set(1, 'a')).toBe(bimap); expect(bimap.set(2, 'b')).toBe(bimap); - // get, getKey + // get, getKeys expect(bimap.get(1)).toBe('a'); expect(bimap.get(2)).toBe('b'); - expect(bimap.getKey('a')).toBe(1); - expect(bimap.getKey('b')).toBe(2); + expect(bimap.getKeys('a')).toEqual(new Set([1])); + expect(bimap.getKeys('b')).toEqual(new Set([2])); // hasKey, hasValue expect(bimap.hasKey(1)).toBe(true); expect(bimap.hasKey(2)).toBe(true); @@ -52,13 +52,14 @@ describe('BiMap', () => { // Overwrite value for existing key bimap.set(1, 'z'); expect(bimap.get(1)).toBe('z'); - expect(bimap.getKey('z')).toBe(1); + expect(bimap.getKeys('z')).toEqual(new Set([1])); // Overwrite key for existing value bimap.set(3, 'z'); - expect(bimap.getKey('z')).toBe(3); - expect(bimap.get(1)).toBeUndefined(); + expect(bimap.getKeys('z')).toEqual(new Set([1, 3])); + expect(bimap.get(1)).toBe('z'); // Iteration after overwrite expect(Array.from(bimap)).toEqual([ + [1, 'z'], [2, 'y'], [3, 'z'], ]); diff --git a/packages/codegen-core/src/__tests__/files.test.ts b/packages/codegen-core/src/__tests__/files.test.ts index ef376d1a1..981194c1e 100644 --- a/packages/codegen-core/src/__tests__/files.test.ts +++ b/packages/codegen-core/src/__tests__/files.test.ts @@ -17,6 +17,7 @@ describe('FileRegistry', () => { extension: undefined, external: undefined, id: expect.any(Number), + localNames: new Set(), name: 'Foo', path: undefined, resolvedNames: expect.any(Object), @@ -58,6 +59,7 @@ describe('FileRegistry', () => { extension: undefined, external: undefined, id: expect.any(Number), + localNames: new Set(), name: 'Bar', path: '/bar', resolvedNames: expect.any(Object), diff --git a/packages/codegen-core/src/__tests__/symbols.test.ts b/packages/codegen-core/src/__tests__/symbols.test.ts index 6a1edc28d..142391724 100644 --- a/packages/codegen-core/src/__tests__/symbols.test.ts +++ b/packages/codegen-core/src/__tests__/symbols.test.ts @@ -13,18 +13,25 @@ describe('SymbolRegistry', () => { // Register a symbol with meta const symbol1 = registry.register({ - meta: { - foo: 'bar', - }, - placeholder: 'Foo', - }); - expect(symbol1).toEqual({ - id: expect.any(Number), - meta: { - foo: 'bar', - }, + meta: { foo: 'bar' }, + name: '', placeholder: 'Foo', }); + expect(symbol1).toEqual( + expect.objectContaining({ + _dependencies: new Set(), + exportFrom: [], + exported: false, + id: expect.any(Number), + importKind: 'named', + kind: 'var', + meta: { + foo: 'bar', + }, + name: '', + placeholder: 'Foo', + }), + ); // get by id and meta expect(registry.get(symbol1.id)).toEqual(symbol1); @@ -35,30 +42,33 @@ describe('SymbolRegistry', () => { expect(registry.isRegistered({ foo: 'bar' })).toBe(true); // Registering again with same meta creates a new symbol - const symbol1b = registry.register({ meta: { foo: 'bar' } }); + const symbol1b = registry.register({ + meta: { foo: 'bar' }, + name: '', + }); expect(symbol1b).not.toEqual(symbol1); - // Registering with id overrides the symbol - const symbol1c = registry.register({ id: symbol1.id }); - expect(symbol1c).not.toEqual(symbol1); - expect(symbol1c.id).toBe(symbol1.id); - // Reference returns same symbol const ref1 = registry.reference({ foo: 'bar' }); - expect(ref1).toEqual(symbol1c); + expect(ref1).toEqual(symbol1); // Register a new symbol with different meta const symbol2 = registry.register({ exportFrom: ['x'], meta: { bar: 'baz' }, + name: '', placeholder: 'Bar', }); - expect(symbol2).toEqual({ - exportFrom: ['x'], - id: expect.any(Number), - meta: { bar: 'baz' }, - placeholder: 'Bar', - }); + expect(symbol2).toEqual( + expect.objectContaining({ + dependencies: new Set(), + exportFrom: ['x'], + id: expect.any(Number), + meta: { bar: 'baz' }, + name: '', + placeholder: 'Bar', + }), + ); // Registered symbols are yielded in order const registered = Array.from(registry.registered()); @@ -79,6 +89,7 @@ describe('SymbolRegistry', () => { expect(registry.isRegistered(symRef.id)).toBe(false); const symRegistered = registry.register({ meta: { qux: true }, + name: '', placeholder: 'Qux', }); expect(registry.isRegistered(symRegistered.id)).toBe(true); @@ -122,11 +133,11 @@ describe('SymbolRegistry', () => { const refAD = registry.reference({ a: 0, d: 0 }); const refAC = registry.reference({ a: 0, c: 0 }); - expect(symC).toEqual(refA); - expect(symC).toEqual(refAB); - expect(symC).toEqual(refAC); - expect(symC).not.toEqual(refAD); - expect(symC).not.toEqual(refB); + expect(refA.canonical).toEqual(symC); + expect(refAB.canonical).toEqual(symC); + expect(refAC.canonical).toEqual(symC); + expect(refAD.canonical).not.toEqual(symC); + expect(refB.canonical).not.toEqual(symC); expect(symC.meta).toEqual({ a: 0, b: 0, c: 0 }); }); diff --git a/packages/codegen-core/src/bimap/bimap.ts b/packages/codegen-core/src/bimap/bimap.ts index 93f21afb9..d28794531 100644 --- a/packages/codegen-core/src/bimap/bimap.ts +++ b/packages/codegen-core/src/bimap/bimap.ts @@ -2,7 +2,7 @@ import type { IBiMap } from './types'; export class BiMap implements IBiMap { private map = new Map(); - private reverse = new Map(); + private reverse = new Map>(); delete(key: Key): boolean { const value = this.map.get(key); @@ -13,9 +13,11 @@ export class BiMap implements IBiMap { } deleteValue(value: Value): boolean { - const key = this.reverse.get(value); - if (key !== undefined) { - this.map.delete(key); + const keys = this.reverse.get(value); + if (keys) { + for (const key of keys) { + this.map.delete(key); + } } return this.reverse.delete(value); } @@ -28,7 +30,7 @@ export class BiMap implements IBiMap { return this.map.get(key); } - getKey(value: Value): Key | undefined { + getKeys(value: Value): Set | undefined { return this.reverse.get(value); } @@ -47,14 +49,18 @@ export class BiMap implements IBiMap { set(key: Key, value: Value): this { const oldValue = this.map.get(key); if (oldValue !== undefined && oldValue !== value) { - this.reverse.delete(oldValue); - } - const oldKey = this.reverse.get(value); - if (oldKey !== undefined && oldKey !== key) { - this.map.delete(oldKey); + const oldKeys = this.reverse.get(oldValue); + if (oldKeys) { + oldKeys.delete(key); + if (oldKeys.size === 0) { + this.reverse.delete(oldValue); + } + } } this.map.set(key, value); - this.reverse.set(value, key); + const keys = this.reverse.get(value) ?? new Set(); + keys.add(key); + this.reverse.set(value, keys); return this; } diff --git a/packages/codegen-core/src/bimap/types.d.ts b/packages/codegen-core/src/bimap/types.d.ts index c7b81aea3..529d71699 100644 --- a/packages/codegen-core/src/bimap/types.d.ts +++ b/packages/codegen-core/src/bimap/types.d.ts @@ -30,11 +30,11 @@ export interface IBiMap { */ get(key: Key): Value | undefined; /** - * Gets the key associated with a value. + * Gets the keys associated with a value. * * @param value The value to look up. */ - getKey(value: Value): Key | undefined; + getKeys(value: Value): Set | undefined; /** * Checks if a key exists in the map. * diff --git a/packages/codegen-core/src/bindings/utils.ts b/packages/codegen-core/src/bindings/utils.ts index 84cf003f4..f8e9cf12d 100644 --- a/packages/codegen-core/src/bindings/utils.ts +++ b/packages/codegen-core/src/bindings/utils.ts @@ -1,5 +1,5 @@ import type { IFileOut } from '../files/types'; -import type { ISymbolOut } from '../symbols/types'; +import type { Symbol } from '../symbols/symbol'; import type { IBinding } from './types'; export const createBinding = ({ @@ -10,7 +10,7 @@ export const createBinding = ({ }: { file: IFileOut; modulePath: string; - symbol: ISymbolOut; + symbol: Symbol; symbolFile: IFileOut; }): IBinding => { const names: Array = []; @@ -48,12 +48,12 @@ export const createBinding = ({ } } else if (symbol.name && fileResolvedName !== symbol.name) { name = symbol.name; - binding.aliases[name] = symbol.placeholder; + binding.aliases[name] = symbol.placeholder!; } } - names.push(name); + names.push(name!); if (symbol.kind === 'type') { - typeNames.push(name); + typeNames.push(name!); } } // cast type names to names to allow for cleaner API, diff --git a/packages/codegen-core/src/extensions/types.d.ts b/packages/codegen-core/src/extensions.d.ts similarity index 100% rename from packages/codegen-core/src/extensions/types.d.ts rename to packages/codegen-core/src/extensions.d.ts diff --git a/packages/codegen-core/src/files/registry.ts b/packages/codegen-core/src/files/registry.ts index cd89e62dd..e51ce85d3 100644 --- a/packages/codegen-core/src/files/registry.ts +++ b/packages/codegen-core/src/files/registry.ts @@ -100,6 +100,7 @@ export class FileRegistry implements IFileRegistry { ...result, ...file, // clone to avoid mutation id, + localNames: new Set(), resolvedNames: result?.resolvedNames ?? new BiMap(), symbols: result?.symbols ?? { body: [], diff --git a/packages/codegen-core/src/files/types.d.ts b/packages/codegen-core/src/files/types.d.ts index 892fbe2ea..9dc3ab505 100644 --- a/packages/codegen-core/src/files/types.d.ts +++ b/packages/codegen-core/src/files/types.d.ts @@ -52,6 +52,10 @@ export type IFileOut = IFileIn & { * Unique file ID. */ readonly id: number; + /** + * Names declared in local (non‑top‑level) scopes within this file. + */ + readonly localNames: Set; /** * Map holding resolved names for symbols in this file. */ diff --git a/packages/codegen-core/src/index.ts b/packages/codegen-core/src/index.ts index 22d8c0fd8..7fc9b52bc 100644 --- a/packages/codegen-core/src/index.ts +++ b/packages/codegen-core/src/index.ts @@ -4,19 +4,20 @@ export { createBinding, mergeBindings } from './bindings/utils'; export type { IProjectRenderMeta as ProjectRenderMeta, ISymbolMeta as SymbolMeta, -} from './extensions/types'; +} from './extensions'; export type { IFileOut as File, IFileIdentifier as FileIdentifier, IFileIn as FileIn, } from './files/types'; -export type { IOutput as Output } from './output/types'; +export type { IOutput as Output } from './output'; export { Project } from './project/project'; export type { IProject } from './project/types'; export type { IRenderer as Renderer } from './renderer/types'; export { renderIds } from './renderer/utils'; +export { Symbol } from './symbols/symbol'; export type { - ISymbolOut as Symbol, ISymbolIdentifier as SymbolIdentifier, ISymbolIn as SymbolIn, } from './symbols/types'; +export type { ISyntaxNode as SyntaxNode } from './syntax-node'; diff --git a/packages/codegen-core/src/output/types.d.ts b/packages/codegen-core/src/output.d.ts similarity index 100% rename from packages/codegen-core/src/output/types.d.ts rename to packages/codegen-core/src/output.d.ts diff --git a/packages/codegen-core/src/project/project.ts b/packages/codegen-core/src/project/project.ts index c479b5428..91ed73036 100644 --- a/packages/codegen-core/src/project/project.ts +++ b/packages/codegen-core/src/project/project.ts @@ -1,12 +1,12 @@ import path from 'node:path'; -import type { IProjectRenderMeta } from '../extensions/types'; +import type { IProjectRenderMeta } from '../extensions'; import { FileRegistry } from '../files/registry'; import type { IFileOut, IFileSelector } from '../files/types'; -import type { IOutput } from '../output/types'; +import type { IOutput } from '../output'; import type { IRenderer } from '../renderer/types'; import { SymbolRegistry } from '../symbols/registry'; -import type { ISymbolOut } from '../symbols/types'; +import type { Symbol } from '../symbols/symbol'; import type { IProject } from './types'; const externalSourceSymbol = '@'; @@ -133,7 +133,7 @@ export class Project implements IProject { return Array.from(fileIds ?? []).map((fileId) => this.files.get(fileId)!); } - private symbolToFileSelector(symbol: ISymbolOut): IFileSelector { + private symbolToFileSelector(symbol: Symbol): IFileSelector { if (symbol.external) { return [externalSourceSymbol, symbol.external]; } diff --git a/packages/codegen-core/src/project/types.d.ts b/packages/codegen-core/src/project/types.d.ts index 22d2c6ba7..bbb80fa75 100644 --- a/packages/codegen-core/src/project/types.d.ts +++ b/packages/codegen-core/src/project/types.d.ts @@ -1,6 +1,6 @@ -import type { IProjectRenderMeta } from '../extensions/types'; +import type { IProjectRenderMeta } from '../extensions'; import type { IFileOut, IFileRegistry } from '../files/types'; -import type { IOutput } from '../output/types'; +import type { IOutput } from '../output'; import type { IRenderer } from '../renderer/types'; import type { ISymbolRegistry } from '../symbols/types'; diff --git a/packages/codegen-core/src/renderer/types.d.ts b/packages/codegen-core/src/renderer/types.d.ts index 651d28c0c..7b36db787 100644 --- a/packages/codegen-core/src/renderer/types.d.ts +++ b/packages/codegen-core/src/renderer/types.d.ts @@ -1,4 +1,4 @@ -import type { IProjectRenderMeta } from '../extensions/types'; +import type { IProjectRenderMeta } from '../extensions'; import type { IFileOut } from '../files/types'; import type { IProject } from '../project/types'; diff --git a/packages/codegen-core/src/symbols/registry.ts b/packages/codegen-core/src/symbols/registry.ts index 00a6cd0e7..48ac0569b 100644 --- a/packages/codegen-core/src/symbols/registry.ts +++ b/packages/codegen-core/src/symbols/registry.ts @@ -1,11 +1,6 @@ -import type { ISymbolMeta } from '../extensions/types'; -import { wrapId } from '../renderer/utils'; -import type { - ISymbolIdentifier, - ISymbolIn, - ISymbolOut, - ISymbolRegistry, -} from './types'; +import type { ISymbolMeta } from '../extensions'; +import { Symbol } from './symbol'; +import type { ISymbolIdentifier, ISymbolIn, ISymbolRegistry } from './types'; type IndexEntry = [string, unknown]; type IndexKeySpace = ReadonlyArray; @@ -23,9 +18,9 @@ export class SymbolRegistry implements ISymbolRegistry { private registerOrder: Set = new Set(); private stubCache: Map = new Map(); private stubs: Set = new Set(); - private values: Map = new Map(); + private values: Map = new Map(); - get(identifier: ISymbolIdentifier): ISymbolOut | undefined { + get(identifier: ISymbolIdentifier): Symbol | undefined { return typeof identifier === 'number' ? this.values.get(identifier) : this.query(identifier)[0]; @@ -48,7 +43,7 @@ export class SymbolRegistry implements ISymbolRegistry { return symbol ? this.registerOrder.has(symbol.id) : false; } - query(filter: ISymbolMeta): ReadonlyArray { + query(filter: ISymbolMeta): ReadonlyArray { const cacheKey = this.buildCacheKey(filter); const cachedIds = this.queryCache.get(cacheKey); if (cachedIds) { @@ -87,33 +82,28 @@ export class SymbolRegistry implements ISymbolRegistry { return resultIds.map((symbolId) => this.values.get(symbolId)!); } - reference(meta: ISymbolMeta): ISymbolOut { + reference(meta: ISymbolMeta): Symbol { const [registered] = this.query(meta); if (registered) return registered; + const cacheKey = this.buildCacheKey(meta); const cachedId = this.stubCache.get(cacheKey); if (cachedId !== undefined) return this.values.get(cachedId)!; - const id = this.id; - const stub: ISymbolOut = { - id, - meta, - placeholder: wrapId(String(id)), - }; + + const stub = new Symbol({ meta, name: '' }, this.id); + this.values.set(stub.id, stub); this.stubs.add(stub.id); this.stubCache.set(cacheKey, stub.id); return stub; } - register(symbol: ISymbolIn): ISymbolOut { - const id = symbol.id !== undefined ? symbol.id : this.id; - const result: ISymbolOut = { - ...symbol, // clone to avoid mutation - id, - placeholder: symbol.placeholder ?? wrapId(String(id)), - }; + register(symbol: ISymbolIn): Symbol { + const result = new Symbol(symbol, this.id); + this.values.set(result.id, result); this.registerOrder.add(result.id); + if (result.meta) { const indexKeySpace = this.buildIndexKeySpace(result.meta); this.indexSymbol(result.id, indexKeySpace); @@ -123,7 +113,7 @@ export class SymbolRegistry implements ISymbolRegistry { return result; } - *registered(): IterableIterator { + *registered(): IterableIterator { for (const id of this.registerOrder.values()) { yield this.values.get(id)!; } @@ -192,7 +182,7 @@ export class SymbolRegistry implements ISymbolRegistry { return true; } - private replaceStubs(symbol: ISymbolOut, indexKeySpace: IndexKeySpace): void { + private replaceStubs(symbol: Symbol, indexKeySpace: IndexKeySpace): void { for (const stubId of this.stubs.values()) { const stub = this.values.get(stubId); if ( @@ -201,8 +191,8 @@ export class SymbolRegistry implements ISymbolRegistry { ) { const cacheKey = this.buildCacheKey(stub.meta); this.stubCache.delete(cacheKey); - this.values.set(stubId, Object.assign(stub, symbol)); this.stubs.delete(stubId); + stub.setCanonical(symbol); } } } diff --git a/packages/codegen-core/src/symbols/symbol.ts b/packages/codegen-core/src/symbols/symbol.ts new file mode 100644 index 000000000..47d78f495 --- /dev/null +++ b/packages/codegen-core/src/symbols/symbol.ts @@ -0,0 +1,316 @@ +import type { ISymbolMeta } from '../extensions'; +import type { IFileOut } from '../files/types'; +import { wrapId } from '../renderer/utils'; +import type { ISyntaxNode } from '../syntax-node'; +import type { ISymbolIn, SymbolImportKind, SymbolKind } from './types'; + +export class Symbol { + /** + * Canonical symbol this stub resolves to, if any. + * + * Stubs created during DSL construction may later be associated + * with a fully registered symbol. Once set, all property lookups + * should defer to the canonical symbol. + * + * @private + */ + private _canonical?: Symbol; + /** + * Private set of direct symbol dependencies. + * + * @private + */ + private readonly _dependencies = new Set(); + /** + * True if this symbol is exported from its defining file. + * + * @default false + */ + private _exported: boolean; + /** + * Names of files (without extension) from which this symbol is re-exported. + * + * @default [] + */ + private _exportFrom: ReadonlyArray; + /** + * External module name if this symbol is imported from a module not managed + * by the project (e.g. "zod", "lodash"). + * + * @default undefined + */ + private _external?: string; + /** + * The file this symbol is ultimately emitted into. + * + * @private + */ + private _file?: IFileOut; + /** + * The alias-resolved, conflict-free emitted name. + * + * @private + */ + private _finalName?: string; + /** + * Custom strategy to determine file output path. + * + * @returns The file path to output the symbol to, or undefined to fallback to default behavior. + */ + private _getFilePath?: (symbol: Symbol) => string | undefined; + /** + * How this symbol should be imported (namespace/default/named). + * + * @default 'named' + */ + private _importKind: SymbolImportKind; + /** + * Kind of symbol (class, type, alias, etc.). + * + * @default 'var' + */ + private _kind: SymbolKind; + /** + * Arbitrary user metadata. + * + * @default undefined + */ + private _meta?: ISymbolMeta; + /** + * Intended user-facing name before conflict resolution. + * + * @example "UserModel" + */ + private _name: string; + /** + * Root DSL node that defines this symbol. + * + * @private + */ + private _rootNode?: ISyntaxNode; + + /** + * Globally unique, stable symbol ID. + */ + readonly id: number; + /** + * Placeholder name for the symbol to be replaced later with the final value. + * + * @deprecated + * @example "_heyapi_31_" + */ + readonly placeholder: string; + + constructor(input: ISymbolIn, id: number) { + this._exported = input.exported ?? false; + this._exportFrom = input.exportFrom ?? []; + this._external = input.external; + this._getFilePath = input.getFilePath; + this.id = id; + this._importKind = input.importKind ?? 'named'; + this._kind = input.kind ?? 'var'; + this._meta = input.meta; + this._name = input.name; + this.placeholder = input.placeholder || wrapId(String(id)); + } + + /** + * Returns the canonical symbol for this instance. + * + * If this symbol was created as a stub, this getter returns + * the fully registered canonical symbol. Otherwise, it returns + * the symbol itself. + */ + get canonical(): Symbol { + return this._canonical ?? this; + } + + /** + * Read-only access to dependencies. + */ + get dependencies(): ReadonlySet { + return this.canonical._dependencies; + } + + /** + * Indicates whether this symbol is exported from its defining file. + */ + get exported(): boolean { + return this.canonical._exported; + } + + /** + * Names of files (without extension) that re-export this symbol. + */ + get exportFrom(): ReadonlyArray { + return this.canonical._exportFrom; + } + + /** + * External module from which this symbol originates, if any. + */ + get external(): string | undefined { + return this.canonical._external; + } + + /** + * Read‑only accessor for the assigned output file. + */ + get file(): IFileOut | undefined { + return this.canonical._file; + } + + /** + * Read‑only accessor for the resolved final emitted name. + */ + get finalName(): string { + return ( + this.canonical._finalName || + this.canonical.placeholder || + this.canonical.name + ); + } + + get getFilePath(): ((symbol: Symbol) => string | undefined) | undefined { + return this.canonical._getFilePath; + } + + /** + * How this symbol should be imported (named/default/namespace). + */ + get importKind(): SymbolImportKind { + return this.canonical._importKind; + } + + /** + * The symbol's kind (class, type, alias, variable, etc.). + */ + get kind(): SymbolKind { + return this.canonical._kind; + } + + /** + * Arbitrary user‑provided metadata associated with this symbol. + */ + get meta(): ISymbolMeta | undefined { + return this.canonical._meta; + } + + get name(): string { + return this.canonical._name; + } + + /** + * Read‑only accessor for the defining DSL root node. + */ + get rootNode(): ISyntaxNode | undefined { + return this.canonical._rootNode; + } + + /** + * Add a direct dependency on another symbol. + */ + addDependency(symbol: Symbol): void { + if (symbol !== this) this._dependencies.add(symbol); + } + + /** + * Marks this symbol as a stub and assigns its canonical symbol. + * + * After calling this, all semantic queries (name, kind, file, + * meta, etc.) should reflect the canonical symbol's values. + * + * @param symbol — The canonical symbol this stub should resolve to. + */ + setCanonical(symbol: Symbol): void { + this._canonical = symbol; + } + + /** + * Marks the symbol as exported from its file. + * + * @param exported — Whether the symbol is exported. + */ + setExported(exported: boolean): void { + this._exported = exported; + } + + /** + * Records file names that re‑export this symbol. + * + * @param list — Source files re‑exporting this symbol. + */ + setExportFrom(list: ReadonlyArray): void { + this._exportFrom = list; + } + + /** + * Assigns the output file this symbol will be emitted into. + * + * This may only be set once. + */ + setFile(file: IFileOut): void { + if (this._file && this._file !== file) { + throw new Error('Symbol is already assigned to a different file.'); + } + this._file = file; + } + + /** + * Assigns the conflict‑resolved final local name for this symbol. + * + * This may only be set once. + */ + setFinalName(name: string): void { + if (this._finalName && this._finalName !== name) { + throw new Error('Symbol finalName has already been resolved.'); + } + this._finalName = name; + } + + /** + * Sets how this symbol should be imported. + * + * @param kind — The import strategy (named/default/namespace). + */ + setImportKind(kind: SymbolImportKind): void { + this._importKind = kind; + } + + /** + * Sets the symbol's kind (class, type, alias, variable, etc.). + * + * @param kind — The new symbol kind. + */ + setKind(kind: SymbolKind): void { + this._kind = kind; + } + + /** + * Updates the intended user‑facing name for this symbol. + * + * @param name — The new name. + */ + setName(name: string): void { + this._name = name; + } + + /** + * Binds the DSL node that defines this symbol. + * + * This may only be set once. + */ + setRootNode(node: ISyntaxNode): void { + if (this._rootNode && this._rootNode !== node) { + throw new Error('Symbol is already bound to a different root DSL node.'); + } + this._rootNode = node; + } + + /** + * Returns a debug‑friendly string representation identifying the symbol. + */ + toString(): string { + return `[Symbol ${this.name}#${this.id}]`; + } +} diff --git a/packages/codegen-core/src/symbols/types.d.ts b/packages/codegen-core/src/symbols/types.d.ts index 572a6cd6f..1c944d4a2 100644 --- a/packages/codegen-core/src/symbols/types.d.ts +++ b/packages/codegen-core/src/symbols/types.d.ts @@ -1,7 +1,20 @@ -import type { ISymbolMeta } from '../extensions/types'; +import type { ISymbolMeta } from '../extensions'; +import type { Symbol } from './symbol'; export type ISymbolIdentifier = number | ISymbolMeta; +export type SymbolImportKind = 'namespace' | 'default' | 'named'; + +export type SymbolKind = + | 'alias' // export { a as a2 } from 'a'; + | 'class' + | 'enum' + | 'function' + | 'interface' + | 'namespace' + | 'type' + | 'var'; + export type ISymbolIn = { /** * Array of file names (without extensions) from which this symbol is re-exported. @@ -27,19 +40,15 @@ export type ISymbolIn = { * * @returns The file path to output the symbol to, or undefined to fallback to default behavior. */ - getFilePath?: (symbol: ISymbolOut) => string | undefined; - /** - * Unique symbol ID. If one is not provided, it will be auto-generated. - */ - readonly id?: number; + getFilePath?: Symbol['getFilePath']; /** * Kind of import if this symbol represents an import. */ - importKind?: 'namespace' | 'default' | 'named'; + importKind?: SymbolImportKind; /** * Kind of symbol. */ - kind?: 'class' | 'function' | 'type'; + kind?: SymbolKind; /** * Arbitrary metadata about the symbol. * @@ -47,23 +56,22 @@ export type ISymbolIn = { */ meta?: ISymbolMeta; /** - * The desired name for the symbol within its file. If there are multiple symbols - * with the same desired name, this might not end up being the actual name. + * The intended, user-facing name of the symbol before any conflict resolution. + * It is **not** guaranteed to be the final emitted name — aliasing may occur if the + * file contains conflicting local identifiers or other symbols with the same intended name. * * @example "UserModel" */ - name?: string; + name: string; /** * Placeholder name for the symbol to be replaced later with the final value. * + * @deprecated * @example "_heyapi_31_" */ readonly placeholder?: string; }; -export type ISymbolOut = Omit & - Pick, 'id' | 'placeholder'>; - export interface ISymbolRegistry { /** * Get a symbol. @@ -71,7 +79,7 @@ export interface ISymbolRegistry { * @param identifier Symbol identifier to reference. * @returns The symbol, or undefined if not found. */ - get(identifier: ISymbolIdentifier): ISymbolOut | undefined; + get(identifier: ISymbolIdentifier): Symbol | undefined; /** * Returns the value associated with a symbol ID. * @@ -105,14 +113,14 @@ export interface ISymbolRegistry { * @param filter Metadata filter to query symbols by. * @returns Array of symbols matching the filter. */ - query(filter: ISymbolMeta): ReadonlyArray; + query(filter: ISymbolMeta): ReadonlyArray; /** * References a symbol. * * @param meta Metadata filter to reference symbol by. * @returns The referenced symbol. */ - reference(meta: ISymbolMeta): ISymbolOut; + reference(meta: ISymbolMeta): Symbol; /** * Register a symbol globally. * @@ -121,13 +129,13 @@ export interface ISymbolRegistry { * @param symbol Symbol to register. * @returns The registered symbol. */ - register(symbol: ISymbolIn): ISymbolOut; + register(symbol: ISymbolIn): Symbol; /** * Get all symbols in the order they were registered. * * @returns Array of all registered symbols, in insert order. */ - registered(): IterableIterator; + registered(): IterableIterator; /** * Sets a value for a symbol by its ID. * diff --git a/packages/codegen-core/src/syntax-node.d.ts b/packages/codegen-core/src/syntax-node.d.ts new file mode 100644 index 000000000..ca04a1bee --- /dev/null +++ b/packages/codegen-core/src/syntax-node.d.ts @@ -0,0 +1,20 @@ +import type { Symbol } from './symbols/symbol'; + +export interface ISyntaxNode { + /** + * Return local names introduced by this node. + */ + getLocalNames(): Iterable; + /** + * Return symbols referenced directly by this node. + */ + getSymbols(): Iterable; + /** + * Rewrite local identifiers based on a rename map. + */ + rewriteIdentifiers(map: Map): void; + /** + * Walk this node and its children with a visitor. + */ + traverse(visitor: (node: ISyntaxNode) => void): void; +} diff --git a/packages/codegen-core/tsconfig.base.json b/packages/codegen-core/tsconfig.base.json index 5afc381fb..23fc13547 100644 --- a/packages/codegen-core/tsconfig.base.json +++ b/packages/codegen-core/tsconfig.base.json @@ -1,6 +1,8 @@ { "compilerOptions": { + "composite": true, "declaration": true, + "declarationMap": true, "esModuleInterop": true, "module": "ESNext", "moduleResolution": "Bundler", diff --git a/packages/codegen-core/tsconfig.json b/packages/codegen-core/tsconfig.json index 89ceb3bfa..2f0d0f571 100644 --- a/packages/codegen-core/tsconfig.json +++ b/packages/codegen-core/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "./tsconfig.base.json", "compilerOptions": { - "declaration": false, "esModuleInterop": true, "resolveJsonModule": true, "skipLibCheck": true diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts index 49b25b351..f1d1a20c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts @@ -267,7 +267,7 @@ export const vModelWithDictionary = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference)) + prop: v.optional(v.lazy(() => vModelWithCircularReference2)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts index 7d0f29978..300b40b87 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts @@ -343,7 +343,7 @@ export const vDeprecatedModel = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference)) + prop: v.optional(v.lazy(() => vModelWithCircularReference2)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts index 8a3624bb4..2a9de6da4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts @@ -6,8 +6,8 @@ export const vBaz = v.optional(v.pipe(v.pipe(v.string(), v.regex(/foo\nbar/)), v export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar)), - baz: v.optional(v.array(v.lazy(() => vFoo))), + bar: v.optional(v.lazy(() => vBar2)), + baz: v.optional(v.array(v.lazy(() => vFoo2))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts index f2c944329..b6a706cae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts @@ -343,7 +343,7 @@ export const vDeprecatedModel = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference)) + prop: v.optional(v.lazy(() => vModelWithCircularReference2)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts index 1dc875c6b..e687e2f6b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts @@ -3,7 +3,7 @@ import * as v from 'valibot'; export const vBar: v.GenericSchema = v.strictObject({ - bar: v.union([v.array(v.lazy(() => vBar)), v.null()]) + bar: v.union([v.array(v.lazy(() => vBar2)), v.null()]) }); export const vFoo = v.strictObject({ diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts index 090aa6a3a..6ce5d2980 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts @@ -3,14 +3,14 @@ import * as v from 'valibot'; export const vBar: v.GenericSchema = v.object({ - bar: v.optional(v.array(v.lazy(() => vBar))) + bar: v.optional(v.array(v.lazy(() => vBar2))) }); export const vFoo = v.object({ foo: v.optional(vBar) }); -export const vBaz: v.GenericSchema = v.lazy(() => vQux); +export const vBaz: v.GenericSchema = v.lazy(() => vQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts index 149a0044b..c238f261c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/)), v.metadata({ description: 'This is foo property.' }))), - bar: v.optional(v.lazy(() => vBar)), - baz: v.optional(v.pipe(v.array(v.lazy(() => vFoo)), v.metadata({ description: 'This is baz property.' }))), + bar: v.optional(v.lazy(() => vBar2)), + baz: v.optional(v.pipe(v.array(v.lazy(() => vFoo4)), v.metadata({ description: 'This is baz property.' }))), qux: v.optional(v.pipe(v.pipe(v.number(), v.integer(), v.gtValue(0)), v.metadata({ description: 'This is qux property.' })), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts index b5a5dfce3..64eb904ba 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar)), - baz: v.optional(v.array(v.lazy(() => vFoo))), + bar: v.optional(v.lazy(() => vBar2)), + baz: v.optional(v.array(v.lazy(() => vFoo4))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts index b5a5dfce3..64eb904ba 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar)), - baz: v.optional(v.array(v.lazy(() => vFoo))), + bar: v.optional(v.lazy(() => vBar2)), + baz: v.optional(v.array(v.lazy(() => vFoo4))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts index 18c322e48..2f1bff95d 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts @@ -39,7 +39,7 @@ export class AccountingCompanyMemberships { } public static get api() { - return Api; + return Api2; } } @@ -64,7 +64,7 @@ export class BankAccounts { } public static get api() { - return Api; + return Api2; } } @@ -89,7 +89,7 @@ export class BusinessAccountantAssignments { } public static get api() { - return Api; + return Api2; } } @@ -159,7 +159,7 @@ export class BusinessDocuments { } public static get api() { - return Api; + return Api2; } } @@ -172,7 +172,7 @@ export class BusinessDocumentsSummaries { } public static get api() { - return Api; + return Api2; } } @@ -231,7 +231,7 @@ export class Businesses { } public static get api() { - return Api; + return Api2; } } @@ -241,7 +241,7 @@ export class BusinessSummaries { } public static get api() { - return Api; + return Api2; } } @@ -277,7 +277,7 @@ export class Counterparties { } public static get api() { - return Api; + return Api2; } } @@ -302,7 +302,7 @@ export class DataBoxCredentials { } public static get api() { - return Api; + return Api2; } } @@ -312,7 +312,7 @@ export class DocumentTypes { } public static get api() { - return Api; + return Api2; } } @@ -363,7 +363,7 @@ export class Invitations { } public static get api() { - return Api; + return Api2; } } @@ -418,7 +418,7 @@ export class Invoices { } public static get api() { - return Api; + return Api2; } } @@ -439,7 +439,7 @@ export class InvoiceSettings { } public static get api() { - return Api; + return Api2; } } @@ -449,7 +449,7 @@ export class Licenses { } public static get api() { - return Api; + return Api2; } } @@ -494,7 +494,7 @@ export class PersonalDocuments { } public static get api() { - return Api; + return Api2; } } @@ -530,7 +530,7 @@ export class RecurringTasks { } public static get api() { - return Api; + return Api2; } } @@ -600,7 +600,7 @@ export class Tasks { } public static get api() { - return Api; + return Api2; } } @@ -693,7 +693,7 @@ export class Odata { } public static get accountingCompanies2() { - return AccountingCompanies; + return AccountingCompanies2; } static accountingCompanyMemberships2 = AccountingCompanyMemberships; @@ -735,7 +735,7 @@ export class Odata { export class MapIdentityApi { public static get api() { - return Api; + return Api2; } } diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts index e44daf15b..460a92e52 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -294,7 +294,7 @@ export const zModelWithDictionary = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts index 99cb26f2e..0105d59cd 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts @@ -293,7 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts index bc91971e3..c108394b3 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -294,7 +294,7 @@ export const zModelWithDictionary = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts index 1563aa737..cdd79ae78 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -4,29 +4,29 @@ import * as z from 'zod/v4-mini'; export const zFoo = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zBar = z.object({ get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.lazy((): any => zBaz)); + return z.optional(z.lazy((): any => zBaz2)); } }); export const zBaz = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zQux = z.union([ z.intersection(z.object({ type: z.literal('struct') - }), z.lazy(() => z.lazy((): any => zCorge))), + }), z.lazy(() => z.lazy((): any => zCorge2))), z.intersection(z.object({ type: z.literal('array') }), zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts index b6370f67c..192ec3f4f 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -392,7 +392,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts index cfa348c12..312cc05d2 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -8,10 +8,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo2))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts index 4caa3fbd4..8a00210b0 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts @@ -3,22 +3,22 @@ import { z } from 'zod'; export const zFoo: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux).optional() + quux: z.lazy(() => zQuux2).optional() }); export const zBar: z.AnyZodObject = z.object({ - bar: z.lazy(() => zBar).optional(), - baz: z.lazy(() => zBaz).optional() + bar: z.lazy(() => zBar2).optional(), + baz: z.lazy(() => zBaz2).optional() }); export const zBaz: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux).optional() + quux: z.lazy(() => zQuux2).optional() }); export const zQux: z.ZodTypeAny = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => zCorge)), + }).and(z.lazy(() => zCorge2)), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts index e7fb6be96..c4839a4e1 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts @@ -391,7 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts index 9d727f32d..fb3dee2e9 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts @@ -7,8 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo2)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts index 3b9c62d9d..fc6459c19 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -4,29 +4,29 @@ import { z } from 'zod/v4'; export const zFoo = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zBar = z.object({ get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.lazy((): any => zBaz)); + return z.optional(z.lazy((): any => zBaz2)); } }); export const zBaz = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zQux = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => z.lazy((): any => zCorge))), + }).and(z.lazy(() => z.lazy((): any => zCorge2))), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts index 3f328c90d..5c2b4db65 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -392,7 +392,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts index 0daf7a0a6..c68523155 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -8,10 +8,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo2))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts index 7ca3c6f97..c9bcbd41e 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -395,7 +395,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts index 3a8f1806c..d1f109637 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/v4-mini'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar)), + z.array(z.lazy((): any => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index dda5d4694..1a31df18a 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/v4-mini'; export const zBar = z.object({ get bar() { - return z.optional(z.array(z.lazy((): any => zBar))); + return z.optional(z.array(z.lazy((): any => zBar2))); } }); @@ -12,7 +12,7 @@ export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux); +export const zBaz = z.lazy((): any => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index 8ecedac9a..111c93c54 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index 789eb6d8a..b81bbff61 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -17,10 +17,10 @@ export const zFoo = z._default(z.union([ description: 'This is foo property.' })), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { description: 'This is baz property.' })); }, diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index a8353e832..477ec22ef 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -19,10 +19,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts index 304d89bb5..6573ca690 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts index 75782a6a3..811635f69 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts @@ -394,7 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts index f2c188be3..17d8767ab 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; export const zBar: z.AnyZodObject = z.object({ bar: z.union([ - z.array(z.lazy(() => zBar)), + z.array(z.lazy(() => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts index d1f4aaa4b..b345598be 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts @@ -3,14 +3,14 @@ import { z } from 'zod'; export const zBar: z.AnyZodObject = z.object({ - bar: z.array(z.lazy(() => zBar)).optional() + bar: z.array(z.lazy(() => zBar2)).optional() }); export const zFoo = z.object({ foo: zBar.optional() }); -export const zBaz: z.ZodTypeAny = z.lazy(() => zQux); +export const zBaz: z.ZodTypeAny = z.lazy(() => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts index c9317d591..c95401299 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts index 58ea4d7b8..b6145c9a6 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).describe('This is foo property.').optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).describe('This is baz property.').optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).describe('This is baz property.').optional(), qux: z.number().int().gt(0).describe('This is qux property.').optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts index c26d40cf3..a212842ca 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts @@ -18,8 +18,8 @@ export type QuxZodType = z.infer; export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts index 8e5318a8c..b1c07a86e 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts index 445c9f103..ad62250b4 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -395,7 +395,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts index 0560094fd..ee8197c49 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v4'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar)), + z.array(z.lazy((): any => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index 7bd218fcb..f79413d94 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v4'; export const zBar = z.object({ get bar() { - return z.optional(z.array(z.lazy((): any => zBar))); + return z.optional(z.array(z.lazy((): any => zBar2))); } }); @@ -12,7 +12,7 @@ export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux); +export const zBaz = z.lazy((): any => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index 5781d917f..112a30355 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index c3c88f810..2e20f5b8e 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -17,10 +17,10 @@ export const zFoo = z.union([ description: 'This is foo property.' })), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { description: 'This is baz property.' })); }, diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index b2d4ca717..8813506b6 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -19,10 +19,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts index 15238b2a7..6601c24f4 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts index e00616a4b..2620039bd 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -294,7 +294,7 @@ export const zModelWithDictionary = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts index 93c84d92c..5f6638135 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts @@ -293,7 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts index f2848ba82..6f19e6c24 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -294,7 +294,7 @@ export const zModelWithDictionary = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts index 7cced9697..d96af8123 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -4,29 +4,29 @@ import * as z from 'zod/mini'; export const zFoo = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zBar = z.object({ get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.lazy((): any => zBaz)); + return z.optional(z.lazy((): any => zBaz2)); } }); export const zBaz = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zQux = z.union([ z.intersection(z.object({ type: z.literal('struct') - }), z.lazy(() => z.lazy((): any => zCorge))), + }), z.lazy(() => z.lazy((): any => zCorge2))), z.intersection(z.object({ type: z.literal('array') }), zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts index 9734ab8f1..9506b878d 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -392,7 +392,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts index 7a5c78486..a41e99873 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -8,10 +8,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo2))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts index 89c43bbd9..75646c4eb 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts @@ -3,22 +3,22 @@ import { z } from 'zod/v3'; export const zFoo: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux).optional() + quux: z.lazy(() => zQuux2).optional() }); export const zBar: z.AnyZodObject = z.object({ - bar: z.lazy(() => zBar).optional(), - baz: z.lazy(() => zBaz).optional() + bar: z.lazy(() => zBar2).optional(), + baz: z.lazy(() => zBaz2).optional() }); export const zBaz: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux).optional() + quux: z.lazy(() => zQuux2).optional() }); export const zQux: z.ZodTypeAny = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => zCorge)), + }).and(z.lazy(() => zCorge2)), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts index dc5b79a54..3fbd59e4e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts @@ -391,7 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts index bdddc5775..ebbe71b83 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts @@ -7,8 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo2)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts index 8da477654..00911017c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -4,29 +4,29 @@ import { z } from 'zod'; export const zFoo = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zBar = z.object({ get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.lazy((): any => zBaz)); + return z.optional(z.lazy((): any => zBaz2)); } }); export const zBaz = z.object({ get quux() { - return z.optional(z.lazy((): any => zQuux)); + return z.optional(z.lazy((): any => zQuux2)); } }); export const zQux = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => z.lazy((): any => zCorge))), + }).and(z.lazy(() => z.lazy((): any => zCorge2))), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts index 925cc7bf2..9d4c97f48 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -392,7 +392,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts index 944f96e47..adde4f7f0 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -8,10 +8,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo2))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts index 45ebeaf53..84828113f 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -395,7 +395,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts index 6014595af..4ed3f70ef 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/mini'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar)), + z.array(z.lazy((): any => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index ee8b0c76e..39b46eb56 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/mini'; export const zBar = z.object({ get bar() { - return z.optional(z.array(z.lazy((): any => zBar))); + return z.optional(z.array(z.lazy((): any => zBar2))); } }); @@ -12,7 +12,7 @@ export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux); +export const zBaz = z.lazy((): any => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index 9ac32990c..ceb1549b4 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index e263d218e..fb296fd0d 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -17,10 +17,10 @@ export const zFoo = z._default(z.union([ description: 'This is foo property.' })), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { description: 'This is baz property.' })); }, diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index 669174c0a..65fbcd47c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -19,10 +19,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts index b786abd75..62cbdbe1b 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts index 6d118b7c7..3fe7311bf 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts @@ -394,7 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference).optional() + prop: z.lazy(() => zModelWithCircularReference2).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts index 4d47e4d61..fa92f18d5 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v3'; export const zBar: z.AnyZodObject = z.object({ bar: z.union([ - z.array(z.lazy(() => zBar)), + z.array(z.lazy(() => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts index 02708822c..402e1414b 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts @@ -3,14 +3,14 @@ import { z } from 'zod/v3'; export const zBar: z.AnyZodObject = z.object({ - bar: z.array(z.lazy(() => zBar)).optional() + bar: z.array(z.lazy(() => zBar2)).optional() }); export const zFoo = z.object({ foo: zBar.optional() }); -export const zBaz: z.ZodTypeAny = z.lazy(() => zQux); +export const zBaz: z.ZodTypeAny = z.lazy(() => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts index 68a0a720f..bee23c297 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts index 10af4babe..e2ef988c4 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).describe('This is foo property.').optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).describe('This is baz property.').optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).describe('This is baz property.').optional(), qux: z.number().int().gt(0).describe('This is qux property.').optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts index 2b0fa9eed..f837d12dd 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts @@ -18,8 +18,8 @@ export type QuxZodType = z.infer; export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts index 15850f6a2..9ebcd26ae 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar).optional(), - baz: z.array(z.lazy(() => zFoo)).optional(), + bar: z.lazy(() => zBar2).optional(), + baz: z.array(z.lazy(() => zFoo4)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts index d490dd142..088a5b89e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -395,7 +395,7 @@ export const zDeprecatedModel = z.object({ */ export const zModelWithCircularReference = z.object({ get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference)); + return z.optional(z.lazy((): any => zModelWithCircularReference2)); } }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts index 696338aab..26841bbb9 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar)), + z.array(z.lazy((): any => zBar2)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index b62812954..9c5d6dae6 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; export const zBar = z.object({ get bar() { - return z.optional(z.array(z.lazy((): any => zBar))); + return z.optional(z.array(z.lazy((): any => zBar2))); } }); @@ -12,7 +12,7 @@ export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux); +export const zBaz = z.lazy((): any => zQux2); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index 515d9ad8b..3ce85de8f 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index 995ccdb8a..35bbb17e8 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -17,10 +17,10 @@ export const zFoo = z.union([ description: 'This is foo property.' })), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { description: 'This is baz property.' })); }, diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index 033e85ced..c7065d54c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -19,10 +19,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts index f73a35bac..e5188fb7f 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -15,10 +15,10 @@ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), get bar() { - return z.optional(z.lazy((): any => zBar)); + return z.optional(z.lazy((): any => zBar2)); }, get baz() { - return z.optional(z.array(z.lazy((): any => zFoo))); + return z.optional(z.array(z.lazy((): any => zFoo4))); }, qux: z.optional(z.int().gt(0)).default(0) }), diff --git a/packages/openapi-ts/src/generate/__tests__/renderer.test.ts b/packages/openapi-ts/src/generate/__tests__/renderer.test.ts index f9bf7bc89..a6a1b1081 100644 --- a/packages/openapi-ts/src/generate/__tests__/renderer.test.ts +++ b/packages/openapi-ts/src/generate/__tests__/renderer.test.ts @@ -5,16 +5,16 @@ import { TypeScriptRenderer } from '../renderer'; // Minimal local BiMap for tests to avoid importing runtime-only class class LocalBiMap { private map = new Map(); - private reverse = new Map(); + private reverse = new Map>(); get(key: Key) { return this.map.get(key); } - getKey(value: Value) { + getKeys(value: Value) { return this.reverse.get(value); } set(key: Key, value: Value) { this.map.set(key, value); - this.reverse.set(value, key); + this.reverse.set(value, new Set([key])); return this; } hasValue(value: Value) { diff --git a/packages/openapi-ts/src/generate/renderer.ts b/packages/openapi-ts/src/generate/renderer.ts index 26c802a48..b163bbb48 100644 --- a/packages/openapi-ts/src/generate/renderer.ts +++ b/packages/openapi-ts/src/generate/renderer.ts @@ -1,7 +1,6 @@ import path from 'node:path'; import type { - BiMap, Binding, File, IProject, @@ -491,12 +490,46 @@ export class TypeScriptRenderer implements Renderer { return lines; } - private getUniqueName(base: string, names: BiMap): string { - let index = 2; - let name = base; - while (names.hasValue(name)) { - name = `${base}${index}`; - index += 1; + private getUniqueName({ + base, + file, + index, + project, + symbol, + }: { + base: string; + file: File; + index: number; + project: IProject; + symbol: Symbol; + }): string { + let name = index > 1 ? `${base}${index}` : base; + if (!file.resolvedNames.hasValue(name)) { + return name; + } + const conflictIds = file.resolvedNames.getKeys(name) ?? new Set(); + const conflictSymbols = [...conflictIds] + .map((id) => project.symbols.get(id)) + .filter((s): s is NonNullable => s !== undefined); + if (conflictSymbols.length > 0) { + const conflictKinds = conflictSymbols.map((s) => s.kind); + // avoid conflicts between class and type of the same name + if ( + (symbol.kind === 'type' && + (conflictKinds.includes('type') || + conflictKinds.includes('class'))) || + (symbol.kind !== 'type' && + conflictKinds.some((kind) => kind !== 'type')) || + (symbol.kind === 'class' && conflictKinds.includes('type')) + ) { + name = this.getUniqueName({ + base, + file, + index: index + 1, + project, + symbol, + }); + } } return name; } @@ -516,22 +549,13 @@ export class TypeScriptRenderer implements Renderer { if (!symbol.name) return; const [symbolFile] = project.symbolIdToFiles(symbol.id); const symbolFileResolvedName = symbolFile?.resolvedNames.get(symbol.id); - let name = ensureValidIdentifier(symbolFileResolvedName ?? symbol.name); - const conflictId = file.resolvedNames.getKey(name); - if (conflictId !== undefined) { - const conflictSymbol = project.symbols.get(conflictId); - if (conflictSymbol) { - const kinds = [conflictSymbol.kind, symbol.kind]; - if ( - kinds.every((kind) => kind === 'type') || - kinds.every((kind) => kind !== 'type') || - // avoid conflicts between class and type of the same name - (kinds.includes('class') && kinds.includes('type')) - ) { - name = this.getUniqueName(name, file.resolvedNames); - } - } - } + const name = this.getUniqueName({ + base: ensureValidIdentifier(symbolFileResolvedName ?? symbol.name), + file, + index: 1, + project, + symbol, + }); file.resolvedNames.set(symbol.id, name); return name; } diff --git a/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts b/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts index 1da2efb65..c1d9b5dec 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts @@ -133,7 +133,6 @@ const generateAngularClassRequests = ({ resource: '@angular/core.Injectable', }); const symbolClass = plugin.registerSymbol({ - exported: true, meta: { category: 'utility', resource: 'class', @@ -148,11 +147,11 @@ const generateAngularClassRequests = ({ name: currentClass.className, }), }); - const node = $.class(symbolClass.placeholder) - .export(symbolClass.exported) + const node = $.class(symbolClass) + .export() .$if(currentClass.root, (c) => c.decorator( - symbolInjectable.placeholder, + symbolInjectable, $.object().prop('providedIn', $.literal('root')), ), ) @@ -181,7 +180,6 @@ const generateAngularFunctionRequests = ({ }); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'utility', resource: 'operation', @@ -269,10 +267,10 @@ const generateAngularRequestMethod = ({ .param('options', (p) => p .required(isRequiredOptions) - .type(`${symbolOptions.placeholder}<${dataType}, ThrowOnError>`), + .type($.type(symbolOptions).generic(dataType).generic('ThrowOnError')), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) - .returns(`${symbolHttpRequest.placeholder}`) + .returns($.type(symbolHttpRequest).generic('unknown')) .do( $.return( generateRequestCallExpression({ @@ -314,18 +312,20 @@ const generateAngularRequestFunction = ({ }); const dataType = symbolDataType?.placeholder || 'unknown'; - return $.const(symbol.placeholder) - .export(symbol.exported) + return $.const(symbol) + .export() .$if(createOperationComment(operation), (c, v) => c.doc(v)) .assign( $.func() .param('options', (p) => p .required(isRequiredOptions) - .type(`${symbolOptions.placeholder}<${dataType}, ThrowOnError>`), + .type( + $.type(symbolOptions).generic(dataType).generic('ThrowOnError'), + ), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) - .returns(`${symbolHttpRequest.placeholder}`) + .returns($.type(symbolHttpRequest).generic('unknown')) .do( $.return( generateRequestCallExpression({ diff --git a/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts b/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts index be5ecd8ec..92960cf27 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts @@ -136,7 +136,6 @@ const generateAngularClassServices = ({ resource: '@angular/core.Injectable', }); const symbolClass = plugin.registerSymbol({ - exported: true, name: buildName({ config: { case: 'preserve', @@ -145,11 +144,11 @@ const generateAngularClassServices = ({ name: currentClass.className, }), }); - const node = $.class(symbolClass.placeholder) - .export(symbolClass.exported) + const node = $.class(symbolClass) + .export() .$if(currentClass.root, (c) => c.decorator( - symbolInjectable.placeholder, + symbolInjectable, $.object().prop('providedIn', $.literal('root')), ), ) @@ -178,7 +177,6 @@ const generateAngularFunctionServices = ({ }); const symbol = plugin.registerSymbol({ - exported: true, name: plugin.config.httpResources.methodNameBuilder(operation), }); const node = generateAngularResourceFunction({ @@ -387,8 +385,8 @@ const generateAngularResourceFunction = ({ }); const dataType = symbolDataType?.placeholder || 'unknown'; - return $.const(symbol.placeholder) - .export(symbol.exported) + return $.const(symbol) + .export() .$if(createOperationComment(operation), (c, v) => c.doc(v)) .assign( $.func() diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts index 70a5710a9..398ab7b44 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts @@ -85,14 +85,13 @@ export const createClient: PluginHandler = ({ plugin }) => { ]; const symbolClient = plugin.registerSymbol({ - exported: true, meta: { category: 'client', }, name: 'client', }); - const statement = $.const(symbolClient.placeholder) - .export(symbolClient.exported) + const statement = $.const(symbolClient) + .export() .assign( $(symbolCreateClient.placeholder).$if( symbolCreateClientConfig, diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts index 6e7529554..fa5447282 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts @@ -23,14 +23,12 @@ export const createClientConfigType = ({ name: 'ClientOptions', }); const symbolCreateClientConfig = plugin.registerSymbol({ - exported: true, - kind: 'type', name: 'CreateClientConfig', }); const typeCreateClientConfig = $.type - .alias(symbolCreateClientConfig.placeholder) - .export(symbolCreateClientConfig.exported) + .alias(symbolCreateClientConfig) + .export() .doc([ 'The `createClientConfig()` function will be called on client initialization', "and the returned object will become the client's initial configuration.", diff --git a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts index 349c4c69c..d62d62780 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts @@ -369,7 +369,6 @@ const schemasV2_0_X = ({ for (const name in context.spec.definitions) { const schema = context.spec.definitions[name]!; const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', resource: 'definition', @@ -383,8 +382,8 @@ const schemasV2_0_X = ({ plugin, schema, }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .assign( $( $.fromValue(obj, { @@ -410,7 +409,6 @@ const schemasV3_0_X = ({ for (const name in context.spec.components.schemas) { const schema = context.spec.components.schemas[name]!; const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', resource: 'definition', @@ -424,8 +422,8 @@ const schemasV3_0_X = ({ plugin, schema, }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .assign( $( $.fromValue(obj, { @@ -451,7 +449,6 @@ const schemasV3_1_X = ({ for (const name in context.spec.components.schemas) { const schema = context.spec.components.schemas[name]!; const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', resource: 'definition', @@ -465,8 +462,8 @@ const schemasV3_1_X = ({ plugin, schema, }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .assign( $( $.fromValue(obj, { diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts index 6e607ad8f..dbb572377 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts @@ -56,8 +56,7 @@ const createRegistryClass = ({ }): TsDsl => { const defaultKey = 'defaultKey'; const instances = 'instances'; - return $.class(symbol.placeholder) - .export(symbol.exported) + return $.class(symbol) .generic('T') .field(defaultKey, (f) => f.private().readonly().assign($.literal('default')), @@ -122,8 +121,7 @@ const createClientClass = ({ category: 'external', resource: 'client.Client', }); - return $.class(symbol.placeholder) - .export(symbol.exported) + return $.class(symbol) .field('client', (f) => f.protected().type(symbolClient.placeholder)) .newline() .init((i) => @@ -311,8 +309,6 @@ export const generateClassSdk = ({ const symbolHeyApiClient = plugin.config.instance ? plugin.registerSymbol({ - exported: false, - kind: 'class', meta: { category: 'utility', resource: 'class', @@ -324,8 +320,6 @@ export const generateClassSdk = ({ : undefined; const symbolHeyApiRegistry = plugin.config.instance ? plugin.registerSymbol({ - exported: false, - kind: 'class', meta: { category: 'utility', resource: 'class', @@ -420,8 +414,6 @@ export const generateClassSdk = ({ } const symbol = plugin.registerSymbol({ - exported: true, - kind: 'class', meta: { category: 'utility', resource: 'class', @@ -485,15 +477,15 @@ export const generateClassSdk = ({ currentClass.nodes.unshift(registryNode, $.newline()); } - const node = $.class(symbol.placeholder) - .export(symbol.exported) - .extends(symbolHeyApiClient?.placeholder) + const node = $.class(symbol) + .export() + .extends(symbolHeyApiClient) .$if(currentClass.root && isAngularClient, (c) => c.decorator( plugin.referenceSymbol({ category: 'external', resource: '@angular/core.Injectable', - }).placeholder, + }), $.object().prop('providedIn', $.literal('root')), ), ) diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts index eefe826ad..51f662890 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts @@ -67,7 +67,6 @@ export const generateFlatSdk = ({ plugin, }); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'sdk', path: event._path, @@ -82,8 +81,8 @@ export const generateFlatSdk = ({ plugin, }), }); - const node = $.const(symbol.placeholder) - .export(symbol.exported) + const node = $.const(symbol) + .export() .$if(createOperationComment(operation), (c, v) => c.doc(v)) .assign( $.func() diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts index af87dda6f..ed1e67dba 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts @@ -35,8 +35,6 @@ export const createTypeOptions = ({ name: 'Options', }); const symbolOptions = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', resource: 'client-options', @@ -46,8 +44,8 @@ export const createTypeOptions = ({ }); const typeOptions = $.type - .alias(symbolOptions.placeholder) - .export(symbolOptions.exported) + .alias(symbolOptions) + .export() .$if( isNuxtClient, (t) => diff --git a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts index 63563223c..c4c529ca8 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts @@ -337,7 +337,6 @@ export const handler: HeyApiTransformersPlugin['Handler'] = ({ plugin }) => { }); if (!nodes.length) return; const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'transform', resource: 'operation', @@ -352,8 +351,8 @@ export const handler: HeyApiTransformersPlugin['Handler'] = ({ plugin }) => { name: operation.id, }), }); - const value = $.const(symbol.placeholder) - .export(symbol.exported) + const value = $.const(symbol) + .export() .assign( // TODO: parser - add types, generate types without transforms $.func() diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts index 8c135d309..41d48dbae 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts @@ -51,8 +51,8 @@ export const createClientOptions = ({ } const node = $.type - .alias(symbolClientOptions.placeholder) - .export(symbolClientOptions.exported) + .alias(symbolClientOptions) + .export() .type( $.type .object() diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts index 21cf65a2f..10c325d4e 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts @@ -1,13 +1,14 @@ -import type { Symbol } from '@hey-api/codegen-core'; - import type { IR } from '~/ir/types'; +import { buildName } from '~/openApi/shared/utils/name'; import { createSchemaComment } from '~/plugins/shared/utils/schema'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; +import { pathToJsonPointer, refToName } from '~/utils/ref'; import { numberRegExp } from '~/utils/regexp'; import { stringCase } from '~/utils/stringCase'; import type { HeyApiTypeScriptPlugin } from '../types'; +import type { IrSchemaToAstOptions } from './types'; const schemaToEnumObject = ({ plugin, @@ -83,14 +84,14 @@ const schemaToEnumObject = ({ export const exportType = ({ plugin, schema, - symbol, + state, type, -}: { - plugin: HeyApiTypeScriptPlugin['Instance']; +}: IrSchemaToAstOptions & { schema: IR.SchemaObject; - symbol: Symbol; type: MaybeTsDsl; }) => { + const $ref = pathToJsonPointer(state.path.value); + // root enums have an additional export if (schema.type === 'enum' && plugin.config.enums.enabled) { const enumObject = schemaToEnumObject({ plugin, schema }); @@ -106,7 +107,21 @@ export const exportType = ({ ); } - const objectNode = $.const(symbol.placeholder) + const symbolObject = plugin.registerSymbol({ + meta: { + category: 'utility', + path: state.path.value, + resource: 'definition', + resourceId: $ref, + tags: state.tags?.value, + tool: 'typescript', + }, + name: buildName({ + config: plugin.config.definitions, + name: refToName($ref), + }), + }); + const objectNode = $.const(symbolObject) .export() .$if(createSchemaComment(schema), (c, v) => c.doc(v)) .assign( @@ -118,17 +133,28 @@ export const exportType = ({ ), ).as('const'), ); + plugin.setSymbolValue(symbolObject, objectNode); + const symbol = plugin.registerSymbol({ + meta: { + category: 'type', + path: state.path.value, + resource: 'definition', + resourceId: $ref, + tags: state.tags?.value, + tool: 'typescript', + }, + name: buildName({ + config: plugin.config.definitions, + name: refToName($ref), + }), + }); const node = $.type - .alias(symbol.placeholder) + .alias(symbol) .export() .$if(createSchemaComment(schema), (t, v) => t.doc(v)) - .type( - $.type(symbol.placeholder) - .idx($.type(symbol.placeholder).typeof().keyof()) - .typeof(), - ); - plugin.setSymbolValue(symbol, [objectNode, node]); + .type($.type(symbol).idx($.type(symbol).typeof().keyof()).typeof()); + plugin.setSymbolValue(symbol, node); return; } else if ( plugin.config.enums.mode === 'typescript' || @@ -139,7 +165,21 @@ export const exportType = ({ (type) => type !== 'number' && type !== 'string', ); if (shouldCreateTypeScriptEnum) { - const enumNode = $.enum(symbol.placeholder) + const symbol = plugin.registerSymbol({ + meta: { + category: 'type', + path: state.path.value, + resource: 'definition', + resourceId: $ref, + tags: state.tags?.value, + tool: 'typescript', + }, + name: buildName({ + config: plugin.config.definitions, + name: refToName($ref), + }), + }); + const enumNode = $.enum(symbol) .export() .$if(createSchemaComment(schema), (e, v) => e.doc(v)) .const(plugin.config.enums.mode === 'typescript-const') @@ -156,9 +196,23 @@ export const exportType = ({ } } + const symbol = plugin.registerSymbol({ + meta: { + category: 'type', + path: state.path.value, + resource: 'definition', + resourceId: $ref, + tags: state.tags?.value, + tool: 'typescript', + }, + name: buildName({ + config: plugin.config.definitions, + name: refToName($ref), + }), + }); const node = $.type - .alias(symbol.placeholder) - .export(symbol.exported) + .alias(symbol) + .export() .$if(createSchemaComment(schema), (t, v) => t.doc(v)) .type(type); plugin.setSymbolValue(symbol, node); diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts index 8dec4b950..4f81c2196 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts @@ -121,8 +121,6 @@ const operationToDataType = ({ data.required = dataRequired; const symbol = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -138,8 +136,8 @@ const operationToDataType = ({ }), }); const node = $.type - .alias(symbol.placeholder) - .export(symbol.exported) + .alias(symbol) + .export() .type( irSchemaToAst({ plugin, @@ -164,8 +162,6 @@ export const operationToType = ({ if (errors) { const symbolErrors = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -181,8 +177,8 @@ export const operationToType = ({ }), }); const node = $.type - .alias(symbolErrors.placeholder) - .export(symbolErrors.exported) + .alias(symbolErrors) + .export() .type( irSchemaToAst({ plugin, @@ -194,8 +190,6 @@ export const operationToType = ({ if (error) { const symbol = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -214,8 +208,8 @@ export const operationToType = ({ }), }); const node = $.type - .alias(symbol.placeholder) - .export(symbol.exported) + .alias(symbol) + .export() .type( $.type(symbolErrors.placeholder).idx( $.type(symbolErrors.placeholder).keyof(), @@ -227,8 +221,6 @@ export const operationToType = ({ if (responses) { const symbolResponses = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -244,8 +236,8 @@ export const operationToType = ({ }), }); const node = $.type - .alias(symbolResponses.placeholder) - .export(symbolResponses.exported) + .alias(symbolResponses) + .export() .type( irSchemaToAst({ plugin, @@ -257,8 +249,6 @@ export const operationToType = ({ if (response) { const symbol = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -277,8 +267,8 @@ export const operationToType = ({ }), }); const node = $.type - .alias(symbol.placeholder) - .export(symbol.exported) + .alias(symbol) + .export() .type( $.type(symbolResponses.placeholder).idx( $.type(symbolResponses.placeholder).keyof(), diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts index a4a0e3518..d50b96308 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts @@ -24,8 +24,6 @@ const operationToDataType = ({ if (operation.body) { const symbolWebhookPayload = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -44,8 +42,8 @@ const operationToDataType = ({ }), }); const node = $.type - .alias(symbolWebhookPayload.placeholder) - .export(symbolWebhookPayload.exported) + .alias(symbolWebhookPayload) + .export() .$if(createSchemaComment(operation.body.schema), (t, v) => t.doc(v)) .type( irSchemaToAst({ @@ -88,8 +86,6 @@ const operationToDataType = ({ data.required = dataRequired; const symbolWebhookRequest = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -105,8 +101,8 @@ const operationToDataType = ({ }), }); const node = $.type - .alias(symbolWebhookRequest.placeholder) - .export(symbolWebhookRequest.exported) + .alias(symbolWebhookRequest) + .export() .type( irSchemaToAst({ plugin, diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts index 08f22cd11..81bd4e4f9 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts @@ -16,8 +16,8 @@ export const createWebhooks = ({ if (!webhookNames.length) return; const node = $.type - .alias(symbolWebhooks.placeholder) - .export(symbolWebhooks.exported) + .alias(symbolWebhooks) + .export() .type($.type.or(...webhookNames)); plugin.setSymbolValue(symbolWebhooks, node); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts index f677cf41b..4754a671e 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts @@ -5,7 +5,6 @@ import type { SchemaWithType } from '~/plugins'; import { toRefs } from '~/plugins/shared/utils/refs'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; -import { pathToJsonPointer, refToName } from '~/utils/ref'; import { createClientOptions } from '../shared/clientOptions'; import { exportType } from '../shared/export'; @@ -29,7 +28,7 @@ export const irSchemaToAst = ({ resource: 'definition', resourceId: schema.$ref, }); - return $.type(symbol.placeholder); + return $.type(symbol); } if (schema.type) { @@ -72,31 +71,10 @@ const handleComponent = ({ schema: IR.SchemaObject; }) => { const type = irSchemaToAst({ plugin, schema, state }); - - // Don't tag enums as 'type' since they export runtime artifacts (values) - const isEnum = schema.type === 'enum' && plugin.config.enums.enabled; - - const $ref = pathToJsonPointer(state.path.value); - const symbol = plugin.registerSymbol({ - exported: true, - kind: isEnum ? undefined : 'type', - meta: { - category: 'type', - path: state.path.value, - resource: 'definition', - resourceId: $ref, - tags: state.tags?.value, - tool: 'typescript', - }, - name: buildName({ - config: plugin.config.definitions, - name: refToName($ref), - }), - }); exportType({ plugin, schema, - symbol, + state, type, }); }; @@ -104,8 +82,6 @@ const handleComponent = ({ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { // reserve identifier for ClientOptions const symbolClientOptions = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', resource: 'client', @@ -121,8 +97,6 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { }); // reserve identifier for Webhooks const symbolWebhooks = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', resource: 'webhook', diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts index a9f13fa0c..a3208ad27 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts @@ -50,14 +50,12 @@ export const stringToAst = ({ if (!plugin.getSymbol(queryTypeId)) { const symbolTypeId = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: queryTypeId, name: 'TypeID', }); const nodeTypeId = $.type - .alias(symbolTypeId.placeholder) - .export(symbolTypeId.exported) + .alias(symbolTypeId) + .export() .generic('T', (g) => g.extends('string')) .type( $.type.template().add($.type('T')).add('_').add($.type('string')), @@ -67,8 +65,6 @@ export const stringToAst = ({ const symbolTypeId = plugin.referenceSymbol(queryTypeId); const symbolTypeName = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: query, name: stringCase({ case: plugin.config.case, @@ -76,8 +72,8 @@ export const stringToAst = ({ }), }); const node = $.type - .alias(symbolTypeName.placeholder) - .export(symbolTypeName.exported) + .alias(symbolTypeName) + .export() .type($.type(symbolTypeId.placeholder).generic($.type.literal(type))); plugin.setSymbolValue(symbolTypeName, node); } diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts index 843544c70..e5c30310a 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts @@ -72,14 +72,13 @@ export const createMutationOptions = ({ o.prop('meta', v), ); const symbolMutationOptions = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.mutationOptions, name: operation.id, }), }); - const statement = $.const(symbolMutationOptions.placeholder) - .export(symbolMutationOptions.exported) + const statement = $.const(symbolMutationOptions) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts index 444c95124..097f87aca 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts @@ -66,7 +66,7 @@ export const createQueryKeyFunction = ({ name: 'serializeQueryKeyValue', }); - const fn = $.const(symbolCreateQueryKey.placeholder).assign( + const fn = $.const(symbolCreateQueryKey).assign( $.func() .param('id', (p) => p.type('string')) .param('options', (p) => p.optional().type(TOptionsType)) @@ -163,8 +163,6 @@ export const createQueryKeyType = ({ tool: 'sdk', }); const symbolQueryKeyType = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', resource: 'QueryKey', @@ -173,8 +171,8 @@ export const createQueryKeyType = ({ name: 'QueryKey', }); const queryKeyType = $.type - .alias(symbolQueryKeyType.placeholder) - .export(symbolQueryKeyType.exported) + .alias(symbolQueryKeyType) + .export() .generic(TOptionsType, (g) => g.extends($.type(symbolOptions.placeholder))) .type( $.type.tuple( @@ -210,8 +208,8 @@ export const queryKeyStatement = ({ }) => { const typeData = useTypeData({ operation, plugin }); const { strippedTypeData } = getPublicTypeData({ plugin, typeData }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .assign( $.func() .param('options', (p) => diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts index 54d553926..c837637e5 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts @@ -51,7 +51,6 @@ export const createQueryOptions = ({ let keyExpression: ReturnType; if (plugin.config.queryKeys.enabled) { const symbolQueryKey = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.queryKeys, name: operation.id, @@ -125,7 +124,6 @@ export const createQueryOptions = ({ ); const symbolQueryOptionsFn = plugin.registerSymbol({ - exported: true, meta: { category: 'hook', resource: 'operation', @@ -142,8 +140,8 @@ export const createQueryOptions = ({ category: 'external', resource: `${plugin.name}.defineQueryOptions`, }); - const statement = $.const(symbolQueryOptionsFn.placeholder) - .export(symbolQueryOptionsFn.exported) + const statement = $.const(symbolQueryOptionsFn) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts index f4aaa51ff..11528dbfb 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts @@ -53,7 +53,7 @@ export const createQueryKeyFunction = ({ .generic(TOptionsType) .idx(0); - const fn = $.const(symbolCreateQueryKey.placeholder).assign( + const fn = $.const(symbolCreateQueryKey).assign( $.func() .param('id', (p) => p.type('string')) .param('options', (p) => p.optional().type(TOptionsType)) @@ -132,8 +132,6 @@ export const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => { tool: 'sdk', }); const symbolQueryKeyType = plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', resource: 'QueryKey', @@ -142,8 +140,8 @@ export const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => { name: 'QueryKey', }); const queryKeyType = $.type - .alias(symbolQueryKeyType.placeholder) - .export(symbolQueryKeyType.exported) + .alias(symbolQueryKeyType) + .export() .generic(TOptionsType, (g) => g.extends(symbolOptions.placeholder)) .type( $.type.tuple( @@ -176,8 +174,8 @@ export const queryKeyStatement = ({ typeQueryKey?: string; }) => { const typeData = useTypeData({ operation, plugin }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .assign( $.func() .param('options', (p) => diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts index e958e3b76..5b1138f2a 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts @@ -36,7 +36,7 @@ const createInfiniteParamsFunction = ({ }), }); - const fn = $.const(symbolCreateInfiniteParams.placeholder).assign( + const fn = $.const(symbolCreateInfiniteParams).assign( $.func() .generic('K', (g) => g.extends( @@ -169,7 +169,6 @@ export const createInfiniteQueryOptions = ({ }); const symbolInfiniteQueryKey = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.infiniteQueryKeys, name: operation.id, @@ -231,14 +230,13 @@ export const createInfiniteQueryOptions = ({ } const symbolInfiniteQueryOptionsFn = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.infiniteQueryOptions, name: operation.id, }), }); - const statement = $.const(symbolInfiniteQueryOptionsFn.placeholder) - .export(symbolInfiniteQueryOptionsFn.exported) + const statement = $.const(symbolInfiniteQueryOptionsFn) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts index 3dc0fbdd0..ca109cab1 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts @@ -51,14 +51,13 @@ export const createMutationOptions = ({ const mutationOptionsFn = 'mutationOptions'; const symbolMutationOptions = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.mutationOptions, name: operation.id, }), }); - const statement = $.const(symbolMutationOptions.placeholder) - .export(symbolMutationOptions.exported) + const statement = $.const(symbolMutationOptions) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts index 72c678152..f355b3ac6 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts @@ -54,7 +54,6 @@ export const createQueryOptions = ({ }); const symbolQueryKey = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.queryKeys, name: operation.id, @@ -107,7 +106,6 @@ export const createQueryOptions = ({ ); const symbolQueryOptionsFn = plugin.registerSymbol({ - exported: plugin.config.queryOptions.exported, meta: { category: 'hook', resource: 'operation', @@ -122,8 +120,8 @@ export const createQueryOptions = ({ }); // TODO: add type error // TODO: AxiosError - const statement = $.const(symbolQueryOptionsFn.placeholder) - .export(symbolQueryOptionsFn.exported) + const statement = $.const(symbolQueryOptionsFn) + .export(plugin.config.queryOptions.exported) .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts index dc5a22a10..e9101dff2 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts @@ -28,7 +28,6 @@ export const createUseQuery = ({ } const symbolUseQueryFn = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.useQuery, name: operation.id, @@ -53,8 +52,8 @@ export const createUseQuery = ({ role: 'queryOptions', tool: plugin.name, }); - const statement = $.const(symbolUseQueryFn.placeholder) - .export(symbolUseQueryFn.exported) + const statement = $.const(symbolUseQueryFn) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/arktype/shared/export.ts b/packages/openapi-ts/src/plugins/arktype/shared/export.ts index b6dfbd4e5..96da51263 100644 --- a/packages/openapi-ts/src/plugins/arktype/shared/export.ts +++ b/packages/openapi-ts/src/plugins/arktype/shared/export.ts @@ -26,8 +26,8 @@ export const exportAst = ({ resource: 'arktype.type', }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v), ) @@ -46,8 +46,8 @@ export const exportAst = ({ if (typeInferSymbol) { const inferType = $.type - .alias(typeInferSymbol.placeholder) - .export(typeInferSymbol.exported) + .alias(typeInferSymbol) + .export() .type( $.type(symbol.placeholder).attr(identifiers.type.infer).typeofType(), ); diff --git a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts index 2392b4537..ff12e885d 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts @@ -243,7 +243,6 @@ const handleComponent = ({ const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -259,8 +258,6 @@ const handleComponent = ({ }); const typeInferSymbol = plugin.config.definitions.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/fastify/plugin.ts b/packages/openapi-ts/src/plugins/fastify/plugin.ts index 5185de5ad..33c701da2 100644 --- a/packages/openapi-ts/src/plugins/fastify/plugin.ts +++ b/packages/openapi-ts/src/plugins/fastify/plugin.ts @@ -154,8 +154,6 @@ export const handler: FastifyPlugin['Handler'] = ({ plugin }) => { }); const symbolRouteHandlers = plugin.registerSymbol({ - exported: true, - kind: 'type', name: 'RouteHandlers', }); @@ -174,9 +172,6 @@ export const handler: FastifyPlugin['Handler'] = ({ plugin }) => { }, ); - const node = $.type - .alias(symbolRouteHandlers.placeholder) - .export(symbolRouteHandlers.exported) - .type(type); + const node = $.type.alias(symbolRouteHandlers).export().type(type); plugin.setSymbolValue(symbolRouteHandlers, node); }; diff --git a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts index ee528a80b..cec269e01 100644 --- a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts +++ b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts @@ -27,7 +27,6 @@ export const createUseSwr = ({ resource: 'swr', }); const symbolUseQueryFn = plugin.registerSymbol({ - exported: true, name: buildName({ config: plugin.config.useSwr, name: operation.id, @@ -48,8 +47,8 @@ export const createUseSwr = ({ ); } - const statement = $.const(symbolUseQueryFn.placeholder) - .export(symbolUseQueryFn.exported) + const statement = $.const(symbolUseQueryFn) + .export() .$if(plugin.config.comments && createOperationComment(operation), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/valibot/shared/export.ts b/packages/openapi-ts/src/plugins/valibot/shared/export.ts index bb2c17863..d2c2f6dd6 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/export.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/export.ts @@ -24,8 +24,8 @@ export const exportAst = ({ resource: 'valibot.v', }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v), ) diff --git a/packages/openapi-ts/src/plugins/valibot/shared/operation.ts b/packages/openapi-ts/src/plugins/valibot/shared/operation.ts index 8326bc177..7d36573c9 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/operation.ts @@ -117,7 +117,6 @@ export const irOperationToAst = ({ const ast = getAst(schemaData, state.path.value); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -149,7 +148,6 @@ export const irOperationToAst = ({ const path = [...state.path.value, 'responses']; const ast = getAst(response, path); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path, diff --git a/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts b/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts index 6048db381..9c6c79bfc 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts @@ -116,7 +116,6 @@ export const irWebhookToAst = ({ const ast = getAst(schemaData, state.path.value); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts index 4361503b6..ab7a3ae7c 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts @@ -161,7 +161,6 @@ const handleComponent = ({ const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts index 2df4a9ec0..69e0a87a0 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts @@ -183,7 +183,6 @@ const handleComponent = ({ const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -199,8 +198,6 @@ const handleComponent = ({ }); const typeInferSymbol = plugin.config.definitions.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/zod/shared/export.ts b/packages/openapi-ts/src/plugins/zod/shared/export.ts index 23eb65ce8..7890bc73f 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/export.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/export.ts @@ -26,8 +26,8 @@ export const exportAst = ({ resource: 'zod.z', }); - const statement = $.const(symbol.placeholder) - .export(symbol.exported) + const statement = $.const(symbol) + .export() .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v), ) @@ -37,8 +37,8 @@ export const exportAst = ({ if (typeInferSymbol) { const inferType = $.type - .alias(typeInferSymbol.placeholder) - .export(typeInferSymbol.exported) + .alias(typeInferSymbol) + .export() .type( $.type(z.placeholder) .attr(identifiers.infer) diff --git a/packages/openapi-ts/src/plugins/zod/shared/operation.ts b/packages/openapi-ts/src/plugins/zod/shared/operation.ts index 1be803f1c..4a0497885 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/operation.ts @@ -117,7 +117,6 @@ export const irOperationToAst = ({ const ast = getAst(schemaData, state.path.value); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -134,8 +133,6 @@ export const irOperationToAst = ({ }); const typeInferSymbol = plugin.config.requests.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, @@ -169,7 +166,6 @@ export const irOperationToAst = ({ const path = [...state.path.value, 'responses']; const ast = getAst(response, path); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path, @@ -186,8 +182,6 @@ export const irOperationToAst = ({ }); const typeInferSymbol = plugin.config.responses.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path, diff --git a/packages/openapi-ts/src/plugins/zod/shared/webhook.ts b/packages/openapi-ts/src/plugins/zod/shared/webhook.ts index eb1739263..86e581cd9 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/webhook.ts @@ -116,7 +116,6 @@ export const irWebhookToAst = ({ const ast = getAst(schemaData, state.path.value); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -133,8 +132,6 @@ export const irWebhookToAst = ({ }); const typeInferSymbol = plugin.config.webhooks.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts index 03ef0ac0a..0a94278ee 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts @@ -171,7 +171,6 @@ const handleComponent = ({ const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -187,8 +186,6 @@ const handleComponent = ({ }); const typeInferSymbol = plugin.config.definitions.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, diff --git a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts index db46ae0da..60e5e2aec 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts @@ -181,7 +181,6 @@ const handleComponent = ({ const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ - exported: true, meta: { category: 'schema', path: state.path.value, @@ -197,8 +196,6 @@ const handleComponent = ({ }); const typeInferSymbol = plugin.config.definitions.types.infer.enabled ? plugin.registerSymbol({ - exported: true, - kind: 'type', meta: { category: 'type', path: state.path.value, diff --git a/packages/openapi-ts/src/ts-dsl/base.ts b/packages/openapi-ts/src/ts-dsl/base.ts index 6290cede7..aab3fce87 100644 --- a/packages/openapi-ts/src/ts-dsl/base.ts +++ b/packages/openapi-ts/src/ts-dsl/base.ts @@ -1,14 +1,29 @@ +// TODO: symbol should be protected, but needs to be public to satisfy types +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; export type MaybeArray = T | ReadonlyArray; -export interface ITsDsl { +export interface ITsDsl extends SyntaxNode { + /** Render this DSL node into a concrete TypeScript AST node. */ $render(): T; } +export type Constructor = new (...args: ReadonlyArray) => T; + export abstract class TsDsl implements ITsDsl { + /** Walk this node and its children with a visitor. */ + abstract traverse(visitor: (node: SyntaxNode) => void): void; + + /** Render this DSL node into a concrete TypeScript AST node. */ abstract $render(): T; + /** Parent DSL node in the constructed syntax tree. */ + protected parent?: TsDsl; + + /** The codegen symbol associated with this node. */ + symbol?: Symbol; + /** Conditionally applies a callback to this builder. */ $if( this: T, @@ -84,6 +99,33 @@ export abstract class TsDsl implements ITsDsl { return this; } + /** Returns all locally declared names within this node. */ + getLocalNames(): Iterable { + return []; + } + + /** Returns all symbols referenced by this node (directly or through children). */ + getSymbols(): Iterable { + return []; + } + + /** Rewrites internal identifier nodes after final name resolution. */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + rewriteIdentifiers(_map: Map): void { + // noop + } + + /** Assigns the parent DSL node, enforcing a single-parent invariant. */ + setParent(parent: TsDsl): this { + if (this.parent && this.parent !== parent) { + throw new Error( + `DSL node already has a parent (${this.parent.constructor.name}); cannot reassign to ${parent.constructor.name}.`, + ); + } + this.parent = parent; + return this; + } + protected $maybeId( expr: T, ): T extends string ? ts.Identifier : T { @@ -132,6 +174,18 @@ export abstract class TsDsl implements ITsDsl { return this.unwrap(value as any) as TypeOfMaybe; } + /** Returns the root symbol associated with this DSL subtree. */ + protected getRootSymbol(): Symbol | undefined { + // eslint-disable-next-line @typescript-eslint/no-this-alias + let n: TsDsl | undefined = this; + while (n) { + if (n.symbol) return n.symbol; + n = n.parent; + } + return undefined; + } + + /** Unwraps nested DSL nodes into raw TypeScript AST nodes. */ protected unwrap(value: I): I extends TsDsl ? N : I { return ( value instanceof TsDsl ? value.$render() : value diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index 1659d422e..be9a67bf7 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -19,54 +20,63 @@ import { InitTsDsl } from './init'; import { MethodTsDsl } from './method'; export class ClassTsDsl extends TsDsl { - protected heritageClauses: Array = []; + protected baseClass?: Symbol | string; protected body: Array> = []; protected modifiers = createModifierAccessor(this); protected name: string; - constructor(name: string) { + constructor(name: Symbol | string) { super(); - this.name = name; + if (typeof name === 'string') { + this.name = name; + return; + } + this.name = name.finalName; + this.symbol = name; + this.symbol.setKind('class'); + this.symbol.setRootNode(this); } /** Adds one or more class members (fields, methods, etc.). */ do(...items: ReadonlyArray>): this { - // @ts-expect-error --- IGNORE --- - this.body.push(...items); + for (const item of items) { + if (item && typeof item === 'object' && 'setParent' in item) { + item.setParent(this); + } + // @ts-expect-error --- IGNORE --- + this.body.push(item); + } return this; } - /** Adds a base class to extend from. */ - extends(base?: string | ts.Expression | false | null): this { + /** Records a base class to extend from without rendering early. */ + extends(base?: Symbol | string): this { if (!base) return this; - this.heritageClauses.push( - ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [ - ts.factory.createExpressionWithTypeArguments( - this.$maybeId(base), - undefined, - ), - ]), - ); + this.baseClass = base; + if (typeof base !== 'string') { + const symbol = this.getRootSymbol(); + if (symbol) symbol.addDependency(base); + } return this; } /** Adds a class field. */ field(name: string, fn?: (f: FieldTsDsl) => void): this { - const f = new FieldTsDsl(name, fn); + const f = new FieldTsDsl(name, fn).setParent(this); this.body.push(f); return this; } /** Adds a class constructor. */ init(fn?: (i: InitTsDsl) => void): this { - const i = new InitTsDsl(fn); + const i = new InitTsDsl(fn).setParent(this); this.body.push(i); return this; } /** Adds a class method. */ method(name: string, fn?: (m: MethodTsDsl) => void): this { - const m = new MethodTsDsl(name, fn); + const m = new MethodTsDsl(name, fn).setParent(this); this.body.push(m); return this; } @@ -77,6 +87,11 @@ export class ClassTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds the `ClassDeclaration` node. */ $render(): ts.ClassDeclaration { const body = this.$node(this.body) as ReadonlyArray; @@ -84,10 +99,24 @@ export class ClassTsDsl extends TsDsl { [...this.$decorators(), ...this.modifiers.list()], this.name, this.$generics(), - this.heritageClauses, + this._renderHeritage(), body, ); } + + /** Builds heritage clauses (extends). */ + private _renderHeritage(): ReadonlyArray { + if (!this.baseClass) return []; + const id = + typeof this.baseClass === 'string' + ? this.$maybeId(this.baseClass) + : this.$maybeId(this.baseClass.finalName); + return [ + ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [ + ts.factory.createExpressionWithTypeArguments(id, undefined), + ]), + ]; + } } export interface ClassTsDsl diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index 4a77c30e8..6ebda0b43 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -7,27 +8,37 @@ import { mixin } from '../mixins/apply'; import { ArgsMixin } from '../mixins/args'; export class DecoratorTsDsl extends TsDsl { - protected name: string | ts.Expression; + protected name: Symbol | string | MaybeTsDsl; constructor( - name: string | ts.Expression, + name: Symbol | string | MaybeTsDsl, ...args: ReadonlyArray> ) { super(); this.name = name; + if (typeof name !== 'string' && 'id' in name) { + const symbol = this.getRootSymbol(); + if (symbol) symbol.addDependency(name); + } this.args(...args); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Decorator { + const target = + typeof this.name !== 'string' && 'id' in this.name + ? this.$maybeId(this.name.finalName) + : this.$node(this.name); + const args = this.$args(); return ts.factory.createDecorator( args.length - ? ts.factory.createCallExpression( - this.$maybeId(this.name), - undefined, - args, - ) - : this.$maybeId(this.name), + ? ts.factory.createCallExpression(target, undefined, args) + : target, ); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index f53300966..69b266336 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -20,9 +21,16 @@ export class EnumTsDsl extends TsDsl { private _name: string | ts.Identifier; protected modifiers = createModifierAccessor(this); - constructor(name: string | ts.Identifier, fn?: (e: EnumTsDsl) => void) { + constructor(name: Symbol | string, fn?: (e: EnumTsDsl) => void) { super(); - this._name = name; + if (typeof name === 'string') { + this._name = name; + } else { + this._name = name.finalName; + this.symbol = name; + this.symbol.setKind('enum'); + this.symbol.setRootNode(this); + } fn?.(this); } @@ -39,6 +47,11 @@ export class EnumTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Renders the enum declaration. */ $render(): ts.EnumDeclaration { return ts.factory.createEnumDeclaration( diff --git a/packages/openapi-ts/src/ts-dsl/decl/field.ts b/packages/openapi-ts/src/ts-dsl/decl/field.ts index 452d17df3..80ec0b6a8 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/field.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/field.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -33,6 +34,11 @@ export class FieldTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds the `PropertyDeclaration` node. */ $render(): ts.PropertyDeclaration { return ts.factory.createPropertyDeclaration( diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index 680b1d486..6d69338ac 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -29,27 +30,34 @@ class ImplFuncTsDsl extends TsDsl< ? ts.FunctionExpression : ts.ArrowFunction > { - protected mode: FuncMode; + protected mode?: FuncMode; protected modifiers = createModifierAccessor(this); protected name?: string; protected _returns?: TypeTsDsl; constructor(); constructor(fn: (f: ImplFuncTsDsl<'arrow'>) => void); - constructor(name: string); - constructor(name: string, fn: (f: ImplFuncTsDsl<'decl'>) => void); + constructor(name: Symbol | string); + constructor(name: Symbol | string, fn: (f: ImplFuncTsDsl<'decl'>) => void); constructor( - nameOrFn?: string | ((f: ImplFuncTsDsl<'arrow'>) => void), + nameOrFn?: Symbol | string | ((f: ImplFuncTsDsl<'arrow'>) => void), fn?: (f: ImplFuncTsDsl<'decl'>) => void, ) { super(); - if (typeof nameOrFn === 'string') { - this.name = nameOrFn; + if (typeof nameOrFn === 'function') { + this.mode = 'arrow'; + nameOrFn(this as unknown as FuncTsDsl<'arrow'>); + } else if (nameOrFn) { this.mode = 'decl'; + if (typeof nameOrFn === 'string') { + this.name = nameOrFn; + } else { + this.name = nameOrFn.finalName; + this.symbol = nameOrFn; + this.symbol.setKind('function'); + this.symbol.setRootNode(this); + } fn?.(this as unknown as FuncTsDsl<'decl'>); - } else { - this.mode = 'arrow'; - nameOrFn?.(this as unknown as FuncTsDsl<'arrow'>); } } @@ -77,6 +85,11 @@ class ImplFuncTsDsl extends TsDsl< return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 2d1be95e3..2067d9cb6 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -27,6 +28,11 @@ export class GetterTsDsl extends TsDsl { fn?.(this); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.GetAccessorDeclaration { return ts.factory.createGetAccessorDeclaration( [...this.$decorators(), ...this.modifiers.list()], diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index 7e9e59504..059e09502 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -22,6 +23,11 @@ export class InitTsDsl extends TsDsl { fn?.(this); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds the `ConstructorDeclaration` node. */ $render(): ts.ConstructorDeclaration { return ts.factory.createConstructorDeclaration( diff --git a/packages/openapi-ts/src/ts-dsl/decl/member.ts b/packages/openapi-ts/src/ts-dsl/decl/member.ts index b0cfe68bf..c9165483d 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/member.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/member.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -24,6 +25,11 @@ export class EnumMemberTsDsl extends TsDsl { } } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the enum member value. */ value(value?: Value): this { this._value = value; diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index 4c4e3b2d4..b73e5be55 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -38,6 +39,11 @@ export class MethodTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds the `MethodDeclaration` node. */ $render(): ts.MethodDeclaration { return ts.factory.createMethodDeclaration( diff --git a/packages/openapi-ts/src/ts-dsl/decl/param.ts b/packages/openapi-ts/src/ts-dsl/decl/param.ts index 61229f043..530bc17db 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/param.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/param.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -27,6 +28,11 @@ export class ParamTsDsl extends TsDsl { } } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the parameter type. */ type(type: string | TypeTsDsl): this { this._type = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); diff --git a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts index 83a7b37ec..f32c68534 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -44,6 +45,11 @@ export class PatternTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds and returns a BindingName (ObjectBindingPattern, ArrayBindingPattern, or Identifier). */ $render(): ts.BindingName { if (!this.pattern) { diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index 99c634192..30453fb57 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -27,6 +28,11 @@ export class SetterTsDsl extends TsDsl { fn?.(this); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.SetAccessorDeclaration { return ts.factory.createSetAccessorDeclaration( [...this.$decorators(), ...this.modifiers.list()], diff --git a/packages/openapi-ts/src/ts-dsl/expr/array.ts b/packages/openapi-ts/src/ts-dsl/expr/array.ts index 6d0f095d9..b88c6b22a 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/array.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/array.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -49,6 +50,11 @@ export class ArrayTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.ArrayLiteralExpression { const elements = this._elements.map((item) => { const node = this.$node(item.expr); diff --git a/packages/openapi-ts/src/ts-dsl/expr/as.ts b/packages/openapi-ts/src/ts-dsl/expr/as.ts index fa1d37fab..95a860678 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/as.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/as.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; @@ -20,6 +21,11 @@ export class AsTsDsl extends TsDsl { this.type = type; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render() { return ts.factory.createAsExpression( this.$node(this.expr), diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index ad39e8817..516112fe7 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { validTypescriptIdentifierRegExp } from '~/utils/regexp'; @@ -28,6 +29,11 @@ export class AttrTsDsl extends TsDsl< this.right = right; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.PropertyAccessExpression | ts.ElementAccessExpression { const leftNode = this.$node(this.left); validTypescriptIdentifierRegExp.lastIndex = 0; diff --git a/packages/openapi-ts/src/ts-dsl/expr/await.ts b/packages/openapi-ts/src/ts-dsl/expr/await.ts index 6bca78495..6acdf5673 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/await.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/await.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -14,6 +15,11 @@ export class AwaitTsDsl extends TsDsl { this._awaitExpr = expr; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.AwaitExpression { return ts.factory.createAwaitExpression(this.$node(this._awaitExpr)); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/binary.ts b/packages/openapi-ts/src/ts-dsl/expr/binary.ts index b87eb7f7b..3b450dd7a 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/binary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/binary.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -119,6 +120,11 @@ export class BinaryTsDsl extends TsDsl { return this.opAndExpr('*', expr); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.BinaryExpression { if (!this._op) { throw new Error('BinaryTsDsl: missing operator'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/call.ts b/packages/openapi-ts/src/ts-dsl/expr/call.ts index 77dfe4a6c..4874426b9 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/call.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/call.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -23,6 +24,11 @@ export class CallTsDsl extends TsDsl { ); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.CallExpression { return ts.factory.createCallExpression( this.$node(this._callee), diff --git a/packages/openapi-ts/src/ts-dsl/expr/expr.ts b/packages/openapi-ts/src/ts-dsl/expr/expr.ts index 768fbb649..0bcc06b2f 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/expr.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -17,6 +18,11 @@ export class ExprTsDsl extends TsDsl { this._exprInput = id; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Expression { return this.$node(this._exprInput); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/id.ts b/packages/openapi-ts/src/ts-dsl/expr/id.ts index a4da00e5b..56d9b0946 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/id.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/id.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -10,6 +11,11 @@ export class IdTsDsl extends TsDsl { this.name = name; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Identifier { return ts.factory.createIdentifier(this.name); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/literal.ts b/packages/openapi-ts/src/ts-dsl/expr/literal.ts index f239d9151..cb1352140 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/literal.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging, @typescript-eslint/no-empty-object-type */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -14,6 +15,11 @@ export class LiteralTsDsl extends TsDsl { this.value = value; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.LiteralTypeNode['literal'] { if (typeof this.value === 'boolean') { return this.value ? ts.factory.createTrue() : ts.factory.createFalse(); diff --git a/packages/openapi-ts/src/ts-dsl/expr/new.ts b/packages/openapi-ts/src/ts-dsl/expr/new.ts index e557a3f2a..b4d15a075 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/new.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/new.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -20,6 +21,11 @@ export class NewTsDsl extends TsDsl { this.args(...args); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds the `NewExpression` node. */ $render(): ts.NewExpression { return ts.factory.createNewExpression( diff --git a/packages/openapi-ts/src/ts-dsl/expr/object.ts b/packages/openapi-ts/src/ts-dsl/expr/object.ts index 7dc91e3c5..2f014ddbb 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/object.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/object.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -71,6 +72,11 @@ export class ObjectTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Builds and returns the object literal expression. */ $render(): ts.ObjectLiteralExpression { return ts.factory.createObjectLiteralExpression( diff --git a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts index b13203d10..cb99d8e14 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -40,6 +41,11 @@ export class PrefixTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Renders the prefix unary expression node. */ $render(): ts.PrefixUnaryExpression { if (!this._expr) { diff --git a/packages/openapi-ts/src/ts-dsl/expr/prop.ts b/packages/openapi-ts/src/ts-dsl/expr/prop.ts index 16130fe38..1dca3ba01 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prop.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -35,6 +36,11 @@ export class ObjectPropTsDsl extends TsDsl { return this.missingRequiredCalls().length === 0; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + value(value: Expr | Stmt | ((p: ObjectPropTsDsl) => void)) { if (typeof value === 'function') { value(this); diff --git a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts index d690e17e8..d7b043455 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -20,6 +21,11 @@ export class RegExpTsDsl extends TsDsl { this.flags = flags; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Emits a RegularExpressionLiteral node. */ $render(): ts.RegularExpressionLiteral { const patternContent = diff --git a/packages/openapi-ts/src/ts-dsl/expr/template.ts b/packages/openapi-ts/src/ts-dsl/expr/template.ts index 90286cc5c..82eb392ba 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/template.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/template.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -18,6 +19,11 @@ export class TemplateTsDsl extends TsDsl< return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TemplateExpression | ts.NoSubstitutionTemplateLiteral { const parts = this.$node(this.parts); diff --git a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts index 3f841ee41..301c3267b 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -28,6 +29,11 @@ export class TernaryTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.ConditionalExpression { if (!this._condition) throw new Error('Missing condition in ternary'); if (!this._then) throw new Error('Missing then expression in ternary'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index 4574610be..97e301ee6 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -15,6 +16,11 @@ export class TypeOfExprTsDsl extends TsDsl { this._expr = expr; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TypeOfExpression { return ts.factory.createTypeOfExpression(this.$node(this._expr)); } diff --git a/packages/openapi-ts/src/ts-dsl/layout/doc.ts b/packages/openapi-ts/src/ts-dsl/layout/doc.ts index 9845dcf03..8e9dd81cb 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/doc.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -58,6 +59,11 @@ export class DocTsDsl extends TsDsl { return node; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/layout/hint.ts b/packages/openapi-ts/src/ts-dsl/layout/hint.ts index 1d7eadbc8..a3da41776 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/hint.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -40,6 +41,11 @@ export class HintTsDsl extends TsDsl { return node; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/layout/newline.ts b/packages/openapi-ts/src/ts-dsl/layout/newline.ts index 64df6f21c..cd2f0055e 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/newline.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/newline.ts @@ -1,9 +1,15 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NewlineTsDsl extends TsDsl { + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Identifier { return this.$node(new IdTsDsl('\n')); } diff --git a/packages/openapi-ts/src/ts-dsl/layout/note.ts b/packages/openapi-ts/src/ts-dsl/layout/note.ts index 5c264ef96..842af9089 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/note.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/note.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -38,6 +39,11 @@ export class NoteTsDsl extends TsDsl { return node; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/mixins/apply.ts b/packages/openapi-ts/src/ts-dsl/mixins/apply.ts index 442c720bb..cf570bfdf 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/apply.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/apply.ts @@ -19,7 +19,6 @@ export function mixin(target: Function, ...sources: ReadonlyArray) { Object.getOwnPropertyDescriptors(sourceProto), )) { if (key === 'constructor') continue; - if (key === '$render' && !descriptor.value.mixin) continue; Object.defineProperty(targetProto, key, descriptor); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/args.ts b/packages/openapi-ts/src/ts-dsl/mixins/args.ts index 4cd88f840..83bb2ea59 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/args.ts @@ -6,7 +6,7 @@ import { TsDsl } from '../base'; /** * Adds `.arg()` and `.args()` for managing expression arguments in call-like nodes. */ -export class ArgsMixin extends TsDsl { +export abstract class ArgsMixin extends TsDsl { protected _args?: Array>; /** Adds a single expression argument. */ @@ -26,8 +26,4 @@ export class ArgsMixin extends TsDsl { if (!this._args) return []; return this.$node(this._args).map((arg) => this.$maybeId(arg)); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts index 9a414918a..099e1248a 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts @@ -1,18 +1,21 @@ +import type { Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { DecoratorTsDsl } from '../decl/decorator'; -export class DecoratorMixin extends TsDsl { +export abstract class DecoratorMixin extends TsDsl { protected decorators?: Array; /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */ decorator( - name: string | ts.Expression, + name: Symbol | string | MaybeTsDsl, ...args: ReadonlyArray> ): this { - (this.decorators ??= []).push(new DecoratorTsDsl(name, ...args)); + (this.decorators ??= []).push( + new DecoratorTsDsl(name, ...args).setParent(this), + ); return this; } @@ -21,8 +24,4 @@ export class DecoratorMixin extends TsDsl { if (!this.decorators) return []; return this.$node(this.decorators); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/do.ts b/packages/openapi-ts/src/ts-dsl/mixins/do.ts index e3873777a..77f4a737c 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/do.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/do.ts @@ -7,7 +7,7 @@ import { StmtTsDsl } from '../stmt/stmt'; /** * Adds `.do()` for appending statements or expressions to a body. */ -export class DoMixin extends TsDsl { +export abstract class DoMixin extends TsDsl { protected _do?: Array>; /** Adds one or more expressions/statements to the body. */ @@ -21,8 +21,4 @@ export class DoMixin extends TsDsl { if (!this._do) return []; return this.$node(this._do.map((item) => new StmtTsDsl(item))); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts index 3e9159296..7b9cb846d 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts @@ -1,9 +1,7 @@ -import type { ITsDsl, MaybeArray } from '../base'; +import type { Constructor, ITsDsl, MaybeArray } from '../base'; import { DocTsDsl } from '../layout/doc'; -export function DocMixin< - TBase extends new (...args: ReadonlyArray) => ITsDsl, ->(Base: TBase) { +export function DocMixin(Base: TBase) { const $renderBase = Base.prototype.$render; class Mixin extends Base { @@ -20,9 +18,6 @@ export function DocMixin< } } - // @ts-expect-error - Mixin.prototype.$render.mixin = true; - return Mixin; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts index 62cb761f1..872819b71 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts @@ -1,9 +1,7 @@ -import type { ITsDsl, MaybeArray } from '../base'; +import type { Constructor, ITsDsl, MaybeArray } from '../base'; import { HintTsDsl } from '../layout/hint'; -export function HintMixin< - TBase extends new (...args: ReadonlyArray) => ITsDsl, ->(Base: TBase) { +export function HintMixin(Base: TBase) { const $renderBase = Base.prototype.$render; class Mixin extends Base { @@ -20,9 +18,6 @@ export function HintMixin< } } - // @ts-expect-error - Mixin.prototype.$render.mixin = true; - return Mixin; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts index 4fc8847b8..5ef584219 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts @@ -1,3 +1,4 @@ +import type { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { TsDsl } from '../base'; @@ -15,13 +16,11 @@ export function createModifierAccessor(parent: Parent) { * Adds a modifier of the specified kind to the modifiers list if the condition is true. * * @param kind - The syntax kind of the modifier to add. - * @param condition - Whether to add the modifier (default: true). + * @param condition - Whether to add the modifier. * @returns The parent DSL node for chaining. */ - function _m(kind: ts.ModifierSyntaxKind, condition = true): Parent { - if (condition) { - modifiers.push(ts.factory.createModifier(kind)); - } + function _m(kind: ts.ModifierSyntaxKind, condition: boolean): Parent { + if (condition) modifiers.push(ts.factory.createModifier(kind)); return parent; } @@ -41,6 +40,7 @@ export function createModifierAccessor(parent: Parent) { type Target = object & { _m?(kind: ts.ModifierSyntaxKind, condition?: boolean): unknown; + symbol?: Symbol; }; /** @@ -53,8 +53,9 @@ export class AbstractMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - abstract(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.AbstractKeyword, condition) as T; + abstract(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.AbstractKeyword, cond) as T; } } @@ -68,8 +69,9 @@ export class AsyncMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - async(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.AsyncKeyword, condition) as T; + async(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.AsyncKeyword, cond) as T; } } @@ -83,8 +85,9 @@ export class ConstMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - const(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.ConstKeyword, condition) as T; + const(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.ConstKeyword, cond) as T; } } @@ -98,8 +101,9 @@ export class DeclareMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - declare(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.DeclareKeyword, condition) as T; + declare(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.DeclareKeyword, cond) as T; } } @@ -113,8 +117,9 @@ export class DefaultMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - default(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.DefaultKeyword, condition) as T; + default(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.DefaultKeyword, cond) as T; } } @@ -128,8 +133,10 @@ export class ExportMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - export(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.ExportKeyword, condition) as T; + export(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + if (this.symbol) this.symbol.setExported(cond); + return this._m!(ts.SyntaxKind.ExportKeyword, cond) as T; } } @@ -143,8 +150,9 @@ export class OverrideMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - override(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.OverrideKeyword, condition) as T; + override(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.OverrideKeyword, cond) as T; } } @@ -158,8 +166,9 @@ export class PrivateMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - private(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.PrivateKeyword, condition) as T; + private(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.PrivateKeyword, cond) as T; } } @@ -173,8 +182,9 @@ export class ProtectedMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - protected(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.ProtectedKeyword, condition) as T; + protected(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.ProtectedKeyword, cond) as T; } } @@ -188,8 +198,9 @@ export class PublicMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - public(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.PublicKeyword, condition) as T; + public(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.PublicKeyword, cond) as T; } } @@ -203,8 +214,9 @@ export class ReadonlyMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - readonly(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.ReadonlyKeyword, condition) as T; + readonly(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.ReadonlyKeyword, cond) as T; } } @@ -218,7 +230,8 @@ export class StaticMixin { * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - static(this: T, condition: boolean = true): T { - return this._m!(ts.SyntaxKind.StaticKeyword, condition) as T; + static(this: T, condition?: boolean): T { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m!(ts.SyntaxKind.StaticKeyword, cond) as T; } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/note.ts b/packages/openapi-ts/src/ts-dsl/mixins/note.ts index 72f2901cb..d33f80228 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/note.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/note.ts @@ -1,9 +1,7 @@ -import type { ITsDsl, MaybeArray } from '../base'; +import type { Constructor, ITsDsl, MaybeArray } from '../base'; import { NoteTsDsl } from '../layout/note'; -export function NoteMixin< - TBase extends new (...args: ReadonlyArray) => ITsDsl, ->(Base: TBase) { +export function NoteMixin(Base: TBase) { const $renderBase = Base.prototype.$render; class Mixin extends Base { @@ -20,9 +18,6 @@ export function NoteMixin< } } - // @ts-expect-error - Mixin.prototype.$render.mixin = true; - return Mixin; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/param.ts b/packages/openapi-ts/src/ts-dsl/mixins/param.ts index 3372d6368..f8e45e7f4 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/param.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/param.ts @@ -3,7 +3,7 @@ import type ts from 'typescript'; import { type MaybeTsDsl, TsDsl } from '../base'; import { ParamTsDsl } from '../decl/param'; -export class ParamMixin extends TsDsl { +export abstract class ParamMixin extends TsDsl { protected _params?: Array>; /** Adds a parameter. */ @@ -27,8 +27,4 @@ export class ParamMixin extends TsDsl { if (!this._params) return []; return this.$node(this._params); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts index d47943752..a5bd11a04 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts @@ -7,7 +7,7 @@ import { PatternTsDsl } from '../decl/pattern'; /** * Mixin providing `.array()`, `.object()`, and `.spread()` methods for defining destructuring patterns. */ -export class PatternMixin extends TsDsl { +export abstract class PatternMixin extends TsDsl { protected pattern?: PatternTsDsl; /** Defines an array binding pattern. */ @@ -34,8 +34,4 @@ export class PatternMixin extends TsDsl { protected $pattern(): ts.BindingName | undefined { return this.$node(this.pattern); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts index 146bb9ba0..b1ed253a8 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts @@ -3,7 +3,7 @@ import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; import { TsDsl } from '../base'; -export class TypeArgsMixin extends TsDsl { +export abstract class TypeArgsMixin extends TsDsl { protected _generics?: Array>; /** Adds a single type argument (e.g. `string` in `Foo`). */ @@ -22,8 +22,4 @@ export class TypeArgsMixin extends TsDsl { protected $generics(): ReadonlyArray | undefined { return this.$type(this._generics); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts index bd497ecf5..c3d917d42 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts @@ -4,7 +4,7 @@ import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { TypeParamTsDsl } from '../type/param'; -export class TypeParamsMixin extends TsDsl { +export abstract class TypeParamsMixin extends TsDsl { protected _generics?: Array>; /** Adds a single type parameter (e.g. `T` in `Array`). */ @@ -29,8 +29,4 @@ export class TypeParamsMixin extends TsDsl { return this.$node(node); }); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/value.ts b/packages/openapi-ts/src/ts-dsl/mixins/value.ts index 02baf9684..d008221b4 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/value.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/value.ts @@ -3,7 +3,7 @@ import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -export class ValueMixin extends TsDsl { +export abstract class ValueMixin extends TsDsl { protected value?: string | MaybeTsDsl; /** Sets the initializer expression (e.g. `= expr`). */ @@ -15,8 +15,4 @@ export class ValueMixin extends TsDsl { protected $value(): ts.Expression | undefined { return this.$node(this.value); } - - $render(): ts.Node { - throw new Error('noop'); - } } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index 7f8766088..417bb0c6b 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -25,6 +26,11 @@ export class IfTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.IfStatement { if (!this._condition) throw new Error('Missing condition in if'); diff --git a/packages/openapi-ts/src/ts-dsl/stmt/return.ts b/packages/openapi-ts/src/ts-dsl/stmt/return.ts index 483f96abd..a0f3acfe3 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/return.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/return.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -14,6 +15,11 @@ export class ReturnTsDsl extends TsDsl { this._returnExpr = expr; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.ReturnStatement { return ts.factory.createReturnStatement(this.$node(this._returnExpr)); } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts index 425b5eafa..9e8be4025 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -10,6 +11,11 @@ export class StmtTsDsl extends TsDsl { this._inner = inner; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.Statement { const node = this.$node(this._inner); return ts.isStatement(node) diff --git a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts index 16ef8cb65..9156899b7 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -20,6 +21,11 @@ export class ThrowTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.ThrowStatement { const errorNode = this.$node(this.error); const messageNode = this.$node(this.msg ? [this.msg] : []).map((expr) => diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index 14e33d14b..7ba8f1599 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -20,9 +21,18 @@ export class VarTsDsl extends TsDsl { protected name?: string; protected _type?: TypeTsDsl; - constructor(name?: string) { + constructor(name?: Symbol | string) { super(); - this.name = name; + if (name) { + if (typeof name === 'string') { + this.name = name; + } else { + this.name = name.finalName; + this.symbol = name; + this.symbol.setKind('var'); + this.symbol.setRootNode(this); + } + } } const(): this { @@ -35,6 +45,11 @@ export class VarTsDsl extends TsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the variable type. */ type(type: string | TypeTsDsl): this { this._type = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); diff --git a/packages/openapi-ts/src/ts-dsl/token.ts b/packages/openapi-ts/src/ts-dsl/token.ts index 996fab607..59bf21963 100644 --- a/packages/openapi-ts/src/ts-dsl/token.ts +++ b/packages/openapi-ts/src/ts-dsl/token.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from './base'; @@ -55,6 +56,11 @@ export class TokenTsDsl extends TsDsl< ); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Renders the final token */ $render(): ts.Token { if (!this._kind) { diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index 4fa0885ef..3e7151979 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -9,16 +10,28 @@ import { createModifierAccessor, ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; export class TypeAliasTsDsl extends TsDsl { - protected value?: MaybeTsDsl; protected modifiers = createModifierAccessor(this); protected name: string; + protected value?: MaybeTsDsl; - constructor(name: string, fn?: (t: TypeAliasTsDsl) => void) { + constructor(name: Symbol | string, fn?: (t: TypeAliasTsDsl) => void) { super(); - this.name = name; + if (typeof name === 'string') { + this.name = name; + } else { + this.name = name.finalName; + this.symbol = name; + this.symbol.setKind('type'); + this.symbol.setRootNode(this); + } fn?.(this); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the type expression on the right-hand side of `= ...`. */ type(node: MaybeTsDsl): this { this.value = node; diff --git a/packages/openapi-ts/src/ts-dsl/type/and.ts b/packages/openapi-ts/src/ts-dsl/type/and.ts index fbbb0085e..7c52a6ca6 100644 --- a/packages/openapi-ts/src/ts-dsl/type/and.ts +++ b/packages/openapi-ts/src/ts-dsl/type/and.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -10,6 +11,11 @@ export class TypeAndTsDsl extends TypeTsDsl { this.types(...nodes); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + types(...nodes: Array): this { this._types.push(...nodes); return this; diff --git a/packages/openapi-ts/src/ts-dsl/type/attr.ts b/packages/openapi-ts/src/ts-dsl/type/attr.ts index d04a64e0d..c89a10636 100644 --- a/packages/openapi-ts/src/ts-dsl/type/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/attr.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -7,17 +8,17 @@ import { mixin } from '../mixins/apply'; import { TypeExprMixin } from '../mixins/type-expr'; export class TypeAttrTsDsl extends TypeTsDsl { - protected _base?: string | MaybeTsDsl; - protected right: string | ts.Identifier; + protected _base?: Symbol | string | MaybeTsDsl; + protected right: Symbol | string | ts.Identifier; constructor( - base: string | MaybeTsDsl, + base: Symbol | string | MaybeTsDsl, right: string | ts.Identifier, ); - constructor(right: string | ts.Identifier); + constructor(right: Symbol | string | ts.Identifier); constructor( - baseOrRight: string | MaybeTsDsl, - maybeRight?: string | ts.Identifier, + baseOrRight: Symbol | string | MaybeTsDsl, + maybeRight?: Symbol | string | ts.Identifier, ) { super(); if (maybeRight) { @@ -29,20 +30,31 @@ export class TypeAttrTsDsl extends TypeTsDsl { } } - base(base?: string | MaybeTsDsl): this { + base(base?: Symbol | string | MaybeTsDsl): this { this._base = base; return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.QualifiedName { if (!this._base) { throw new Error('TypeAttrTsDsl: missing base for qualified name'); } - const left = this.$node(this._base); + const left = + typeof this._base !== 'string' && this._base && 'id' in this._base + ? this.$node(this._base.finalName) + : this.$node(this._base); if (!ts.isEntityName(left)) { throw new Error('TypeAttrTsDsl: base must be an EntityName'); } - const right = this.$maybeId(this.right); + const right = + typeof this.right !== 'string' && this.right && 'id' in this.right + ? this.$maybeId(this.right.finalName) + : this.$maybeId(this.right); return ts.factory.createQualifiedName(left, right); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index 6b6204266..502e4f40c 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -11,22 +12,28 @@ import { import { TypeAttrTsDsl } from './attr'; export class TypeExprTsDsl extends TypeTsDsl { - protected _exprInput?: string | ts.Identifier | TypeAttrTsDsl; + protected _exprInput?: Symbol | string | TypeAttrTsDsl; constructor(); constructor(fn: (t: TypeExprTsDsl) => void); - constructor(name: string); - constructor(name: string, fn?: (t: TypeExprTsDsl) => void); + constructor(name: Symbol | string); + constructor(name: Symbol | string, fn?: (t: TypeExprTsDsl) => void); constructor( - nameOrFn?: string | ((t: TypeExprTsDsl) => void), + name?: Symbol | string | ((t: TypeExprTsDsl) => void), fn?: (t: TypeExprTsDsl) => void, ) { super(); - if (typeof nameOrFn === 'string') { - this._exprInput = nameOrFn; - fn?.(this); - } else { - nameOrFn?.(this); + if (name) { + if (typeof name === 'function') { + name(this); + } else { + this._exprInput = name; + if (typeof name !== 'string') { + const symbol = this.getRootSymbol(); + if (symbol) symbol.addDependency(name); + } + fn?.(this); + } } } @@ -36,15 +43,25 @@ export class TypeExprTsDsl extends TypeTsDsl { right instanceof TypeAttrTsDsl ? right.base(this._exprInput) : new TypeAttrTsDsl(this._exprInput!, right); + this._exprInput = this._exprInput.setParent(this); return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TypeReferenceNode { - if (!this._exprInput) - throw new Error('TypeExpr must have either an expression or an object'); + if (!this._exprInput) throw new Error('TypeExpr must have an expression'); + const typeName = + typeof this._exprInput === 'string' || + this._exprInput instanceof TypeAttrTsDsl + ? this.$type(this._exprInput) + : this._exprInput.finalName; return ts.factory.createTypeReferenceNode( // @ts-expect-error --- need to fix types - this.$type(this._exprInput), + typeName, this.$generics(), ); } diff --git a/packages/openapi-ts/src/ts-dsl/type/func.ts b/packages/openapi-ts/src/ts-dsl/type/func.ts index 958f64e37..e7fbc1a25 100644 --- a/packages/openapi-ts/src/ts-dsl/type/func.ts +++ b/packages/openapi-ts/src/ts-dsl/type/func.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -17,6 +18,11 @@ export class TypeFuncTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.FunctionTypeNode { if (this._returns === undefined) { throw new Error('Missing return type in function type DSL'); diff --git a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts index 0ba632ab5..ea16327df 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -32,6 +33,11 @@ export class TypeIdxSigTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the property type. */ type(type: Type): this { this._type = type; diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index a43300bdb..be2b33041 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -32,6 +33,11 @@ export class TypeIdxTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.IndexedAccessTypeNode { return ts.factory.createIndexedAccessTypeNode( this.$type(this._base), diff --git a/packages/openapi-ts/src/ts-dsl/type/literal.ts b/packages/openapi-ts/src/ts-dsl/type/literal.ts index 7e1f3caf5..4fd5578bf 100644 --- a/packages/openapi-ts/src/ts-dsl/type/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/type/literal.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -11,6 +12,11 @@ export class TypeLiteralTsDsl extends TypeTsDsl { this.value = value; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.LiteralTypeNode { return ts.factory.createLiteralTypeNode( this.$node(new LiteralTsDsl(this.value)), diff --git a/packages/openapi-ts/src/ts-dsl/type/mapped.ts b/packages/openapi-ts/src/ts-dsl/type/mapped.ts index 946235799..208a6e518 100644 --- a/packages/openapi-ts/src/ts-dsl/type/mapped.ts +++ b/packages/openapi-ts/src/ts-dsl/type/mapped.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -65,6 +66,11 @@ export class TypeMappedTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the mapped value type: `[K in X]: ValueType` */ type(type: string | MaybeTsDsl): this { this._type = type; diff --git a/packages/openapi-ts/src/ts-dsl/type/object.ts b/packages/openapi-ts/src/ts-dsl/type/object.ts index 26fbf0ee6..36b526dde 100644 --- a/packages/openapi-ts/src/ts-dsl/type/object.ts +++ b/packages/openapi-ts/src/ts-dsl/type/object.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -31,6 +32,11 @@ export class TypeObjectTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TypeNode { return ts.factory.createTypeLiteralNode(this.$node(this.props)); } diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index 674b5bc20..5f94206ac 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -46,6 +47,11 @@ export class TypeOperatorTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the target type of the operator. */ type(type: Type): this { this._type = type; diff --git a/packages/openapi-ts/src/ts-dsl/type/or.ts b/packages/openapi-ts/src/ts-dsl/type/or.ts index 874a82fab..6b2d4f973 100644 --- a/packages/openapi-ts/src/ts-dsl/type/or.ts +++ b/packages/openapi-ts/src/ts-dsl/type/or.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -10,6 +11,11 @@ export class TypeOrTsDsl extends TypeTsDsl { this.types(...nodes); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + types(...nodes: Array): this { this._types.push(...nodes); return this; diff --git a/packages/openapi-ts/src/ts-dsl/type/param.ts b/packages/openapi-ts/src/ts-dsl/type/param.ts index 50b43a28e..94a82c04a 100644 --- a/packages/openapi-ts/src/ts-dsl/type/param.ts +++ b/packages/openapi-ts/src/ts-dsl/type/param.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -27,6 +28,11 @@ export class TypeParamTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TypeParameterDeclaration { if (!this.name) throw new Error('Missing type name'); return ts.factory.createTypeParameterDeclaration( diff --git a/packages/openapi-ts/src/ts-dsl/type/prop.ts b/packages/openapi-ts/src/ts-dsl/type/prop.ts index 393232508..c7f27cc29 100644 --- a/packages/openapi-ts/src/ts-dsl/type/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/type/prop.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -21,6 +22,11 @@ export class TypePropTsDsl extends TypeTsDsl { fn(this); } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Sets the property type. */ type(type: string | MaybeTsDsl): this { this._type = type; diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index 987bd31de..059054964 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -17,6 +18,11 @@ export class TypeQueryTsDsl extends TypeTsDsl { this._expr = expr; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TypeQueryNode { const expr = this.$node(this._expr); return ts.factory.createTypeQueryNode(expr as unknown as ts.EntityName); diff --git a/packages/openapi-ts/src/ts-dsl/type/template.ts b/packages/openapi-ts/src/ts-dsl/type/template.ts index 5617286ca..6cbb940de 100644 --- a/packages/openapi-ts/src/ts-dsl/type/template.ts +++ b/packages/openapi-ts/src/ts-dsl/type/template.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -17,6 +18,11 @@ export class TypeTemplateTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + /** Renders a TemplateLiteralTypeNode. */ $render(): ts.TemplateLiteralTypeNode { const parts = this.$node(this.parts); diff --git a/packages/openapi-ts/src/ts-dsl/type/tuple.ts b/packages/openapi-ts/src/ts-dsl/type/tuple.ts index 260c437fa..e0ab0cc65 100644 --- a/packages/openapi-ts/src/ts-dsl/type/tuple.ts +++ b/packages/openapi-ts/src/ts-dsl/type/tuple.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -15,6 +16,11 @@ export class TypeTupleTsDsl extends TypeTsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + console.log(visitor); + } + $render(): ts.TupleTypeNode { return ts.factory.createTupleTypeNode( this._elements.map((t) => this.$type(t)), From 944f14cd5744631b45ec013c7a8203aa0fc656e4 Mon Sep 17 00:00:00 2001 From: Lubos Date: Mon, 24 Nov 2025 05:55:40 +0800 Subject: [PATCH 03/15] feat: canonical symbols --- .vscode/launch.json | 2 +- dev/openapi-ts.config.ts | 6 +- docs/index.md | 4 +- docs/public/hero.png | Bin 0 -> 1561235 bytes docs/public/images/hero-300w.png | Bin 0 -> 19495 bytes docs/public/images/hero-640w.png | Bin 0 -> 62544 bytes docs/public/images/hero-920w.png | Bin 0 -> 134887 bytes docs/scripts/optimize-images.js | 30 +- packages/codegen-core/package.json | 4 + packages/codegen-core/src/debug.ts | 34 ++ packages/codegen-core/src/index.ts | 1 + packages/codegen-core/src/symbols/symbol.ts | 35 ++ packages/openapi-ts/README.md | 2 +- packages/openapi-ts/src/cli.ts | 2 +- packages/openapi-ts/src/ts-dsl/base.ts | 80 +++- packages/openapi-ts/src/ts-dsl/decl/class.ts | 56 +-- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 15 +- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 22 +- packages/openapi-ts/src/ts-dsl/decl/field.ts | 45 +-- packages/openapi-ts/src/ts-dsl/decl/func.ts | 73 ++-- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 55 ++- packages/openapi-ts/src/ts-dsl/decl/init.ts | 48 +-- packages/openapi-ts/src/ts-dsl/decl/member.ts | 12 +- packages/openapi-ts/src/ts-dsl/decl/method.ts | 63 ++-- packages/openapi-ts/src/ts-dsl/decl/param.ts | 18 +- .../openapi-ts/src/ts-dsl/decl/pattern.ts | 8 +- packages/openapi-ts/src/ts-dsl/decl/setter.ts | 55 ++- packages/openapi-ts/src/ts-dsl/expr/array.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/as.ts | 11 +- packages/openapi-ts/src/ts-dsl/expr/attr.ts | 26 +- packages/openapi-ts/src/ts-dsl/expr/await.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/binary.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/call.ts | 18 +- packages/openapi-ts/src/ts-dsl/expr/expr.ts | 18 +- packages/openapi-ts/src/ts-dsl/expr/id.ts | 7 +- .../openapi-ts/src/ts-dsl/expr/literal.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/new.ts | 13 +- packages/openapi-ts/src/ts-dsl/expr/object.ts | 19 +- packages/openapi-ts/src/ts-dsl/expr/prefix.ts | 8 +- packages/openapi-ts/src/ts-dsl/expr/prop.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/regexp.ts | 8 +- .../openapi-ts/src/ts-dsl/expr/template.ts | 9 +- .../openapi-ts/src/ts-dsl/expr/ternary.ts | 7 +- packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 12 +- packages/openapi-ts/src/ts-dsl/layout/doc.ts | 8 +- packages/openapi-ts/src/ts-dsl/layout/hint.ts | 8 +- .../openapi-ts/src/ts-dsl/layout/newline.ts | 8 +- packages/openapi-ts/src/ts-dsl/layout/note.ts | 8 +- .../openapi-ts/src/ts-dsl/mixins/apply.ts | 25 -- packages/openapi-ts/src/ts-dsl/mixins/args.ts | 47 ++- packages/openapi-ts/src/ts-dsl/mixins/as.ts | 20 +- .../openapi-ts/src/ts-dsl/mixins/decorator.ts | 41 +- packages/openapi-ts/src/ts-dsl/mixins/do.ts | 36 +- packages/openapi-ts/src/ts-dsl/mixins/doc.ts | 30 +- packages/openapi-ts/src/ts-dsl/mixins/expr.ts | 58 +-- packages/openapi-ts/src/ts-dsl/mixins/hint.ts | 30 +- .../openapi-ts/src/ts-dsl/mixins/layout.ts | 63 ++-- .../openapi-ts/src/ts-dsl/mixins/modifiers.ts | 349 +++++++++++++----- packages/openapi-ts/src/ts-dsl/mixins/note.ts | 30 +- .../openapi-ts/src/ts-dsl/mixins/operator.ts | 154 ++++---- .../openapi-ts/src/ts-dsl/mixins/optional.ts | 36 +- .../openapi-ts/src/ts-dsl/mixins/param.ts | 53 ++- .../openapi-ts/src/ts-dsl/mixins/pattern.ts | 65 ++-- .../openapi-ts/src/ts-dsl/mixins/type-args.ts | 46 ++- .../openapi-ts/src/ts-dsl/mixins/type-expr.ts | 109 ++++-- .../src/ts-dsl/mixins/type-params.ts | 68 ++-- .../openapi-ts/src/ts-dsl/mixins/types.d.ts | 6 + .../openapi-ts/src/ts-dsl/mixins/value.ts | 31 +- packages/openapi-ts/src/ts-dsl/stmt/if.ts | 12 +- packages/openapi-ts/src/ts-dsl/stmt/return.ts | 14 +- packages/openapi-ts/src/ts-dsl/stmt/stmt.ts | 7 +- packages/openapi-ts/src/ts-dsl/stmt/throw.ts | 7 +- packages/openapi-ts/src/ts-dsl/stmt/var.ts | 41 +- packages/openapi-ts/src/ts-dsl/token.ts | 9 +- packages/openapi-ts/src/ts-dsl/type/alias.ts | 23 +- packages/openapi-ts/src/ts-dsl/type/and.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/attr.ts | 12 +- packages/openapi-ts/src/ts-dsl/type/expr.ts | 15 +- packages/openapi-ts/src/ts-dsl/type/func.ts | 14 +- .../openapi-ts/src/ts-dsl/type/idx-sig.ts | 17 +- packages/openapi-ts/src/ts-dsl/type/idx.ts | 12 +- .../openapi-ts/src/ts-dsl/type/literal.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/mapped.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/object.ts | 7 +- .../openapi-ts/src/ts-dsl/type/operator.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/or.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/param.ts | 23 +- packages/openapi-ts/src/ts-dsl/type/prop.ts | 18 +- packages/openapi-ts/src/ts-dsl/type/query.ts | 12 +- .../openapi-ts/src/ts-dsl/type/template.ts | 8 +- packages/openapi-ts/src/ts-dsl/type/tuple.ts | 7 +- pnpm-lock.yaml | 7 + 92 files changed, 1402 insertions(+), 1113 deletions(-) create mode 100644 docs/public/hero.png create mode 100644 docs/public/images/hero-300w.png create mode 100644 docs/public/images/hero-640w.png create mode 100644 docs/public/images/hero-920w.png create mode 100644 packages/codegen-core/src/debug.ts delete mode 100644 packages/openapi-ts/src/ts-dsl/mixins/apply.ts create mode 100644 packages/openapi-ts/src/ts-dsl/mixins/types.d.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index edbd4ea4b..5db1d3093 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -18,7 +18,7 @@ "runtimeArgs": ["-r", "ts-node/register/transpile-only"], "program": "${workspaceFolder}/packages/openapi-ts/src/run.ts", "env": { - "DEBUG": "false" + "DEBUG": "heyapi:*" } } ] diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 9f2aaffb2..900cff9ec 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -39,9 +39,9 @@ export default defineConfig(() => { '3.1.x', // 'circular.yaml', // 'dutchie.json', - 'enum-names-values.yaml', + // 'enum-names-values.yaml', // 'invalid', - // 'full.yaml', + 'full.yaml', // 'object-property-names.yaml', // 'openai.yaml', // 'opencode.yaml', @@ -83,7 +83,7 @@ export default defineConfig(() => { // 'https://somefakedomain.com/openapi.yaml', ], logs: { - // level: 'debug', + level: 'silent', path: './logs', }, // name: 'foo', diff --git a/docs/index.md b/docs/index.md index 9513b13c1..e5d4b0e1a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,8 +15,8 @@ hero: text: Roadmap theme: alt image: - alt: Two people looking at the blueprint - src: /images/blueprint-640w.png + alt: Two people looking at the TypeScript logo + src: /images/hero-920w.png features: - icon: diff --git a/docs/public/hero.png b/docs/public/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..84a2da570518ed48538343800abd53b04fd7d011 GIT binary patch literal 1561235 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

@olup;Rn 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%0D~X^Tt{d7Egy)Uf+2zvW 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

_x3WgC27QWoAIw<|oXkikgtd2#Lqt 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�@r?rfDe)M_ zydK;~<3v{F^f&m1-biBD3c&yu*ffMHY7Za~%~Kz3oNtO+t)Q+=D?N}>c{L947%2r* zYjs9O*_`A3lEtEewjLLzP!8=DeMPXeM4f`iDik2$?UH@eifLBuRjP#&;kga)3ekw6 z<|@3AfF=(d-}uy%gm3_c$l@CG$YQQ2$LJ{(g#aCX0ofK$e|7ceulb48dd^L~FaMYK z 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.LK4WyZ@Vo?>6EZ#0!SlclQn85LJ>KT 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 z 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

UN6}Dy`E1NHBM7+vm(PS-Rn(< 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

k7f@KZpVRkwGQB$Ed7s%FIg5#); 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%0DS-;!T$^G9_x89g-j*pPol{OC}> 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 literal 0 HcmV?d00001 diff --git a/docs/scripts/optimize-images.js b/docs/scripts/optimize-images.js index fca42f964..fc10d69ef 100644 --- a/docs/scripts/optimize-images.js +++ b/docs/scripts/optimize-images.js @@ -31,19 +31,23 @@ const images = [ ], source: 'bricks.png', }, - // { - // sizes: [ - // { - // formats: ['png'], - // width: 300, - // }, - // { - // formats: ['png'], - // width: 640, - // }, - // ], - // source: 'hero.png', - // }, + { + sizes: [ + { + formats: ['png'], + width: 300, + }, + { + formats: ['png'], + width: 640, + }, + { + formats: ['png'], + width: 920, + }, + ], + source: 'hero.png', + }, { sizes: [ { diff --git a/packages/codegen-core/package.json b/packages/codegen-core/package.json index 45ce16924..d579f19f8 100644 --- a/packages/codegen-core/package.json +++ b/packages/codegen-core/package.json @@ -60,6 +60,10 @@ "engines": { "node": ">=20.19.0" }, + "dependencies": { + "ansi-colors": "4.1.3", + "color-support": "1.1.3" + }, "peerDependencies": { "typescript": ">=5.5.3" }, diff --git a/packages/codegen-core/src/debug.ts b/packages/codegen-core/src/debug.ts new file mode 100644 index 000000000..fb6e95289 --- /dev/null +++ b/packages/codegen-core/src/debug.ts @@ -0,0 +1,34 @@ +import colors from 'ansi-colors'; +// @ts-expect-error +import colorSupport from 'color-support'; + +colors.enabled = colorSupport().hasBasic; + +const DEBUG_GROUPS = { + dsl: colors.cyanBright, + registry: colors.blueBright, + symbol: colors.magentaBright, +} as const; + +export function debug(message: string, group: keyof typeof DEBUG_GROUPS) { + const value = process.env.DEBUG; + if (!value) return; + + const groups = value.split(",").map(x => x.trim().toLowerCase()); + + if ( + !( + groups.includes("*") || + groups.includes("heyapi:*") || + groups.includes(`heyapi:${group}`) || + groups.includes(group) + ) + ) { + return; + } + + const color = DEBUG_GROUPS[group] ?? colors.whiteBright; + const prefix = color(`heyapi:${group}`); + + console.debug(`${prefix} ${message}`); +} diff --git a/packages/codegen-core/src/index.ts b/packages/codegen-core/src/index.ts index 7fc9b52bc..8fdab76f6 100644 --- a/packages/codegen-core/src/index.ts +++ b/packages/codegen-core/src/index.ts @@ -1,6 +1,7 @@ export type { IBiMap as BiMap } from './bimap/types'; export type { IBinding as Binding } from './bindings/types'; export { createBinding, mergeBindings } from './bindings/utils'; +export { debug } from './debug'; export type { IProjectRenderMeta as ProjectRenderMeta, ISymbolMeta as SymbolMeta, diff --git a/packages/codegen-core/src/symbols/symbol.ts b/packages/codegen-core/src/symbols/symbol.ts index 47d78f495..9f06eecba 100644 --- a/packages/codegen-core/src/symbols/symbol.ts +++ b/packages/codegen-core/src/symbols/symbol.ts @@ -1,3 +1,4 @@ +import { debug } from '../debug'; import type { ISymbolMeta } from '../extensions'; import type { IFileOut } from '../files/types'; import { wrapId } from '../renderer/utils'; @@ -171,6 +172,9 @@ export class Symbol { ); } + /** + * Custom file path resolver, if provided. + */ get getFilePath(): ((symbol: Symbol) => string | undefined) | undefined { return this.canonical._getFilePath; } @@ -196,6 +200,9 @@ export class Symbol { return this.canonical._meta; } + /** + * User-intended name before aliasing or conflict resolution. + */ get name(): string { return this.canonical._name; } @@ -211,6 +218,7 @@ export class Symbol { * Add a direct dependency on another symbol. */ addDependency(symbol: Symbol): void { + this.assertCanonical(); if (symbol !== this) this._dependencies.add(symbol); } @@ -232,6 +240,7 @@ export class Symbol { * @param exported — Whether the symbol is exported. */ setExported(exported: boolean): void { + this.assertCanonical(); this._exported = exported; } @@ -241,6 +250,7 @@ export class Symbol { * @param list — Source files re‑exporting this symbol. */ setExportFrom(list: ReadonlyArray): void { + this.assertCanonical(); this._exportFrom = list; } @@ -250,6 +260,7 @@ export class Symbol { * This may only be set once. */ setFile(file: IFileOut): void { + this.assertCanonical(); if (this._file && this._file !== file) { throw new Error('Symbol is already assigned to a different file.'); } @@ -262,6 +273,7 @@ export class Symbol { * This may only be set once. */ setFinalName(name: string): void { + this.assertCanonical(); if (this._finalName && this._finalName !== name) { throw new Error('Symbol finalName has already been resolved.'); } @@ -274,6 +286,7 @@ export class Symbol { * @param kind — The import strategy (named/default/namespace). */ setImportKind(kind: SymbolImportKind): void { + this.assertCanonical(); this._importKind = kind; } @@ -283,6 +296,7 @@ export class Symbol { * @param kind — The new symbol kind. */ setKind(kind: SymbolKind): void { + this.assertCanonical(); this._kind = kind; } @@ -292,6 +306,7 @@ export class Symbol { * @param name — The new name. */ setName(name: string): void { + this.assertCanonical(); this._name = name; } @@ -301,6 +316,7 @@ export class Symbol { * This may only be set once. */ setRootNode(node: ISyntaxNode): void { + this.assertCanonical(); if (this._rootNode && this._rootNode !== node) { throw new Error('Symbol is already bound to a different root DSL node.'); } @@ -313,4 +329,23 @@ export class Symbol { toString(): string { return `[Symbol ${this.name}#${this.id}]`; } + + /** + * Ensures this symbol is canonical before allowing mutation. + * + * A symbol that has been marked as a stub (i.e., its `_canonical` points + * to a different symbol) may not be mutated. This guard throws an error + * if any setter attempts to modify a stub, preventing accidental writes + * to non‑canonical instances. + * + * @throws {Error} If the symbol is a stub and is being mutated. + * @private + */ + private assertCanonical(): void { + if (this._canonical && this._canonical !== this) { + const message = `Illegal mutation of stub symbol ${this.toString()} → canonical: ${this._canonical.toString()}`; + debug(message, "symbol"); + throw new Error(message); + } + } } diff --git a/packages/openapi-ts/README.md b/packages/openapi-ts/README.md index 8156356e3..a04fefe05 100644 --- a/packages/openapi-ts/README.md +++ b/packages/openapi-ts/README.md @@ -1,5 +1,5 @@

diff --git a/packages/openapi-ts/src/cli.ts b/packages/openapi-ts/src/cli.ts index a8517762d..75f528a46 100644 --- a/packages/openapi-ts/src/cli.ts +++ b/packages/openapi-ts/src/cli.ts @@ -85,7 +85,7 @@ export const runCli = async (): Promise => { } : {}; - if (userConfig.debug || stringToBoolean(process.env.DEBUG)) { + if (userConfig.debug) { (userConfig.logs as Record).level = 'debug'; delete userConfig.debug; } else if (userConfig.silent) { diff --git a/packages/openapi-ts/src/ts-dsl/base.ts b/packages/openapi-ts/src/ts-dsl/base.ts index aab3fce87..a9c1e6f0d 100644 --- a/packages/openapi-ts/src/ts-dsl/base.ts +++ b/packages/openapi-ts/src/ts-dsl/base.ts @@ -1,5 +1,6 @@ // TODO: symbol should be protected, but needs to be public to satisfy types import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import { debug } from '@hey-api/codegen-core'; import ts from 'typescript'; export type MaybeArray = T | ReadonlyArray; @@ -9,15 +10,16 @@ export interface ITsDsl extends SyntaxNode { $render(): T; } +// @deprecated export type Constructor = new (...args: ReadonlyArray) => T; export abstract class TsDsl implements ITsDsl { + /** Render this DSL node into a concrete TypeScript AST node. */ + protected abstract _render(): T; + /** Walk this node and its children with a visitor. */ abstract traverse(visitor: (node: SyntaxNode) => void): void; - /** Render this DSL node into a concrete TypeScript AST node. */ - abstract $render(): T; - /** Parent DSL node in the constructed syntax tree. */ protected parent?: TsDsl; @@ -99,6 +101,14 @@ export abstract class TsDsl implements ITsDsl { return this; } + /** Render this DSL node into a concrete TypeScript AST node. */ + $render(): T { + if (!this.parent) { + this._validate(); + } + return this._render(); + } + /** Returns all locally declared names within this node. */ getLocalNames(): Iterable { return []; @@ -118,10 +128,17 @@ export abstract class TsDsl implements ITsDsl { /** Assigns the parent DSL node, enforcing a single-parent invariant. */ setParent(parent: TsDsl): this { if (this.parent && this.parent !== parent) { - throw new Error( - `DSL node already has a parent (${this.parent.constructor.name}); cannot reassign to ${parent.constructor.name}.`, - ); + const message = `${this.constructor.name} already had a parent (${this.parent.constructor.name}), new parent attempted: ${parent.constructor.name}`; + debug(message, 'dsl'); + throw new Error(message); + } + + if (this.symbol) { + const message = `${this.constructor.name} has BOTH a symbol and a parent. This violates DSL invariants.`; + debug(message, 'dsl'); + throw new Error(message); } + this.parent = parent; return this; } @@ -175,14 +192,13 @@ export abstract class TsDsl implements ITsDsl { } /** Returns the root symbol associated with this DSL subtree. */ - protected getRootSymbol(): Symbol | undefined { - // eslint-disable-next-line @typescript-eslint/no-this-alias - let n: TsDsl | undefined = this; - while (n) { - if (n.symbol) return n.symbol; - n = n.parent; - } - return undefined; + protected getRootSymbol(): Symbol { + if (!this.parent && !this.symbol) { + const message = `${this.constructor.name} has neither a parent nor a symbol — root symbol resolution failed.`; + debug(message, 'dsl'); + throw new Error(message); + } + return this.parent ? this.parent.getRootSymbol() : this.symbol!.canonical; } /** Unwraps nested DSL nodes into raw TypeScript AST nodes. */ @@ -191,6 +207,42 @@ export abstract class TsDsl implements ITsDsl { value instanceof TsDsl ? value.$render() : value ) as I extends TsDsl ? N : I; } + + /** Validate DSL invariants. */ + protected _validate(): void { + if (!this.parent && !this.symbol) { + const message = `${this.constructor.name}: top-level DSL node has no symbol`; + debug(message, 'dsl'); + throw new Error(message); + } + + if (this.parent && this.symbol) { + const message = `${this.constructor.name}: non-top-level node must not have a symbol`; + debug(message, 'dsl'); + throw new Error(message); + } + + if (this.parent === undefined && this.symbol === undefined) { + const message = `${this.constructor.name}: non-root DSL node is missing a parent`; + debug(message, 'dsl'); + throw new Error(message); + } + + if (this.symbol && this.symbol.canonical !== this.symbol) { + const message = `${this.constructor.name}: DSL node is holding a non-canonical (stub) symbol`; + debug(message, 'dsl'); + throw new Error(message); + } + + this.traverse((node) => { + const dsl = node as TsDsl; + if (dsl !== this && dsl.parent !== this) { + const message = `${dsl.constructor.name}: child node has incorrect or missing parent`; + debug(message, 'dsl'); + throw new Error(message); + } + }); + } } type NodeOfMaybe = undefined extends I diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index be9a67bf7..93faf446d 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -1,29 +1,29 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { NewlineTsDsl } from '../layout/newline'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; -import { - AbstractMixin, - createModifierAccessor, - DefaultMixin, - ExportMixin, -} from '../mixins/modifiers'; +import { AbstractMixin, DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; import { FieldTsDsl } from './field'; import { InitTsDsl } from './init'; import { MethodTsDsl } from './method'; -export class ClassTsDsl extends TsDsl { +const Mixed = AbstractMixin( + DecoratorMixin( + DefaultMixin( + DocMixin(ExportMixin(TypeParamsMixin(TsDsl))), + ), + ), +); + +export class ClassTsDsl extends Mixed { protected baseClass?: Symbol | string; protected body: Array> = []; - protected modifiers = createModifierAccessor(this); - protected name: string; + protected name: Symbol | string; constructor(name: Symbol | string) { super(); @@ -31,7 +31,7 @@ export class ClassTsDsl extends TsDsl { this.name = name; return; } - this.name = name.finalName; + this.name = name; this.symbol = name; this.symbol.setKind('class'); this.symbol.setRootNode(this); @@ -40,7 +40,7 @@ export class ClassTsDsl extends TsDsl { /** Adds one or more class members (fields, methods, etc.). */ do(...items: ReadonlyArray>): this { for (const item of items) { - if (item && typeof item === 'object' && 'setParent' in item) { + if (typeof item === 'object' && 'setParent' in item) { item.setParent(this); } // @ts-expect-error --- IGNORE --- @@ -54,8 +54,7 @@ export class ClassTsDsl extends TsDsl { if (!base) return this; this.baseClass = base; if (typeof base !== 'string') { - const symbol = this.getRootSymbol(); - if (symbol) symbol.addDependency(base); + this.getRootSymbol().addDependency(base); } return this; } @@ -87,17 +86,17 @@ export class ClassTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds the `ClassDeclaration` node. */ - $render(): ts.ClassDeclaration { + protected override _render() { const body = this.$node(this.body) as ReadonlyArray; + const name = + typeof this.name === 'string' ? this.name : this.name.finalName; return ts.factory.createClassDeclaration( - [...this.$decorators(), ...this.modifiers.list()], - this.name, + [...this.$decorators(), ...this.modifiers], + name, this.$generics(), this._renderHeritage(), body, @@ -118,20 +117,3 @@ export class ClassTsDsl extends TsDsl { ]; } } - -export interface ClassTsDsl - extends AbstractMixin, - DecoratorMixin, - DefaultMixin, - DocMixin, - ExportMixin, - TypeParamsMixin {} -mixin( - ClassTsDsl, - AbstractMixin, - DecoratorMixin, - DefaultMixin, - DocMixin, - ExportMixin, - TypeParamsMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index 6ebda0b43..d181fa24b 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { ArgsMixin } from '../mixins/args'; -export class DecoratorTsDsl extends TsDsl { +const Mixed = ArgsMixin(TsDsl); + +export class DecoratorTsDsl extends Mixed { protected name: Symbol | string | MaybeTsDsl; constructor( @@ -17,18 +17,16 @@ export class DecoratorTsDsl extends TsDsl { super(); this.name = name; if (typeof name !== 'string' && 'id' in name) { - const symbol = this.getRootSymbol(); - if (symbol) symbol.addDependency(name); + this.getRootSymbol().addDependency(name); } this.args(...args); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.Decorator { + protected override _render() { const target = typeof this.name !== 'string' && 'id' in this.name ? this.$maybeId(this.name.finalName) @@ -42,6 +40,3 @@ export class DecoratorTsDsl extends TsDsl { ); } } - -export interface DecoratorTsDsl extends ArgsMixin {} -mixin(DecoratorTsDsl, ArgsMixin); diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index 69b266336..988b269ba 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -1,25 +1,20 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; -import { - ConstMixin, - createModifierAccessor, - ExportMixin, -} from '../mixins/modifiers'; +import { ConstMixin, ExportMixin } from '../mixins/modifiers'; import { EnumMemberTsDsl } from './member'; type Value = string | number | MaybeTsDsl; type ValueFn = Value | ((m: EnumMemberTsDsl) => void); -export class EnumTsDsl extends TsDsl { +const Mixed = ConstMixin(DocMixin(ExportMixin(TsDsl))); + +export class EnumTsDsl extends Mixed { private _members: Array = []; private _name: string | ts.Identifier; - protected modifiers = createModifierAccessor(this); constructor(name: Symbol | string, fn?: (e: EnumTsDsl) => void) { super(); @@ -47,20 +42,15 @@ export class EnumTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Renders the enum declaration. */ - $render(): ts.EnumDeclaration { + protected override _render() { return ts.factory.createEnumDeclaration( - this.modifiers.list(), + this.modifiers, this._name, this.$node(this._members), ); } } - -export interface EnumTsDsl extends ConstMixin, DocMixin, ExportMixin {} -mixin(EnumTsDsl, ConstMixin, DocMixin, ExportMixin); diff --git a/packages/openapi-ts/src/ts-dsl/decl/field.ts b/packages/openapi-ts/src/ts-dsl/decl/field.ts index 80ec0b6a8..29e66be60 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/field.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/field.ts @@ -1,13 +1,10 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; import { - createModifierAccessor, PrivateMixin, ProtectedMixin, PublicMixin, @@ -17,8 +14,19 @@ import { import { ValueMixin } from '../mixins/value'; import { TypeExprTsDsl } from '../type/expr'; -export class FieldTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = DecoratorMixin( + DocMixin( + PrivateMixin( + ProtectedMixin( + PublicMixin( + ReadonlyMixin(StaticMixin(ValueMixin(TsDsl))), + ), + ), + ), + ), +); + +export class FieldTsDsl extends Mixed { protected name: string; protected _type?: TypeTsDsl; @@ -34,15 +42,13 @@ export class FieldTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds the `PropertyDeclaration` node. */ - $render(): ts.PropertyDeclaration { + protected override _render() { return ts.factory.createPropertyDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], this.name, undefined, this.$type(this._type), @@ -50,24 +56,3 @@ export class FieldTsDsl extends TsDsl { ); } } - -export interface FieldTsDsl - extends DecoratorMixin, - DocMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - ReadonlyMixin, - StaticMixin, - ValueMixin {} -mixin( - FieldTsDsl, - DecoratorMixin, - DocMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - ReadonlyMixin, - StaticMixin, - ValueMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index 6d69338ac..24e741d09 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { DecoratorMixin } from '../mixins/decorator'; import { DoMixin } from '../mixins/do'; @@ -11,7 +9,6 @@ import { DocMixin } from '../mixins/doc'; import { AbstractMixin, AsyncMixin, - createModifierAccessor, PrivateMixin, ProtectedMixin, PublicMixin, @@ -23,15 +20,30 @@ import { TypeExprTsDsl } from '../type/expr'; type FuncMode = 'arrow' | 'decl' | 'expr'; -class ImplFuncTsDsl extends TsDsl< - M extends 'decl' - ? ts.FunctionDeclaration - : M extends 'expr' - ? ts.FunctionExpression - : ts.ArrowFunction -> { +const Mixed = AbstractMixin( + AsMixin( + AsyncMixin( + DecoratorMixin( + DoMixin( + DocMixin( + ParamMixin( + PrivateMixin( + ProtectedMixin( + PublicMixin( + StaticMixin(TypeParamsMixin(TsDsl)), + ), + ), + ), + ), + ), + ), + ), + ), + ), +); + +class ImplFuncTsDsl extends Mixed { protected mode?: FuncMode; - protected modifiers = createModifierAccessor(this); protected name?: string; protected _returns?: TypeTsDsl; @@ -85,12 +97,12 @@ class ImplFuncTsDsl extends TsDsl< return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): M extends 'decl' + // @ts-expect-error --- need to fix types --- + protected override _render(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression @@ -98,7 +110,7 @@ class ImplFuncTsDsl extends TsDsl< if (this.mode === 'decl') { if (!this.name) throw new Error('Function declaration requires a name'); return ts.factory.createFunctionDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], undefined, this.name, this.$generics(), @@ -110,7 +122,7 @@ class ImplFuncTsDsl extends TsDsl< if (this.mode === 'expr') { return ts.factory.createFunctionExpression( - this.modifiers.list(), + this.modifiers, undefined, this.name, this.$generics(), @@ -127,7 +139,7 @@ class ImplFuncTsDsl extends TsDsl< : ts.factory.createBlock(body, true); return ts.factory.createArrowFunction( - this.modifiers.list(), + this.modifiers, this.$generics(), this.$params(), this.$type(this._returns), @@ -137,35 +149,6 @@ class ImplFuncTsDsl extends TsDsl< } } -interface ImplFuncTsDsl - extends AbstractMixin, - AsMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, - TypeParamsMixin {} -mixin( - ImplFuncTsDsl, - AbstractMixin, - AsMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, - TypeParamsMixin, -); - export const FuncTsDsl = ImplFuncTsDsl as { new (): FuncTsDsl<'arrow'>; new (fn: (f: FuncTsDsl<'arrow'>) => void): FuncTsDsl<'arrow'>; diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 2067d9cb6..465877656 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -1,16 +1,13 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DoMixin } from '../mixins/do'; import { DocMixin } from '../mixins/doc'; -import type { AsyncMixin } from '../mixins/modifiers'; import { AbstractMixin, - createModifierAccessor, + AsyncMixin, PrivateMixin, ProtectedMixin, PublicMixin, @@ -18,8 +15,25 @@ import { } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; -export class GetterTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = AbstractMixin( + AsyncMixin( + DecoratorMixin( + DoMixin( + DocMixin( + ParamMixin( + PrivateMixin( + ProtectedMixin( + PublicMixin(StaticMixin(TsDsl)), + ), + ), + ), + ), + ), + ), + ), +); + +export class GetterTsDsl extends Mixed { protected name: string | ts.PropertyName; constructor(name: string | ts.PropertyName, fn?: (g: GetterTsDsl) => void) { @@ -28,14 +42,13 @@ export class GetterTsDsl extends TsDsl { fn?.(this); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.GetAccessorDeclaration { + protected override _render() { return ts.factory.createGetAccessorDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], this.name, this.$params(), undefined, @@ -43,27 +56,3 @@ export class GetterTsDsl extends TsDsl { ); } } - -export interface GetterTsDsl - extends AbstractMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin {} -mixin( - GetterTsDsl, - AbstractMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index 059e09502..5fdeaae9d 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -1,58 +1,40 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DoMixin } from '../mixins/do'; import { DocMixin } from '../mixins/doc'; -import { - createModifierAccessor, - PrivateMixin, - ProtectedMixin, - PublicMixin, -} from '../mixins/modifiers'; +import { PrivateMixin, ProtectedMixin, PublicMixin } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; -export class InitTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = DecoratorMixin( + DoMixin( + DocMixin( + ParamMixin( + PrivateMixin( + ProtectedMixin(PublicMixin(TsDsl)), + ), + ), + ), + ), +); +export class InitTsDsl extends Mixed { constructor(fn?: (i: InitTsDsl) => void) { super(); fn?.(this); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds the `ConstructorDeclaration` node. */ - $render(): ts.ConstructorDeclaration { + protected override _render() { return ts.factory.createConstructorDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], this.$params(), ts.factory.createBlock(this.$do(), true), ); } } - -export interface InitTsDsl - extends DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin {} -mixin( - InitTsDsl, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/decl/member.ts b/packages/openapi-ts/src/ts-dsl/decl/member.ts index c9165483d..9af12b171 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/member.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/member.ts @@ -1,17 +1,17 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; import { safeMemberName } from '../utils/prop'; type Value = string | number | MaybeTsDsl; type ValueFn = Value | ((m: EnumMemberTsDsl) => void); -export class EnumMemberTsDsl extends TsDsl { +const Mixed = DocMixin(TsDsl); + +export class EnumMemberTsDsl extends Mixed { private _name: string; private _value?: Value; @@ -25,7 +25,6 @@ export class EnumMemberTsDsl extends TsDsl { } } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -36,13 +35,10 @@ export class EnumMemberTsDsl extends TsDsl { return this; } - $render(): ts.EnumMember { + protected override _render() { return ts.factory.createEnumMember( safeMemberName(this._name), this.$node(this._value), ); } } - -export interface EnumMemberTsDsl extends DocMixin {} -mixin(EnumMemberTsDsl, DocMixin); diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index b73e5be55..73443ca07 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -1,16 +1,13 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DoMixin } from '../mixins/do'; import { DocMixin } from '../mixins/doc'; import { AbstractMixin, AsyncMixin, - createModifierAccessor, PrivateMixin, ProtectedMixin, PublicMixin, @@ -22,8 +19,29 @@ import { TypeParamsMixin } from '../mixins/type-params'; import { TokenTsDsl } from '../token'; import { TypeExprTsDsl } from '../type/expr'; -export class MethodTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = AbstractMixin( + AsyncMixin( + DecoratorMixin( + DoMixin( + DocMixin( + OptionalMixin( + ParamMixin( + PrivateMixin( + ProtectedMixin( + PublicMixin( + StaticMixin(TypeParamsMixin(TsDsl)), + ), + ), + ), + ), + ), + ), + ), + ), + ), +); + +export class MethodTsDsl extends Mixed { protected name: string; protected _returns?: TypeTsDsl; @@ -39,15 +57,13 @@ export class MethodTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds the `MethodDeclaration` node. */ - $render(): ts.MethodDeclaration { + protected override _render() { return ts.factory.createMethodDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], undefined, this.name, this._optional ? this.$node(new TokenTsDsl().optional()) : undefined, @@ -58,32 +74,3 @@ export class MethodTsDsl extends TsDsl { ); } } - -export interface MethodTsDsl - extends AbstractMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - OptionalMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, - TypeParamsMixin {} -mixin( - MethodTsDsl, - AbstractMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - OptionalMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, - TypeParamsMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/decl/param.ts b/packages/openapi-ts/src/ts-dsl/decl/param.ts index 530bc17db..c7c9113d2 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/param.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/param.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { OptionalMixin } from '../mixins/optional'; import { PatternMixin } from '../mixins/pattern'; @@ -11,7 +9,11 @@ import { ValueMixin } from '../mixins/value'; import { TokenTsDsl } from '../token'; import { TypeExprTsDsl } from '../type/expr'; -export class ParamTsDsl extends TsDsl { +const Mixed = DecoratorMixin( + OptionalMixin(PatternMixin(ValueMixin(TsDsl))), +); + +export class ParamTsDsl extends Mixed { protected name?: string; protected _type?: TypeTsDsl; @@ -28,7 +30,6 @@ export class ParamTsDsl extends TsDsl { } } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -39,7 +40,7 @@ export class ParamTsDsl extends TsDsl { return this; } - $render(): ts.ParameterDeclaration { + protected override _render() { const name = this.$pattern() ?? this.name; if (!name) throw new Error( @@ -55,10 +56,3 @@ export class ParamTsDsl extends TsDsl { ); } } - -export interface ParamTsDsl - extends DecoratorMixin, - OptionalMixin, - PatternMixin, - ValueMixin {} -mixin(ParamTsDsl, DecoratorMixin, OptionalMixin, PatternMixin, ValueMixin); diff --git a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts index f32c68534..9ab213938 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts @@ -6,10 +6,12 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; import { TokenTsDsl } from '../token'; +const Mixed = TsDsl; + /** * Builds binding patterns (e.g. `{ foo, bar }`, `[a, b, ...rest]`). */ -export class PatternTsDsl extends TsDsl { +export class PatternTsDsl extends Mixed { protected pattern?: | { kind: 'array'; values: ReadonlyArray } | { kind: 'object'; values: Record }; @@ -45,13 +47,11 @@ export class PatternTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds and returns a BindingName (ObjectBindingPattern, ArrayBindingPattern, or Identifier). */ - $render(): ts.BindingName { + protected override _render() { if (!this.pattern) { throw new Error('PatternTsDsl requires object() or array() pattern'); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index 30453fb57..01ddb3254 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -1,16 +1,13 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DecoratorMixin } from '../mixins/decorator'; import { DoMixin } from '../mixins/do'; import { DocMixin } from '../mixins/doc'; -import type { AsyncMixin } from '../mixins/modifiers'; import { AbstractMixin, - createModifierAccessor, + AsyncMixin, PrivateMixin, ProtectedMixin, PublicMixin, @@ -18,8 +15,25 @@ import { } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; -export class SetterTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = AbstractMixin( + AsyncMixin( + DecoratorMixin( + DoMixin( + DocMixin( + ParamMixin( + PrivateMixin( + ProtectedMixin( + PublicMixin(StaticMixin(TsDsl)), + ), + ), + ), + ), + ), + ), + ), +); + +export class SetterTsDsl extends Mixed { protected name: string | ts.PropertyName; constructor(name: string | ts.PropertyName, fn?: (s: SetterTsDsl) => void) { @@ -28,41 +42,16 @@ export class SetterTsDsl extends TsDsl { fn?.(this); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.SetAccessorDeclaration { + protected override _render() { return ts.factory.createSetAccessorDeclaration( - [...this.$decorators(), ...this.modifiers.list()], + [...this.$decorators(), ...this.modifiers], this.name, this.$params(), ts.factory.createBlock(this.$do(), true), ); } } - -export interface SetterTsDsl - extends AbstractMixin, - AsyncMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin {} -mixin( - SetterTsDsl, - AbstractMixin, - DecoratorMixin, - DoMixin, - DocMixin, - ParamMixin, - PrivateMixin, - ProtectedMixin, - PublicMixin, - StaticMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/expr/array.ts b/packages/openapi-ts/src/ts-dsl/expr/array.ts index b88c6b22a..86f3589ba 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/array.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/array.ts @@ -1,15 +1,15 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { LayoutMixin } from '../mixins/layout'; import { LiteralTsDsl } from './literal'; -export class ArrayTsDsl extends TsDsl { +const Mixed = AsMixin(LayoutMixin(TsDsl)); + +export class ArrayTsDsl extends Mixed { protected _elements: Array< | { expr: MaybeTsDsl; kind: 'element' } | { expr: MaybeTsDsl; kind: 'spread' } @@ -50,12 +50,11 @@ export class ArrayTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.ArrayLiteralExpression { + protected override _render() { const elements = this._elements.map((item) => { const node = this.$node(item.expr); return item.kind === 'spread' @@ -69,6 +68,3 @@ export class ArrayTsDsl extends TsDsl { ); } } - -export interface ArrayTsDsl extends AsMixin, LayoutMixin {} -mixin(ArrayTsDsl, AsMixin, LayoutMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/as.ts b/packages/openapi-ts/src/ts-dsl/expr/as.ts index 95a860678..5f2b7ae30 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/as.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/as.ts @@ -1,14 +1,14 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin, registerLazyAccessAsFactory } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; -export class AsTsDsl extends TsDsl { +const Mixed = AsMixin(ExprMixin(TsDsl)); + +export class AsTsDsl extends Mixed { protected expr: string | MaybeTsDsl; protected type: string | TypeTsDsl; @@ -26,7 +26,7 @@ export class AsTsDsl extends TsDsl { console.log(visitor); } - $render() { + protected override _render() { return ts.factory.createAsExpression( this.$node(this.expr), this.$type(this.type), @@ -34,7 +34,4 @@ export class AsTsDsl extends TsDsl { } } -export interface AsTsDsl extends AsMixin, ExprMixin {} -mixin(AsTsDsl, AsMixin, ExprMixin); - registerLazyAccessAsFactory((...args) => new AsTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index 516112fe7..6f5698c91 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; @@ -6,7 +5,6 @@ import { validTypescriptIdentifierRegExp } from '~/utils/regexp'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { ExprMixin, registerLazyAccessAttrFactory } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; @@ -14,9 +12,17 @@ import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; import { LiteralTsDsl } from './literal'; -export class AttrTsDsl extends TsDsl< - ts.PropertyAccessExpression | ts.ElementAccessExpression -> { +const Mixed = AsMixin( + ExprMixin( + OperatorMixin( + OptionalMixin( + TsDsl, + ), + ), + ), +); + +export class AttrTsDsl extends Mixed { protected left: string | MaybeTsDsl; protected right: string | ts.MemberName | number; @@ -29,12 +35,11 @@ export class AttrTsDsl extends TsDsl< this.right = right; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.PropertyAccessExpression | ts.ElementAccessExpression { + protected override _render() { const leftNode = this.$node(this.left); validTypescriptIdentifierRegExp.lastIndex = 0; if ( @@ -68,11 +73,4 @@ export class AttrTsDsl extends TsDsl< } } -export interface AttrTsDsl - extends AsMixin, - ExprMixin, - OperatorMixin, - OptionalMixin {} -mixin(AttrTsDsl, AsMixin, ExprMixin, OperatorMixin, OptionalMixin); - registerLazyAccessAttrFactory((...args) => new AttrTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/await.ts b/packages/openapi-ts/src/ts-dsl/expr/await.ts index 6acdf5673..1c9fcc5c0 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/await.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/await.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { ExprMixin, registerLazyAccessAwaitFactory } from '../mixins/expr'; -export class AwaitTsDsl extends TsDsl { +const Mixed = ExprMixin(TsDsl); + +export class AwaitTsDsl extends Mixed { protected _awaitExpr: string | MaybeTsDsl; constructor(expr: string | MaybeTsDsl) { @@ -15,17 +15,13 @@ export class AwaitTsDsl extends TsDsl { this._awaitExpr = expr; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.AwaitExpression { + protected override _render() { return ts.factory.createAwaitExpression(this.$node(this._awaitExpr)); } } -export interface AwaitTsDsl extends ExprMixin {} -mixin(AwaitTsDsl, ExprMixin); - registerLazyAccessAwaitFactory((...args) => new AwaitTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/binary.ts b/packages/openapi-ts/src/ts-dsl/expr/binary.ts index 3b450dd7a..c0b1d5ea2 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/binary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/binary.ts @@ -1,10 +1,8 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; @@ -28,7 +26,9 @@ type Operator = | '??' | '||'; -export class BinaryTsDsl extends TsDsl { +const Mixed = AsMixin(ExprMixin(TsDsl)); + +export class BinaryTsDsl extends Mixed { protected _base: Expr; protected _expr?: Expr; protected _op?: Op; @@ -120,12 +120,11 @@ export class BinaryTsDsl extends TsDsl { return this.opAndExpr('*', expr); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.BinaryExpression { + protected override _render() { if (!this._op) { throw new Error('BinaryTsDsl: missing operator'); } @@ -172,6 +171,3 @@ export class BinaryTsDsl extends TsDsl { return token; } } - -export interface BinaryTsDsl extends AsMixin, ExprMixin {} -mixin(BinaryTsDsl, AsMixin, ExprMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/call.ts b/packages/openapi-ts/src/ts-dsl/expr/call.ts index 4874426b9..ebd7bb878 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/call.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/call.ts @@ -1,16 +1,18 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { ArgsMixin } from '../mixins/args'; import { AsMixin } from '../mixins/as'; import { ExprMixin, registerLazyAccessCallFactory } from '../mixins/expr'; import { TypeArgsMixin } from '../mixins/type-args'; -export class CallTsDsl extends TsDsl { +const Mixed = ArgsMixin( + AsMixin(ExprMixin(TypeArgsMixin(TsDsl))), +); + +export class CallTsDsl extends Mixed { protected _callee: string | MaybeTsDsl; constructor( @@ -24,12 +26,11 @@ export class CallTsDsl extends TsDsl { ); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.CallExpression { + protected override _render() { return ts.factory.createCallExpression( this.$node(this._callee), this.$generics(), @@ -38,11 +39,4 @@ export class CallTsDsl extends TsDsl { } } -export interface CallTsDsl - extends ArgsMixin, - AsMixin, - ExprMixin, - TypeArgsMixin {} -mixin(CallTsDsl, ArgsMixin, AsMixin, ExprMixin, TypeArgsMixin); - registerLazyAccessCallFactory((expr, args) => new CallTsDsl(expr, ...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/expr.ts b/packages/openapi-ts/src/ts-dsl/expr/expr.ts index 0bcc06b2f..7e8c72adf 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/expr.ts @@ -1,16 +1,18 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; import { TypeExprMixin } from '../mixins/type-expr'; -export class ExprTsDsl extends TsDsl { +const Mixed = AsMixin( + ExprMixin(OperatorMixin(TypeExprMixin(TsDsl))), +); + +export class ExprTsDsl extends Mixed { protected _exprInput: string | MaybeTsDsl; constructor(id: string | MaybeTsDsl) { @@ -18,19 +20,11 @@ export class ExprTsDsl extends TsDsl { this._exprInput = id; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.Expression { + protected override _render() { return this.$node(this._exprInput); } } - -export interface ExprTsDsl - extends AsMixin, - ExprMixin, - OperatorMixin, - TypeExprMixin {} -mixin(ExprTsDsl, AsMixin, ExprMixin, OperatorMixin, TypeExprMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/id.ts b/packages/openapi-ts/src/ts-dsl/expr/id.ts index 56d9b0946..0e200cc7a 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/id.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/id.ts @@ -3,7 +3,9 @@ import ts from 'typescript'; import { TsDsl } from '../base'; -export class IdTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class IdTsDsl extends Mixed { protected name: string; constructor(name: string) { @@ -11,12 +13,11 @@ export class IdTsDsl extends TsDsl { this.name = name; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.Identifier { + protected override _render() { return ts.factory.createIdentifier(this.name); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/literal.ts b/packages/openapi-ts/src/ts-dsl/expr/literal.ts index cb1352140..9d7843ad0 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/literal.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging, @typescript-eslint/no-empty-object-type */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; import { PrefixTsDsl } from '../expr/prefix'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; -export class LiteralTsDsl extends TsDsl { +const Mixed = AsMixin(TsDsl); + +export class LiteralTsDsl extends Mixed { protected value: string | number | boolean | null; constructor(value: string | number | boolean | null) { @@ -15,12 +15,11 @@ export class LiteralTsDsl extends TsDsl { this.value = value; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.LiteralTypeNode['literal'] { + protected override _render() { if (typeof this.value === 'boolean') { return this.value ? ts.factory.createTrue() : ts.factory.createFalse(); } @@ -37,6 +36,3 @@ export class LiteralTsDsl extends TsDsl { throw new Error(`Unsupported literal: ${String(this.value)}`); } } - -export interface LiteralTsDsl extends AsMixin {} -mixin(LiteralTsDsl, AsMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/new.ts b/packages/openapi-ts/src/ts-dsl/expr/new.ts index b4d15a075..0e8298404 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/new.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/new.ts @@ -1,15 +1,15 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { ArgsMixin } from '../mixins/args'; import { ExprMixin } from '../mixins/expr'; import { TypeArgsMixin } from '../mixins/type-args'; -export class NewTsDsl extends TsDsl { +const Mixed = ArgsMixin(ExprMixin(TypeArgsMixin(TsDsl))); + +export class NewTsDsl extends Mixed { protected classExpr: string | MaybeTsDsl; constructor( @@ -21,13 +21,11 @@ export class NewTsDsl extends TsDsl { this.args(...args); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds the `NewExpression` node. */ - $render(): ts.NewExpression { + protected override _render() { return ts.factory.createNewExpression( this.$node(this.classExpr), this.$generics(), @@ -35,6 +33,3 @@ export class NewTsDsl extends TsDsl { ); } } - -export interface NewTsDsl extends ArgsMixin, ExprMixin, TypeArgsMixin {} -mixin(NewTsDsl, ArgsMixin, ExprMixin, TypeArgsMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/object.ts b/packages/openapi-ts/src/ts-dsl/expr/object.ts index 2f014ddbb..b3672fe7d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/object.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/object.ts @@ -1,10 +1,8 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; import { HintMixin } from '../mixins/hint'; @@ -16,7 +14,11 @@ type Stmt = string | MaybeTsDsl; type ExprFn = Expr | ((p: ObjectPropTsDsl) => void); type StmtFn = Stmt | ((p: ObjectPropTsDsl) => void); -export class ObjectTsDsl extends TsDsl { +const Mixed = AsMixin( + ExprMixin(HintMixin(LayoutMixin(TsDsl))), +); + +export class ObjectTsDsl extends Mixed { protected _props: Array = []; constructor(...props: Array) { @@ -72,23 +74,14 @@ export class ObjectTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Builds and returns the object literal expression. */ - $render(): ts.ObjectLiteralExpression { + protected override _render() { return ts.factory.createObjectLiteralExpression( this.$node(this._props), this.$multiline(this._props.length), ); } } - -export interface ObjectTsDsl - extends AsMixin, - ExprMixin, - HintMixin, - LayoutMixin {} -mixin(ObjectTsDsl, AsMixin, ExprMixin, HintMixin, LayoutMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts index cb99d8e14..5d3ea0529 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts @@ -4,7 +4,9 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -export class PrefixTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class PrefixTsDsl extends Mixed { protected _expr?: string | MaybeTsDsl; protected _op?: ts.PrefixUnaryOperator; @@ -41,13 +43,11 @@ export class PrefixTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Renders the prefix unary expression node. */ - $render(): ts.PrefixUnaryExpression { + protected override _render() { if (!this._expr) { throw new Error('Missing expression for prefix unary expression'); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/prop.ts b/packages/openapi-ts/src/ts-dsl/expr/prop.ts index 1dca3ba01..dd83e622d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prop.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; @@ -6,7 +5,6 @@ import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { GetterTsDsl } from '../decl/getter'; import { SetterTsDsl } from '../decl/setter'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; import { safePropName } from '../utils/prop'; import { IdTsDsl } from './id'; @@ -22,7 +20,9 @@ type Meta = | { kind: 'setter'; name: string } | { kind: 'spread'; name?: undefined }; -export class ObjectPropTsDsl extends TsDsl { +const Mixed = DocMixin(TsDsl); + +export class ObjectPropTsDsl extends Mixed { protected _value?: Expr | Stmt; protected meta: Meta; @@ -36,7 +36,6 @@ export class ObjectPropTsDsl extends TsDsl { return this.missingRequiredCalls().length === 0; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -50,7 +49,7 @@ export class ObjectPropTsDsl extends TsDsl { return this; } - $render(): ts.ObjectLiteralElementLike { + protected override _render() { this.$validate(); const node = this.$node(this._value); if (this.meta.kind === 'spread') { @@ -104,6 +103,3 @@ export class ObjectPropTsDsl extends TsDsl { return missing; } } - -export interface ObjectPropTsDsl extends DocMixin {} -mixin(ObjectPropTsDsl, DocMixin); diff --git a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts index d7b043455..273d8cb59 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts @@ -11,7 +11,9 @@ type RegexFlags = [K in Avail]: `${K}${RegexFlags>}`; }[Avail]; -export class RegExpTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class RegExpTsDsl extends Mixed { protected pattern: string; protected flags?: RegexFlags; @@ -21,13 +23,11 @@ export class RegExpTsDsl extends TsDsl { this.flags = flags; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Emits a RegularExpressionLiteral node. */ - $render(): ts.RegularExpressionLiteral { + protected override _render() { const patternContent = this.pattern.startsWith('/') && this.pattern.endsWith('/') ? this.pattern.slice(1, -1) diff --git a/packages/openapi-ts/src/ts-dsl/expr/template.ts b/packages/openapi-ts/src/ts-dsl/expr/template.ts index 82eb392ba..a39f4d98d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/template.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/template.ts @@ -4,9 +4,9 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -export class TemplateTsDsl extends TsDsl< - ts.TemplateExpression | ts.NoSubstitutionTemplateLiteral -> { +const Mixed = TsDsl; + +export class TemplateTsDsl extends Mixed { protected parts: Array> = []; constructor(value?: string | MaybeTsDsl) { @@ -19,12 +19,11 @@ export class TemplateTsDsl extends TsDsl< return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TemplateExpression | ts.NoSubstitutionTemplateLiteral { + protected override _render() { const parts = this.$node(this.parts); const normalized: Array = []; diff --git a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts index 301c3267b..4f1d5b460 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts @@ -4,7 +4,9 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -export class TernaryTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class TernaryTsDsl extends Mixed { protected _condition?: string | MaybeTsDsl; protected _then?: string | MaybeTsDsl; protected _else?: string | MaybeTsDsl; @@ -29,12 +31,11 @@ export class TernaryTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.ConditionalExpression { + protected override _render() { if (!this._condition) throw new Error('Missing condition in ternary'); if (!this._then) throw new Error('Missing then expression in ternary'); if (!this._else) throw new Error('Missing else expression in ternary'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index 97e301ee6..b2e8c2227 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -1,14 +1,14 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { OperatorMixin } from '../mixins/operator'; import { registerLazyAccessTypeOfExprFactory } from '../mixins/type-expr'; -export class TypeOfExprTsDsl extends TsDsl { +const Mixed = OperatorMixin(TsDsl); + +export class TypeOfExprTsDsl extends Mixed { protected _expr: string | MaybeTsDsl; constructor(expr: string | MaybeTsDsl) { @@ -16,17 +16,13 @@ export class TypeOfExprTsDsl extends TsDsl { this._expr = expr; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TypeOfExpression { + protected override _render() { return ts.factory.createTypeOfExpression(this.$node(this._expr)); } } -export interface TypeOfExprTsDsl extends OperatorMixin {} -mixin(TypeOfExprTsDsl, OperatorMixin); - registerLazyAccessTypeOfExprFactory((...args) => new TypeOfExprTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/layout/doc.ts b/packages/openapi-ts/src/ts-dsl/layout/doc.ts index 8e9dd81cb..b6336a5f9 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/doc.ts @@ -59,12 +59,12 @@ export class DocTsDsl extends TsDsl { return node; } - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + traverse(_visitor: (node: SyntaxNode) => void): void { + // noop } - $render(): ts.Node { + protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/layout/hint.ts b/packages/openapi-ts/src/ts-dsl/layout/hint.ts index a3da41776..096ad0c8f 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/hint.ts @@ -41,12 +41,12 @@ export class HintTsDsl extends TsDsl { return node; } - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + traverse(_visitor: (node: SyntaxNode) => void): void { + // noop } - $render(): ts.Node { + protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/layout/newline.ts b/packages/openapi-ts/src/ts-dsl/layout/newline.ts index cd2f0055e..c04b1763a 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/newline.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/newline.ts @@ -5,12 +5,12 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NewlineTsDsl extends TsDsl { - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + traverse(_visitor: (node: SyntaxNode) => void): void { + // noop } - $render(): ts.Identifier { + protected override _render(): ts.Identifier { return this.$node(new IdTsDsl('\n')); } } diff --git a/packages/openapi-ts/src/ts-dsl/layout/note.ts b/packages/openapi-ts/src/ts-dsl/layout/note.ts index 842af9089..2bd0b3f32 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/note.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/note.ts @@ -39,12 +39,12 @@ export class NoteTsDsl extends TsDsl { return node; } - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + traverse(_visitor: (node: SyntaxNode) => void): void { + // noop } - $render(): ts.Node { + protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/mixins/apply.ts b/packages/openapi-ts/src/ts-dsl/mixins/apply.ts deleted file mode 100644 index cf570bfdf..000000000 --- a/packages/openapi-ts/src/ts-dsl/mixins/apply.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-function-type */ -export function mixin(target: Function, ...sources: ReadonlyArray) { - const targetProto = target.prototype; - for (const src of sources) { - let resolvedSource = src; - if (typeof src === 'function') { - try { - const candidate = src(target); - if (candidate?.prototype) { - resolvedSource = candidate; - } - } catch { - // noop - } - } - const sourceProto = resolvedSource.prototype; - if (!sourceProto) continue; - for (const [key, descriptor] of Object.entries( - Object.getOwnPropertyDescriptors(sourceProto), - )) { - if (key === 'constructor') continue; - Object.defineProperty(targetProto, key, descriptor); - } - } -} diff --git a/packages/openapi-ts/src/ts-dsl/mixins/args.ts b/packages/openapi-ts/src/ts-dsl/mixins/args.ts index 83bb2ea59..db9c124b7 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/args.ts @@ -1,29 +1,42 @@ import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import type { BaseCtor, MixinCtor } from './types'; + +export interface ArgsMethods { + /** Renders the arguments into an array of `Expression`s. */ + $args(): ReadonlyArray; + /** Adds a single expression argument. */ + arg(arg: string | MaybeTsDsl): this; + /** Adds one or more expression arguments. */ + args(...args: ReadonlyArray>): this; +} /** * Adds `.arg()` and `.args()` for managing expression arguments in call-like nodes. */ -export abstract class ArgsMixin extends TsDsl { - protected _args?: Array>; +export function ArgsMixin>( + Base: TBase, +) { + abstract class Args extends Base { + protected _args: Array> = []; - /** Adds a single expression argument. */ - arg(arg: string | MaybeTsDsl): this { - (this._args ??= []).push(arg); - return this; - } + protected arg(arg: string | MaybeTsDsl): this { + this._args.push(arg); + return this; + } - /** Adds one or more expression arguments. */ - args(...args: ReadonlyArray>): this { - (this._args ??= []).push(...args); - return this; - } + protected args( + ...args: ReadonlyArray> + ): this { + this._args.push(...args); + return this; + } - /** Renders the arguments into an array of `Expression`s. */ - protected $args(): ReadonlyArray { - if (!this._args) return []; - return this.$node(this._args).map((arg) => this.$maybeId(arg)); + protected $args(): ReadonlyArray { + return this.$node(this._args).map((arg) => this.$maybeId(arg)); + } } + + return Args as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/as.ts b/packages/openapi-ts/src/ts-dsl/mixins/as.ts index 5097fe0fc..c5ff34212 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/as.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/as.ts @@ -2,6 +2,7 @@ import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; import type { AsTsDsl } from '../expr/as'; +import type { BaseCtor, MixinCtor } from './types'; type AsFactory = ( expr: string | MaybeTsDsl, @@ -13,12 +14,19 @@ export function registerLazyAccessAsFactory(factory: AsFactory): void { asFactory = factory; } -export class AsMixin { +export interface AsMethods { /** Creates an `as` type assertion expression (e.g. `value as Type`). */ - as( - this: string | MaybeTsDsl, - type: string | TypeTsDsl, - ): AsTsDsl { - return asFactory!(this, type); + as(type: string | TypeTsDsl): AsTsDsl; +} + +export function AsMixin>( + Base: TBase, +) { + abstract class As extends Base { + protected as(type: string | TypeTsDsl): AsTsDsl { + return asFactory!(this, type); + } } + + return As as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts index 099e1248a..afe7c78c0 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts @@ -2,26 +2,39 @@ import type { Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; import { DecoratorTsDsl } from '../decl/decorator'; +import type { BaseCtor, MixinCtor } from './types'; -export abstract class DecoratorMixin extends TsDsl { - protected decorators?: Array; - +export interface DecoratorMethods { + /** Renders the decorators into an array of `ts.Decorator`s. */ + $decorators(): ReadonlyArray; /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */ decorator( name: Symbol | string | MaybeTsDsl, ...args: ReadonlyArray> - ): this { - (this.decorators ??= []).push( - new DecoratorTsDsl(name, ...args).setParent(this), - ); - return this; - } + ): this; +} - /** Renders the decorators into an array of `ts.Decorator`s. */ - protected $decorators(): ReadonlyArray { - if (!this.decorators) return []; - return this.$node(this.decorators); +export function DecoratorMixin>( + Base: TBase, +) { + abstract class Decorator extends Base { + protected decorators: Array = []; + + protected decorator( + name: Symbol | string | MaybeTsDsl, + ...args: ReadonlyArray> + ): this { + this.decorators.push( + new DecoratorTsDsl(name, ...args).setParent(this as any), + ); + return this; + } + + protected $decorators(): ReadonlyArray { + return this.$node(this.decorators); + } } + + return Decorator as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/do.ts b/packages/openapi-ts/src/ts-dsl/mixins/do.ts index 77f4a737c..5a1803107 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/do.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/do.ts @@ -1,24 +1,36 @@ import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; import { StmtTsDsl } from '../stmt/stmt'; +import type { BaseCtor, MixinCtor } from './types'; + +export interface DoMethods { + /** Renders the collected `.do()` calls into an array of `Statement` nodes. */ + $do(): ReadonlyArray; + /** Adds one or more expressions/statements to the body. */ + do(...items: ReadonlyArray>): this; +} /** * Adds `.do()` for appending statements or expressions to a body. */ -export abstract class DoMixin extends TsDsl { - protected _do?: Array>; +export function DoMixin>( + Base: TBase, +) { + abstract class Do extends Base { + protected _do: Array> = []; - /** Adds one or more expressions/statements to the body. */ - do(...items: ReadonlyArray>): this { - (this._do ??= []).push(...items); - return this; - } + protected do( + ...items: ReadonlyArray> + ): this { + this._do.push(...items); + return this; + } - /** Renders the collected `.do()` calls into an array of `Statement` nodes. */ - protected $do(): ReadonlyArray { - if (!this._do) return []; - return this.$node(this._do.map((item) => new StmtTsDsl(item))); + protected $do(): ReadonlyArray { + return this.$node(this._do.map((item) => new StmtTsDsl(item))); + } } + + return Do as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts index 7b9cb846d..5427a8575 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts @@ -1,24 +1,32 @@ -import type { Constructor, ITsDsl, MaybeArray } from '../base'; +import type ts from 'typescript'; + +import type { MaybeArray } from '../base'; import { DocTsDsl } from '../layout/doc'; +import type { BaseCtor, MixinCtor } from './types'; -export function DocMixin(Base: TBase) { - const $renderBase = Base.prototype.$render; +export interface DocMethods { + doc(lines?: MaybeArray, fn?: (d: DocTsDsl) => void): this; +} - class Mixin extends Base { - _doc?: DocTsDsl; +export function DocMixin>( + Base: TBase, +) { + abstract class Doc extends Base { + protected _doc?: DocTsDsl; - doc(lines?: MaybeArray, fn?: (d: DocTsDsl) => void): this { + protected doc( + lines?: MaybeArray, + fn?: (d: DocTsDsl) => void, + ): this { this._doc = new DocTsDsl(lines, fn); return this; } - override $render(...args: Parameters) { - const node = $renderBase.apply(this, args); + protected override _render() { + const node = this.$render(); return this._doc ? this._doc.apply(node) : node; } } - return Mixin; + return Doc as unknown as MixinCtor; } - -export type DocMixin = InstanceType>; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts index 9a0d37352..c33103afc 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts @@ -5,9 +5,10 @@ import type { AttrTsDsl } from '../expr/attr'; import type { AwaitTsDsl } from '../expr/await'; import type { CallTsDsl } from '../expr/call'; import type { ReturnTsDsl } from '../stmt/return'; +import type { BaseCtor, MixinCtor } from './types'; type AttrFactory = ( - expr: string | MaybeTsDsl, + expr: MaybeTsDsl, name: string | ts.MemberName | number, ) => AttrTsDsl; let attrFactory: AttrFactory | undefined; @@ -16,7 +17,7 @@ export function registerLazyAccessAttrFactory(factory: AttrFactory): void { attrFactory = factory; } -type AwaitFactory = (expr: string | MaybeTsDsl) => AwaitTsDsl; +type AwaitFactory = (expr: MaybeTsDsl) => AwaitTsDsl; let awaitFactory: AwaitFactory | undefined; /** Registers the Await DSL factory after its module has finished evaluating. */ export function registerLazyAccessAwaitFactory(factory: AwaitFactory): void { @@ -24,7 +25,7 @@ export function registerLazyAccessAwaitFactory(factory: AwaitFactory): void { } type CallFactory = ( - expr: string | MaybeTsDsl, + expr: MaybeTsDsl, args: ReadonlyArray | undefined>, ) => CallTsDsl; let callFactory: CallFactory | undefined; @@ -33,37 +34,48 @@ export function registerLazyAccessCallFactory(factory: CallFactory): void { callFactory = factory; } -type ReturnFactory = (expr: string | MaybeTsDsl) => ReturnTsDsl; +type ReturnFactory = (expr: MaybeTsDsl) => ReturnTsDsl; let returnFactory: ReturnFactory | undefined; /** Registers the Return DSL factory after its module has finished evaluating. */ export function registerLazyAccessReturnFactory(factory: ReturnFactory): void { returnFactory = factory; } -export class ExprMixin { +export interface ExprMethods { /** Accesses a property on the current expression (e.g. `this.foo`). */ - attr( - this: string | MaybeTsDsl, - name: string | ts.MemberName | number, - ): AttrTsDsl { - return attrFactory!(this, name); - } - + attr(name: string | ts.MemberName | number): AttrTsDsl; /** Awaits the current expression (e.g. `await expr`). */ - await(this: string | MaybeTsDsl): AwaitTsDsl { - return awaitFactory!(this); - } - + await(): AwaitTsDsl; /** Calls the current expression (e.g. `fn(arg1, arg2)`). */ call( - this: string | MaybeTsDsl, ...args: ReadonlyArray | undefined> - ): CallTsDsl { - return callFactory!(this, args); - } - + ): CallTsDsl; /** Produces a `return` statement returning the current expression. */ - return(this: string | MaybeTsDsl): ReturnTsDsl { - return returnFactory!(this); + return(): ReturnTsDsl; +} + +export function ExprMixin>( + Base: TBase, +) { + abstract class Expr extends Base { + protected attr(name: string | ts.MemberName | number): AttrTsDsl { + return attrFactory!(this, name); + } + + protected await(): AwaitTsDsl { + return awaitFactory!(this); + } + + protected call( + ...args: ReadonlyArray | undefined> + ): CallTsDsl { + return callFactory!(this, args); + } + + protected return(): ReturnTsDsl { + return returnFactory!(this); + } } + + return Expr as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts index 872819b71..1116982c6 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts @@ -1,24 +1,32 @@ -import type { Constructor, ITsDsl, MaybeArray } from '../base'; +import type ts from 'typescript'; + +import type { MaybeArray } from '../base'; import { HintTsDsl } from '../layout/hint'; +import type { BaseCtor, MixinCtor } from './types'; -export function HintMixin(Base: TBase) { - const $renderBase = Base.prototype.$render; +export interface HintMethods { + hint(lines?: MaybeArray, fn?: (h: HintTsDsl) => void): this; +} - class Mixin extends Base { - _hint?: HintTsDsl; +export function HintMixin>( + Base: TBase, +) { + abstract class Hint extends Base { + protected _hint?: HintTsDsl; - hint(lines?: MaybeArray, fn?: (h: HintTsDsl) => void): this { + protected hint( + lines?: MaybeArray, + fn?: (h: HintTsDsl) => void, + ): this { this._hint = new HintTsDsl(lines, fn); return this; } - override $render(...args: Parameters) { - const node = $renderBase.apply(this, args); + protected override _render() { + const node = this.$render(); return this._hint ? this._hint.apply(node) : node; } } - return Mixin; + return Hint as unknown as MixinCtor; } - -export type HintMixin = InstanceType>; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts index c45280226..ac7bef720 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts @@ -1,30 +1,49 @@ -export class LayoutMixin { - protected static readonly DEFAULT_THRESHOLD = 3; - protected layout: boolean | number | undefined; +import type ts from 'typescript'; - /** Sets automatic line output with optional threshold (default: 3). */ - auto(threshold: number = LayoutMixin.DEFAULT_THRESHOLD): this { - this.layout = threshold; - return this; - } +import type { BaseCtor, MixinCtor } from './types'; +export interface LayoutMethods { + /** Computes whether output should be multiline based on layout setting and element count. */ + $multiline(count: number): boolean; + /** Sets automatic line output with optional threshold (default: 3). */ + auto(threshold?: number): this; /** Sets single line output. */ - inline(): this { - this.layout = false; - return this; - } - + inline(): this; /** Sets multi line output. */ - pretty(): this { - this.layout = true; - return this; - } + pretty(): this; +} - /** Computes whether output should be multiline based on layout setting and element count. */ - protected $multiline(count: number): boolean { - if (this.layout === undefined) { - this.layout = LayoutMixin.DEFAULT_THRESHOLD; +export function LayoutMixin>( + Base: TBase, +) { + abstract class Layout extends Base { + protected static readonly DEFAULT_THRESHOLD = 3; + protected layout: boolean | number | undefined; + + protected auto(threshold: number = Layout.DEFAULT_THRESHOLD): this { + this.layout = threshold; + return this; + } + + protected inline(): this { + this.layout = false; + return this; + } + + protected pretty(): this { + this.layout = true; + return this; + } + + protected $multiline(count: number): boolean { + if (this.layout === undefined) { + this.layout = Layout.DEFAULT_THRESHOLD; + } + return typeof this.layout === 'number' + ? count >= this.layout + : this.layout; } - return typeof this.layout === 'number' ? count >= this.layout : this.layout; } + + return Layout as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts index 5ef584219..77315411f 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts @@ -1,17 +1,12 @@ -import type { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import type { TsDsl } from '../base'; +import type { BaseCtor, MixinCtor } from './types'; -/** - * Creates an accessor for adding TypeScript modifiers to a parent DSL node. - * - * @param parent - The parent DSL node to which modifiers will be added. - * @returns An object with a `list` method that returns the collected modifiers. - */ -export function createModifierAccessor(parent: Parent) { - const modifiers: Array = []; +export type Modifiers = { + modifiers: Array; +}; +export interface ModifierMethods extends Modifiers { /** * Adds a modifier of the specified kind to the modifiers list if the condition is true. * @@ -19,219 +14,369 @@ export function createModifierAccessor(parent: Parent) { * @param condition - Whether to add the modifier. * @returns The parent DSL node for chaining. */ - function _m(kind: ts.ModifierSyntaxKind, condition: boolean): Parent { - if (condition) modifiers.push(ts.factory.createModifier(kind)); - return parent; - } + _m(kind: ts.ModifierSyntaxKind, condition: boolean): this; +} - Object.assign(parent, { _m }); // attaches to parent +function ModifiersMixin>( + Base: TBase, +) { + abstract class Modifiers extends Base { + protected modifiers: Array = []; - /** - * Returns the list of collected modifiers. - * - * @returns Array of TypeScript modifiers. - */ - function list() { - return modifiers; + protected _m(kind: ts.ModifierSyntaxKind, condition: boolean): this { + if (condition) this.modifiers.push(ts.factory.createModifier(kind)); + return this; + } } - return { list }; + return Modifiers as unknown as MixinCtor; } -type Target = object & { - _m?(kind: ts.ModifierSyntaxKind, condition?: boolean): unknown; - symbol?: Symbol; -}; - -/** - * Mixin that adds an `abstract` modifier to a node. - */ -export class AbstractMixin { +export interface AbstractMethods extends Modifiers { /** * Adds the `abstract` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - abstract(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.AbstractKeyword, cond) as T; - } + abstract(condition?: boolean): this; } /** - * Mixin that adds an `async` modifier to a node. + * Mixin that adds an `abstract` modifier to a node. */ -export class AsyncMixin { +export function AbstractMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Abstract extends Mixed { + protected abstract(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.AbstractKeyword, cond); + } + } + + return Abstract as unknown as MixinCtor; +} + +export interface AsyncMethods extends Modifiers { /** * Adds the `async` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - async(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.AsyncKeyword, cond) as T; - } + async(condition?: boolean): this; } /** - * Mixin that adds a `const` modifier to a node. + * Mixin that adds an `async` modifier to a node. */ -export class ConstMixin { +export function AsyncMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Async extends Mixed { + protected async(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.AsyncKeyword, cond); + } + } + + return Async as unknown as MixinCtor; +} + +export interface ConstMethods extends Modifiers { /** * Adds the `const` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - const(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.ConstKeyword, cond) as T; - } + const(condition?: boolean): this; } /** - * Mixin that adds a `declare` modifier to a node. + * Mixin that adds a `const` modifier to a node. */ -export class DeclareMixin { +export function ConstMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Const extends Mixed { + protected const(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.ConstKeyword, cond); + } + } + + return Const as unknown as MixinCtor; +} + +export interface DeclareMethods extends Modifiers { /** * Adds the `declare` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - declare(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.DeclareKeyword, cond) as T; - } + declare(condition?: boolean): this; } /** - * Mixin that adds a `default` modifier to a node. + * Mixin that adds a `declare` modifier to a node. */ -export class DefaultMixin { +export function DeclareMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Declare extends Mixed { + protected declare(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.DeclareKeyword, cond); + } + } + + return Declare as unknown as MixinCtor; +} + +export interface DefaultMethods extends Modifiers { /** * Adds the `default` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - default(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.DefaultKeyword, cond) as T; - } + default(condition?: boolean): this; } /** - * Mixin that adds an `export` modifier to a node. + * Mixin that adds a `default` modifier to a node. */ -export class ExportMixin { +export function DefaultMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Default extends Mixed { + /** + * Adds the `default` keyword modifier if the condition is true. + * + * @param condition - Whether to add the modifier (default: true). + * @returns The target object for chaining. + */ + protected default(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.DefaultKeyword, cond); + } + } + + return Default as unknown as MixinCtor; +} + +export interface ExportMethods extends Modifiers { /** * Adds the `export` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - export(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - if (this.symbol) this.symbol.setExported(cond); - return this._m!(ts.SyntaxKind.ExportKeyword, cond) as T; - } + export(condition?: boolean): this; } /** - * Mixin that adds an `override` modifier to a node. + * Mixin that adds an `export` modifier to a node. */ -export class OverrideMixin { +export function ExportMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Export extends Mixed { + /** + * Adds the `export` keyword modifier if the condition is true. + * + * @param condition - Whether to add the modifier (default: true). + * @returns The target object for chaining. + */ + protected export(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + if (this.symbol) this.symbol.setExported(cond); + return this._m(ts.SyntaxKind.ExportKeyword, cond); + } + } + + return Export as unknown as MixinCtor; +} + +export interface OverrideMethods extends Modifiers { /** * Adds the `override` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - override(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.OverrideKeyword, cond) as T; - } + override(condition?: boolean): this; } /** - * Mixin that adds a `private` modifier to a node. + * Mixin that adds an `override` modifier to a node. */ -export class PrivateMixin { +export function OverrideMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Override extends Mixed { + protected override(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.OverrideKeyword, cond); + } + } + + return Override as unknown as MixinCtor; +} + +export interface PrivateMethods extends Modifiers { /** * Adds the `private` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - private(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.PrivateKeyword, cond) as T; - } + private(condition?: boolean): this; } /** - * Mixin that adds a `protected` modifier to a node. + * Mixin that adds a `private` modifier to a node. */ -export class ProtectedMixin { +export function PrivateMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Private extends Mixed { + protected private(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.PrivateKeyword, cond); + } + } + + return Private as unknown as MixinCtor; +} + +export interface ProtectedMethods extends Modifiers { /** * Adds the `protected` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - protected(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.ProtectedKeyword, cond) as T; - } + protected(condition?: boolean): this; } /** - * Mixin that adds a `public` modifier to a node. + * Mixin that adds a `protected` modifier to a node. */ -export class PublicMixin { +export function ProtectedMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Protected extends Mixed { + protected protected(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.ProtectedKeyword, cond); + } + } + + return Protected as unknown as MixinCtor; +} + +export interface PublicMethods extends Modifiers { /** * Adds the `public` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - public(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.PublicKeyword, cond) as T; - } + public(condition?: boolean): this; } /** - * Mixin that adds a `readonly` modifier to a node. + * Mixin that adds a `public` modifier to a node. */ -export class ReadonlyMixin { +export function PublicMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Public extends Mixed { + protected public(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.PublicKeyword, cond); + } + } + + return Public as unknown as MixinCtor; +} + +export interface ReadonlyMethods extends Modifiers { /** * Adds the `readonly` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - readonly(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.ReadonlyKeyword, cond) as T; - } + readonly(condition?: boolean): this; } /** - * Mixin that adds a `static` modifier to a node. + * Mixin that adds a `readonly` modifier to a node. */ -export class StaticMixin { +export function ReadonlyMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Readonly extends Mixed { + protected readonly(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.ReadonlyKeyword, cond); + } + } + + return Readonly as unknown as MixinCtor; +} + +export interface StaticMethods extends Modifiers { /** * Adds the `static` keyword modifier if the condition is true. * * @param condition - Whether to add the modifier (default: true). * @returns The target object for chaining. */ - static(this: T, condition?: boolean): T { - const cond = arguments.length === 0 ? true : Boolean(condition); - return this._m!(ts.SyntaxKind.StaticKeyword, cond) as T; + static(condition?: boolean): this; +} + +/** + * Mixin that adds a `static` modifier to a node. + */ +export function StaticMixin>( + Base: TBase, +) { + const Mixed = ModifiersMixin(Base as BaseCtor); + + abstract class Static extends Mixed { + protected static(condition?: boolean): this { + const cond = arguments.length === 0 ? true : Boolean(condition); + return this._m(ts.SyntaxKind.StaticKeyword, cond); + } } + + return Static as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/note.ts b/packages/openapi-ts/src/ts-dsl/mixins/note.ts index d33f80228..5fc771e2e 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/note.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/note.ts @@ -1,24 +1,32 @@ -import type { Constructor, ITsDsl, MaybeArray } from '../base'; +import type ts from 'typescript'; + +import type { MaybeArray } from '../base'; import { NoteTsDsl } from '../layout/note'; +import type { BaseCtor, MixinCtor } from './types'; -export function NoteMixin(Base: TBase) { - const $renderBase = Base.prototype.$render; +export interface NoteMethods { + note(lines?: MaybeArray, fn?: (h: NoteTsDsl) => void): this; +} - class Mixin extends Base { - _note?: NoteTsDsl; +export function NoteMixin>( + Base: TBase, +) { + abstract class Note extends Base { + protected _note?: NoteTsDsl; - note(lines?: MaybeArray, fn?: (h: NoteTsDsl) => void): this { + protected note( + lines?: MaybeArray, + fn?: (h: NoteTsDsl) => void, + ): this { this._note = new NoteTsDsl(lines, fn); return this; } - override $render(...args: Parameters) { - const node = $renderBase.apply(this, args); + protected override _render() { + const node = this.$render(); return this._note ? this._note.apply(node) : node; } } - return Mixin; + return Note as unknown as MixinCtor; } - -export type NoteMixin = InstanceType>; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts index ca0491476..bd616e1b2 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts @@ -2,88 +2,114 @@ import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { BinaryTsDsl } from '../expr/binary'; +import type { BaseCtor, MixinCtor } from './types'; -type This = string | MaybeTsDsl; type Expr = string | MaybeTsDsl; -export class OperatorMixin { +export interface OperatorMethods { /** Logical AND — `this && expr` */ - and(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).and(expr); - } - + and(expr: Expr): BinaryTsDsl; /** Creates an assignment expression (e.g. `this = expr`). */ - assign(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this, '=', expr); - } - + assign(expr: Expr): BinaryTsDsl; /** Nullish coalescing — `this ?? expr` */ - coalesce(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).coalesce(expr); - } - + coalesce(expr: Expr): BinaryTsDsl; /** Division — `this / expr` */ - div(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).div(expr); - } - + div(expr: Expr): BinaryTsDsl; /** Strict equality — `this === expr` */ - eq(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).eq(expr); - } - + eq(expr: Expr): BinaryTsDsl; /** Greater than — `this > expr` */ - gt(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).gt(expr); - } - + gt(expr: Expr): BinaryTsDsl; /** Greater than or equal — `this >= expr` */ - gte(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).gte(expr); - } - + gte(expr: Expr): BinaryTsDsl; /** Loose equality — `this == expr` */ - looseEq(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).looseEq(expr); - } - + looseEq(expr: Expr): BinaryTsDsl; /** Loose inequality — `this != expr` */ - looseNeq(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).looseNeq(expr); - } - + looseNeq(expr: Expr): BinaryTsDsl; /** Less than — `this < expr` */ - lt(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).lt(expr); - } - + lt(expr: Expr): BinaryTsDsl; /** Less than or equal — `this <= expr` */ - lte(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).lte(expr); - } - + lte(expr: Expr): BinaryTsDsl; /** Subtraction — `this - expr` */ - minus(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).minus(expr); - } - + minus(expr: Expr): BinaryTsDsl; /** Strict inequality — `this !== expr` */ - neq(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).neq(expr); - } - + neq(expr: Expr): BinaryTsDsl; /** Logical OR — `this || expr` */ - or(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).or(expr); - } - + or(expr: Expr): BinaryTsDsl; /** Addition — `this + expr` */ - plus(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).plus(expr); - } - + plus(expr: Expr): BinaryTsDsl; /** Multiplication — `this * expr` */ - times(this: This, expr: Expr): BinaryTsDsl { - return new BinaryTsDsl(this).times(expr); + times(expr: Expr): BinaryTsDsl; +} + +export function OperatorMixin< + T extends ts.Expression, + TBase extends BaseCtor, +>(Base: TBase) { + abstract class Operator extends Base { + protected and(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).and(expr); + } + + protected assign(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this, '=', expr); + } + + protected coalesce(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).coalesce(expr); + } + + protected div(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).div(expr); + } + + protected eq(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).eq(expr); + } + + protected gt(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).gt(expr); + } + + protected gte(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).gte(expr); + } + + protected looseEq(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).looseEq(expr); + } + + protected looseNeq(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).looseNeq(expr); + } + + protected lt(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).lt(expr); + } + + protected lte(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).lte(expr); + } + + protected minus(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).minus(expr); + } + + protected neq(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).neq(expr); + } + + protected or(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).or(expr); + } + + protected plus(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).plus(expr); + } + + protected times(expr: Expr): BinaryTsDsl { + return new BinaryTsDsl(this).times(expr); + } } + + return Operator as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts index 257790eb4..115a8764d 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts @@ -1,15 +1,31 @@ -export class OptionalMixin { - protected _optional?: boolean; +import type ts from 'typescript'; - /** Marks the node as optional when the condition is true. */ - optional(this: T, condition?: boolean): T { - this._optional = arguments.length === 0 ? true : Boolean(condition); - return this; - } +import type { BaseCtor, MixinCtor } from './types'; +export interface OptionalMethods { + _optional?: boolean; + /** Marks the node as optional when the condition is true. */ + optional(condition?: boolean): this; /** Marks the node as required when the condition is true. */ - required(this: T, condition?: boolean): T { - this._optional = arguments.length === 0 ? false : !condition; - return this; + required(condition?: boolean): this; +} + +export function OptionalMixin>( + Base: TBase, +) { + abstract class Optional extends Base { + protected _optional?: boolean; + + protected optional(condition?: boolean): this { + this._optional = arguments.length === 0 ? true : Boolean(condition); + return this; + } + + protected required(condition?: boolean): this { + this._optional = arguments.length === 0 ? false : !condition; + return this; + } } + + return Optional as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/param.ts b/packages/openapi-ts/src/ts-dsl/mixins/param.ts index f8e45e7f4..f5a6d1927 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/param.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/param.ts @@ -1,30 +1,47 @@ import type ts from 'typescript'; -import { type MaybeTsDsl, TsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import { ParamTsDsl } from '../decl/param'; +import type { BaseCtor, MixinCtor } from './types'; -export abstract class ParamMixin extends TsDsl { - protected _params?: Array>; - +export interface ParamMethods { + /** Renders the parameters into an array of `ParameterDeclaration`s. */ + $params(): ReadonlyArray; /** Adds a parameter. */ param( name: string | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void, - ): this { - const p = new ParamTsDsl(name, fn); - (this._params ??= []).push(p); - return this; - } - + ): this; /** Adds multiple parameters. */ - params(...params: ReadonlyArray>): this { - (this._params ??= []).push(...params); - return this; - } + params(...params: ReadonlyArray>): this; +} - /** Renders the parameters into an array of `ParameterDeclaration`s. */ - protected $params(): ReadonlyArray { - if (!this._params) return []; - return this.$node(this._params); +export function ParamMixin>( + Base: TBase, +) { + abstract class Param extends Base { + protected _params: Array> = []; + + protected param( + name: string | ((p: ParamTsDsl) => void), + fn?: (p: ParamTsDsl) => void, + ): this { + const p = new ParamTsDsl(name, fn); + this._params.push(p); + return this; + } + + protected params( + ...params: ReadonlyArray> + ): this { + this._params.push(...params); + return this; + } + + protected $params(): ReadonlyArray { + return this.$node(this._params); + } } + + return Param as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts index a5bd11a04..5bdf44f59 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts @@ -1,37 +1,56 @@ import type ts from 'typescript'; import type { MaybeArray } from '../base'; -import { TsDsl } from '../base'; import { PatternTsDsl } from '../decl/pattern'; +import type { BaseCtor, MixinCtor } from './types'; + +export interface PatternMethods { + /** Renders the pattern into a `BindingName`. */ + $pattern(): ts.BindingName | undefined; + /** Defines an array binding pattern. */ + array(...props: ReadonlyArray | [ReadonlyArray]): this; + /** Defines an object binding pattern. */ + object( + ...props: ReadonlyArray | Record> + ): this; + /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */ + spread(name: string): this; +} /** * Mixin providing `.array()`, `.object()`, and `.spread()` methods for defining destructuring patterns. */ -export abstract class PatternMixin extends TsDsl { - protected pattern?: PatternTsDsl; +export function PatternMixin>( + Base: TBase, +) { + abstract class Pattern extends Base { + protected pattern: PatternTsDsl = new PatternTsDsl(); - /** Defines an array binding pattern. */ - array(...props: ReadonlyArray | [ReadonlyArray]): this { - (this.pattern ??= new PatternTsDsl()).array(...props); - return this; - } + protected array( + ...props: ReadonlyArray | [ReadonlyArray] + ): this { + this.pattern.array(...props); + return this; + } - /** Defines an object binding pattern. */ - object( - ...props: ReadonlyArray | Record> - ): this { - (this.pattern ??= new PatternTsDsl()).object(...props); - return this; - } + protected object( + ...props: ReadonlyArray | Record> + ): this { + this.pattern.object(...props); + return this; + } - /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */ - spread(name: string): this { - (this.pattern ??= new PatternTsDsl()).spread(name); - return this; - } + /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */ + protected spread(name: string): this { + this.pattern.spread(name); + return this; + } - /** Renders the pattern into a `BindingName`. */ - protected $pattern(): ts.BindingName | undefined { - return this.$node(this.pattern); + /** Renders the pattern into a `BindingName`. */ + protected $pattern(): ts.BindingName | undefined { + return this.$node(this.pattern); + } } + + return Pattern as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts index b1ed253a8..6de990b1c 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts @@ -1,25 +1,39 @@ import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { TsDsl } from '../base'; - -export abstract class TypeArgsMixin extends TsDsl { - protected _generics?: Array>; +import type { BaseCtor, MixinCtor } from './types'; +export interface TypeArgsMethods { + /** Returns the type arguments as an array of ts.TypeNode nodes. */ + $generics(): ReadonlyArray | undefined; /** Adds a single type argument (e.g. `string` in `Foo`). */ - generic(arg: string | MaybeTsDsl): this { - (this._generics ??= []).push(arg); - return this; - } - + generic(arg: string | MaybeTsDsl): this; /** Adds type arguments (e.g. `Map`). */ - generics(...args: ReadonlyArray>): this { - (this._generics ??= []).push(...args); - return this; - } + generics(...args: ReadonlyArray>): this; +} - /** Returns the type arguments as an array of ts.TypeNode nodes. */ - protected $generics(): ReadonlyArray | undefined { - return this.$type(this._generics); +export function TypeArgsMixin>( + Base: TBase, +) { + abstract class TypeArgs extends Base { + protected _generics?: Array>; + + protected generic(arg: string | MaybeTsDsl): this { + (this._generics ??= []).push(arg); + return this; + } + + protected generics( + ...args: ReadonlyArray> + ): this { + (this._generics ??= []).push(...args); + return this; + } + + protected $generics(): ReadonlyArray | undefined { + return this.$type(this._generics); + } } + + return TypeArgs as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts index 7ded21ced..509cc4c88 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts @@ -7,6 +7,7 @@ import type { TypeExprTsDsl } from '../type/expr'; import type { TypeIdxTsDsl } from '../type/idx'; import type { TypeOperatorTsDsl } from '../type/operator'; import type { TypeQueryTsDsl } from '../type/query'; +import type { BaseCtor, MixinCtor } from './types'; type TypeExprFactory = ( nameOrFn?: string | ((t: TypeExprTsDsl) => void), @@ -63,40 +64,18 @@ export function registerLazyAccessTypeQueryFactory( typeQueryFactory = factory; } -export class TypeExprMixin { +export interface TypeExprMethods { /** Creates an indexed-access type (e.g. `Foo[K]`). */ idx( this: MaybeTsDsl, index: string | number | MaybeTsDsl, - ): TypeIdxTsDsl { - return typeIdxFactory!(this, index); - } - + ): TypeIdxTsDsl; /** Shorthand: builds `keyof T`. */ - keyof(this: MaybeTsDsl): TypeOperatorTsDsl { - return typeOperatorFactory!().keyof(this); - } - + keyof(this: MaybeTsDsl): TypeOperatorTsDsl; /** Shorthand: builds `readonly T`. */ - readonly(this: MaybeTsDsl): TypeOperatorTsDsl { - return typeOperatorFactory!().readonly(this); - } - + readonly(this: MaybeTsDsl): TypeOperatorTsDsl; /** Create a TypeExpr DSL node representing ReturnType. */ - returnType(this: MaybeTsDsl): TypeExprTsDsl { - return typeExprFactory!('ReturnType').generic(typeQueryFactory!(this)); - } - - /** Create a TypeOfExpr DSL node representing typeof this. */ - typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl { - return typeOfExprFactory!(this); - } - - /** Create a TypeQuery DSL node representing typeof this. */ - typeofType(this: MaybeTsDsl): TypeQueryTsDsl { - return typeQueryFactory!(this); - } - + returnType(this: MaybeTsDsl): TypeExprTsDsl; /** * Create a `typeof` operator that narrows its return type based on the receiver. * @@ -111,23 +90,73 @@ export class TypeExprMixin { ? TypeOfExprTsDsl : T extends MaybeTsDsl ? TypeQueryTsDsl - : TypeQueryTsDsl | TypeOfExprTsDsl { - if (this instanceof TsDsl) { - const node = this.$render(); - return ts.isExpression(node) - ? (typeOfExprFactory!(this) as any) - : (typeQueryFactory!(this) as any); + : TypeQueryTsDsl | TypeOfExprTsDsl; + /** Create a TypeOfExpr DSL node representing typeof this. */ + typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl; + /** Create a TypeQuery DSL node representing typeof this. */ + typeofType(this: MaybeTsDsl): TypeQueryTsDsl; + /** Shorthand: builds `unique T`. */ + unique(this: MaybeTsDsl): TypeOperatorTsDsl; +} + +export function TypeExprMixin>( + Base: TBase, +) { + abstract class TypeExpr extends Base { + protected idx( + this: MaybeTsDsl, + index: string | number | MaybeTsDsl, + ): TypeIdxTsDsl { + return typeIdxFactory!(this, index); } - if (ts.isExpression(this as any)) { - return typeOfExprFactory!(this as ts.Expression) as any; + protected keyof(this: MaybeTsDsl): TypeOperatorTsDsl { + return typeOperatorFactory!().keyof(this); } - return typeQueryFactory!(this) as any; - } + protected readonly(this: MaybeTsDsl): TypeOperatorTsDsl { + return typeOperatorFactory!().readonly(this); + } - /** Shorthand: builds `unique T`. */ - unique(this: MaybeTsDsl): TypeOperatorTsDsl { - return typeOperatorFactory!().unique(this); + protected returnType(this: MaybeTsDsl): TypeExprTsDsl { + return typeExprFactory!('ReturnType').generic(typeQueryFactory!(this)); + } + + protected typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl { + return typeOfExprFactory!(this); + } + + protected typeofType( + this: MaybeTsDsl, + ): TypeQueryTsDsl { + return typeQueryFactory!(this); + } + + protected typeof>( + this: T, + ): T extends MaybeTsDsl + ? TypeOfExprTsDsl + : T extends MaybeTsDsl + ? TypeQueryTsDsl + : TypeQueryTsDsl | TypeOfExprTsDsl { + if (this instanceof TsDsl) { + const node = this.$render(); + return ts.isExpression(node) + ? (typeOfExprFactory!(this) as any) + : (typeQueryFactory!(this) as any); + } + + if (ts.isExpression(this as any)) { + return typeOfExprFactory!(this as ts.Expression) as any; + } + + return typeQueryFactory!(this) as any; + } + + protected unique(this: MaybeTsDsl): TypeOperatorTsDsl { + return typeOperatorFactory!().unique(this); + } } + + return TypeExpr as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts index c3d917d42..aee6b5db6 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts @@ -1,32 +1,56 @@ +import type { Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; import { TypeParamTsDsl } from '../type/param'; +import type { BaseCtor, MixinCtor } from './types'; -export abstract class TypeParamsMixin extends TsDsl { - protected _generics?: Array>; - +export interface TypeParamsMethods { + /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */ + $generics(): ReadonlyArray | undefined; /** Adds a single type parameter (e.g. `T` in `Array`). */ - generic(...args: ConstructorParameters): this { - const g = new TypeParamTsDsl(...args); - (this._generics ??= []).push(g); - return this; - } - + generic(...args: ConstructorParameters): this; /** Adds type parameters (e.g. `Map`). */ - generics(...args: ReadonlyArray>): this { - (this._generics ??= []).push(...args); - return this; - } + generics( + ...args: ReadonlyArray> + ): this; +} - /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */ - protected $generics(): - | ReadonlyArray - | undefined { - return this._generics?.map((g) => { - const node = typeof g === 'string' ? new TypeParamTsDsl(g) : g; - return this.$node(node); - }); +export function TypeParamsMixin>( + Base: TBase, +) { + abstract class TypeParams extends Base { + protected _generics?: Array>; + + protected generic( + ...args: ConstructorParameters + ): this { + const g = new TypeParamTsDsl(...args).setParent(this); + (this._generics ??= []).push(g); + return this; + } + + protected generics( + ...args: ReadonlyArray> + ): this { + for (let arg of args) { + if (typeof arg !== 'object' || 'id' in arg) { + arg = new TypeParamTsDsl(arg); + } + if (typeof arg === 'object' && 'setParent' in arg) { + arg.setParent(this); + } + (this._generics ??= []).push(arg); + } + return this; + } + + protected $generics(): + | ReadonlyArray + | undefined { + return this.$node(this._generics); + } } + + return TypeParams as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/types.d.ts b/packages/openapi-ts/src/ts-dsl/mixins/types.d.ts new file mode 100644 index 000000000..ce642c48d --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/mixins/types.d.ts @@ -0,0 +1,6 @@ +import type { TsDsl } from '../base'; + +export type BaseCtor = abstract new (...args: any[]) => TsDsl; +export type MixinCtor, K> = abstract new ( + ...args: any[] +) => InstanceType & K; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/value.ts b/packages/openapi-ts/src/ts-dsl/mixins/value.ts index d008221b4..69a6ec4f5 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/value.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/value.ts @@ -1,18 +1,29 @@ import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; - -export abstract class ValueMixin extends TsDsl { - protected value?: string | MaybeTsDsl; +import type { BaseCtor, MixinCtor } from './types'; +export interface ValueMethods { + $value(): ts.Expression | undefined; /** Sets the initializer expression (e.g. `= expr`). */ - assign(this: T, expr: string | MaybeTsDsl): T { - this.value = expr; - return this; - } + assign(expr: string | MaybeTsDsl): this; +} - protected $value(): ts.Expression | undefined { - return this.$node(this.value); +export function ValueMixin>( + Base: TBase, +) { + abstract class Value extends Base { + protected value?: string | MaybeTsDsl; + + protected assign(expr: string | MaybeTsDsl): this { + this.value = expr; + return this; + } + + protected $value(): ts.Expression | undefined { + return this.$node(this.value); + } } + + return Value as unknown as MixinCtor; } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index 417bb0c6b..2a1046244 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DoMixin } from '../mixins/do'; -export class IfTsDsl extends TsDsl { +const Mixed = DoMixin(TsDsl); + +export class IfTsDsl extends Mixed { protected _condition?: string | MaybeTsDsl; protected _else?: ReadonlyArray>; @@ -26,12 +26,11 @@ export class IfTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.IfStatement { + protected override _render() { if (!this._condition) throw new Error('Missing condition in if'); const thenStmts = this.$do(); @@ -61,6 +60,3 @@ export class IfTsDsl extends TsDsl { return ts.factory.createIfStatement(condition, thenNode, elseNode); } } - -export interface IfTsDsl extends DoMixin {} -mixin(IfTsDsl, DoMixin); diff --git a/packages/openapi-ts/src/ts-dsl/stmt/return.ts b/packages/openapi-ts/src/ts-dsl/stmt/return.ts index a0f3acfe3..9fe6cb038 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/return.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/return.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; -import { ExprMixin, registerLazyAccessReturnFactory } from '../mixins/expr'; +import { registerLazyAccessReturnFactory } from '../mixins/expr'; -export class ReturnTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class ReturnTsDsl extends Mixed { protected _returnExpr?: string | MaybeTsDsl; constructor(expr?: string | MaybeTsDsl) { @@ -15,17 +15,13 @@ export class ReturnTsDsl extends TsDsl { this._returnExpr = expr; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.ReturnStatement { + protected override _render() { return ts.factory.createReturnStatement(this.$node(this._returnExpr)); } } -export interface ReturnTsDsl extends ExprMixin {} -mixin(ReturnTsDsl, ExprMixin); - registerLazyAccessReturnFactory((...args) => new ReturnTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts index 9e8be4025..1826c8822 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts @@ -3,7 +3,9 @@ import ts from 'typescript'; import { TsDsl } from '../base'; -export class StmtTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class StmtTsDsl extends Mixed { protected _inner: ts.Expression | ts.Statement | TsDsl; constructor(inner: ts.Expression | ts.Statement | TsDsl) { @@ -11,12 +13,11 @@ export class StmtTsDsl extends TsDsl { this._inner = inner; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.Statement { + protected override _render() { const node = this.$node(this._inner); return ts.isStatement(node) ? node diff --git a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts index 9156899b7..c740fc003 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts @@ -5,7 +5,9 @@ import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { LiteralTsDsl } from '../expr/literal'; -export class ThrowTsDsl extends TsDsl { +const Mixed = TsDsl; + +export class ThrowTsDsl extends Mixed { protected error: string | MaybeTsDsl; protected msg?: string | MaybeTsDsl; protected useNew: boolean; @@ -21,12 +23,11 @@ export class ThrowTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.ThrowStatement { + protected override _render() { const errorNode = this.$node(this.error); const messageNode = this.$node(this.msg ? [this.msg] : []).map((expr) => typeof expr === 'string' ? new LiteralTsDsl(expr).$render() : expr, diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index 7ba8f1599..dde588180 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -1,23 +1,24 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; import { HintMixin } from '../mixins/hint'; -import { - createModifierAccessor, - DefaultMixin, - ExportMixin, -} from '../mixins/modifiers'; +import { DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { PatternMixin } from '../mixins/pattern'; import { ValueMixin } from '../mixins/value'; import { TypeExprTsDsl } from '../type/expr'; -export class VarTsDsl extends TsDsl { +const Mixed = DefaultMixin( + DocMixin( + ExportMixin( + HintMixin(PatternMixin(ValueMixin(TsDsl))), + ), + ), +); + +export class VarTsDsl extends Mixed { protected kind: ts.NodeFlags = ts.NodeFlags.None; - protected modifiers = createModifierAccessor(this); protected name?: string; protected _type?: TypeTsDsl; @@ -45,7 +46,6 @@ export class VarTsDsl extends TsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -61,12 +61,12 @@ export class VarTsDsl extends TsDsl { return this; } - $render(): ts.VariableStatement { + protected override _render() { const name = this.$pattern() ?? this.name; if (!name) throw new Error('Var must have either a name or a destructuring pattern'); return ts.factory.createVariableStatement( - this.modifiers.list(), + this.modifiers, ts.factory.createVariableDeclarationList( [ ts.factory.createVariableDeclaration( @@ -81,20 +81,3 @@ export class VarTsDsl extends TsDsl { ); } } - -export interface VarTsDsl - extends DefaultMixin, - DocMixin, - ExportMixin, - HintMixin, - PatternMixin, - ValueMixin {} -mixin( - VarTsDsl, - DefaultMixin, - DocMixin, - ExportMixin, - HintMixin, - PatternMixin, - ValueMixin, -); diff --git a/packages/openapi-ts/src/ts-dsl/token.ts b/packages/openapi-ts/src/ts-dsl/token.ts index 59bf21963..51c31ef66 100644 --- a/packages/openapi-ts/src/ts-dsl/token.ts +++ b/packages/openapi-ts/src/ts-dsl/token.ts @@ -56,13 +56,12 @@ export class TokenTsDsl extends TsDsl< ); } - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + traverse(_visitor: (node: SyntaxNode) => void): void { + // noop } - /** Renders the final token */ - $render(): ts.Token { + protected override _render(): ts.Token { if (!this._kind) { throw new Error(`Token missing \`.kind(kind)\``); } diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index 3e7151979..15b761ca3 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -1,16 +1,17 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; -import { createModifierAccessor, ExportMixin } from '../mixins/modifiers'; +import { ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; -export class TypeAliasTsDsl extends TsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = DocMixin( + ExportMixin(TypeParamsMixin(TsDsl)), +); + +export class TypeAliasTsDsl extends Mixed { protected name: string; protected value?: MaybeTsDsl; @@ -27,7 +28,6 @@ export class TypeAliasTsDsl extends TsDsl { fn?.(this); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -38,21 +38,14 @@ export class TypeAliasTsDsl extends TsDsl { return this; } - /** Renders a `TypeAliasDeclaration` node. */ - $render(): ts.TypeAliasDeclaration { + protected override _render() { if (!this.value) throw new Error(`Type alias '${this.name}' is missing a type definition`); return ts.factory.createTypeAliasDeclaration( - this.modifiers.list(), + this.modifiers, this.name, this.$generics(), this.$type(this.value), ); } } - -export interface TypeAliasTsDsl - extends DocMixin, - ExportMixin, - TypeParamsMixin {} -mixin(TypeAliasTsDsl, DocMixin, ExportMixin, TypeParamsMixin); diff --git a/packages/openapi-ts/src/ts-dsl/type/and.ts b/packages/openapi-ts/src/ts-dsl/type/and.ts index 7c52a6ca6..82e72a2c0 100644 --- a/packages/openapi-ts/src/ts-dsl/type/and.ts +++ b/packages/openapi-ts/src/ts-dsl/type/and.ts @@ -3,7 +3,9 @@ import ts from 'typescript'; import { TypeTsDsl } from '../base'; -export class TypeAndTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeAndTsDsl extends Mixed { protected _types: Array = []; constructor(...nodes: Array) { @@ -11,7 +13,6 @@ export class TypeAndTsDsl extends TypeTsDsl { this.types(...nodes); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -21,7 +22,7 @@ export class TypeAndTsDsl extends TypeTsDsl { return this; } - $render(): ts.IntersectionTypeNode { + protected override _render() { const flat: Array = []; for (const n of this._types) { diff --git a/packages/openapi-ts/src/ts-dsl/type/attr.ts b/packages/openapi-ts/src/ts-dsl/type/attr.ts index c89a10636..3dd5881b2 100644 --- a/packages/openapi-ts/src/ts-dsl/type/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/attr.ts @@ -1,13 +1,13 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { TypeExprMixin } from '../mixins/type-expr'; -export class TypeAttrTsDsl extends TypeTsDsl { +const Mixed = TypeExprMixin(TypeTsDsl); + +export class TypeAttrTsDsl extends Mixed { protected _base?: Symbol | string | MaybeTsDsl; protected right: Symbol | string | ts.Identifier; @@ -35,12 +35,11 @@ export class TypeAttrTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.QualifiedName { + protected override _render() { if (!this._base) { throw new Error('TypeAttrTsDsl: missing base for qualified name'); } @@ -58,6 +57,3 @@ export class TypeAttrTsDsl extends TypeTsDsl { return ts.factory.createQualifiedName(left, right); } } - -export interface TypeAttrTsDsl extends TypeExprMixin {} -mixin(TypeAttrTsDsl, TypeExprMixin); diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index 502e4f40c..23aebefc0 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { TypeArgsMixin } from '../mixins/type-args'; import { registerLazyAccessTypeExprFactory, @@ -11,7 +9,9 @@ import { } from '../mixins/type-expr'; import { TypeAttrTsDsl } from './attr'; -export class TypeExprTsDsl extends TypeTsDsl { +const Mixed = TypeArgsMixin(TypeExprMixin(TypeTsDsl)); + +export class TypeExprTsDsl extends Mixed { protected _exprInput?: Symbol | string | TypeAttrTsDsl; constructor(); @@ -29,8 +29,7 @@ export class TypeExprTsDsl extends TypeTsDsl { } else { this._exprInput = name; if (typeof name !== 'string') { - const symbol = this.getRootSymbol(); - if (symbol) symbol.addDependency(name); + this.getRootSymbol().addDependency(name); } fn?.(this); } @@ -47,12 +46,11 @@ export class TypeExprTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TypeReferenceNode { + protected override _render() { if (!this._exprInput) throw new Error('TypeExpr must have an expression'); const typeName = typeof this._exprInput === 'string' || @@ -67,9 +65,6 @@ export class TypeExprTsDsl extends TypeTsDsl { } } -export interface TypeExprTsDsl extends TypeArgsMixin, TypeExprMixin {} -mixin(TypeExprTsDsl, TypeArgsMixin, TypeExprMixin); - registerLazyAccessTypeExprFactory( (...args) => new TypeExprTsDsl(...(args as ConstructorParameters)), diff --git a/packages/openapi-ts/src/ts-dsl/type/func.ts b/packages/openapi-ts/src/ts-dsl/type/func.ts index e7fbc1a25..14c4b572d 100644 --- a/packages/openapi-ts/src/ts-dsl/type/func.ts +++ b/packages/openapi-ts/src/ts-dsl/type/func.ts @@ -1,15 +1,17 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; import { ParamMixin } from '../mixins/param'; import { TypeParamsMixin } from '../mixins/type-params'; import { TypeExprTsDsl } from './expr'; -export class TypeFuncTsDsl extends TypeTsDsl { +const Mixed = DocMixin( + ParamMixin(TypeParamsMixin(TypeTsDsl)), +); + +export class TypeFuncTsDsl extends Mixed { protected _returns?: TypeTsDsl; /** Sets the return type. */ @@ -18,12 +20,11 @@ export class TypeFuncTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.FunctionTypeNode { + protected override _render() { if (this._returns === undefined) { throw new Error('Missing return type in function type DSL'); } @@ -34,6 +35,3 @@ export class TypeFuncTsDsl extends TypeTsDsl { ); } } - -export interface TypeFuncTsDsl extends DocMixin, ParamMixin, TypeParamsMixin {} -mixin(TypeFuncTsDsl, DocMixin, ParamMixin, TypeParamsMixin); diff --git a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts index ea16327df..4e32832f4 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts @@ -1,17 +1,16 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; -import { createModifierAccessor, ReadonlyMixin } from '../mixins/modifiers'; +import { ReadonlyMixin } from '../mixins/modifiers'; type Type = string | MaybeTsDsl; -export class TypeIdxSigTsDsl extends TypeTsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = DocMixin(ReadonlyMixin(TypeTsDsl)); + +export class TypeIdxSigTsDsl extends Mixed { protected _key?: Type; protected _name: string; protected _type?: Type; @@ -33,7 +32,6 @@ export class TypeIdxSigTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -44,10 +42,10 @@ export class TypeIdxSigTsDsl extends TypeTsDsl { return this; } - $render(): ts.IndexSignatureDeclaration { + protected override _render() { this.$validate(); return ts.factory.createIndexSignature( - this.modifiers.list(), + this.modifiers, [ ts.factory.createParameterDeclaration( undefined, @@ -81,6 +79,3 @@ export class TypeIdxSigTsDsl extends TypeTsDsl { return missing; } } - -export interface TypeIdxSigTsDsl extends DocMixin, ReadonlyMixin {} -mixin(TypeIdxSigTsDsl, DocMixin, ReadonlyMixin); diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index be2b33041..1d49f34eb 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -1,16 +1,16 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { registerLazyAccessTypeIdxFactory, TypeExprMixin, } from '../mixins/type-expr'; -export class TypeIdxTsDsl extends TypeTsDsl { +const Mixed = TypeExprMixin(TypeTsDsl); + +export class TypeIdxTsDsl extends Mixed { protected _base: string | MaybeTsDsl; protected _index: string | MaybeTsDsl | number; @@ -33,12 +33,11 @@ export class TypeIdxTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.IndexedAccessTypeNode { + protected override _render() { return ts.factory.createIndexedAccessTypeNode( this.$type(this._base), this.$type(this._index), @@ -46,7 +45,4 @@ export class TypeIdxTsDsl extends TypeTsDsl { } } -export interface TypeIdxTsDsl extends TypeExprMixin {} -mixin(TypeIdxTsDsl, TypeExprMixin); - registerLazyAccessTypeIdxFactory((...args) => new TypeIdxTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/type/literal.ts b/packages/openapi-ts/src/ts-dsl/type/literal.ts index 4fd5578bf..7466647c8 100644 --- a/packages/openapi-ts/src/ts-dsl/type/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/type/literal.ts @@ -4,7 +4,9 @@ import ts from 'typescript'; import { TypeTsDsl } from '../base'; import { LiteralTsDsl } from '../expr/literal'; -export class TypeLiteralTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeLiteralTsDsl extends Mixed { protected value: string | number | boolean | null; constructor(value: string | number | boolean | null) { @@ -12,12 +14,11 @@ export class TypeLiteralTsDsl extends TypeTsDsl { this.value = value; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.LiteralTypeNode { + protected override _render() { return ts.factory.createLiteralTypeNode( this.$node(new LiteralTsDsl(this.value)), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/mapped.ts b/packages/openapi-ts/src/ts-dsl/type/mapped.ts index 208a6e518..b88081b65 100644 --- a/packages/openapi-ts/src/ts-dsl/type/mapped.ts +++ b/packages/openapi-ts/src/ts-dsl/type/mapped.ts @@ -5,7 +5,9 @@ import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; import { TokenTsDsl } from '../token'; -export class TypeMappedTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeMappedTsDsl extends Mixed { protected questionToken?: TokenTsDsl< | ts.SyntaxKind.QuestionToken | ts.SyntaxKind.PlusToken @@ -66,7 +68,6 @@ export class TypeMappedTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -77,7 +78,7 @@ export class TypeMappedTsDsl extends TypeTsDsl { return this; } - $render(): ts.MappedTypeNode { + protected override _render() { this.$validate(); return ts.factory.createMappedTypeNode( this.$node(this.readonlyToken), diff --git a/packages/openapi-ts/src/ts-dsl/type/object.ts b/packages/openapi-ts/src/ts-dsl/type/object.ts index 36b526dde..18b20f27e 100644 --- a/packages/openapi-ts/src/ts-dsl/type/object.ts +++ b/packages/openapi-ts/src/ts-dsl/type/object.ts @@ -5,7 +5,9 @@ import { TypeTsDsl } from '../base'; import { TypeIdxSigTsDsl } from './idx-sig'; import { TypePropTsDsl } from './prop'; -export class TypeObjectTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeObjectTsDsl extends Mixed { protected props: Array = []; /** Returns true if object has at least one property or spread. */ @@ -32,12 +34,11 @@ export class TypeObjectTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TypeNode { + protected override _render() { return ts.factory.createTypeLiteralNode(this.$node(this.props)); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index 5f94206ac..9502e3932 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -11,6 +11,8 @@ type Op = | ts.SyntaxKind.UniqueKeyword; type Type = string | MaybeTsDsl; +const Mixed = TypeTsDsl; + /** * Builds a TypeScript `TypeOperatorNode`, such as: * @@ -23,7 +25,7 @@ type Type = string | MaybeTsDsl; * * The node will throw during render if required fields are missing. */ -export class TypeOperatorTsDsl extends TypeTsDsl { +export class TypeOperatorTsDsl extends Mixed { protected _op?: Op; protected _type?: Type; @@ -47,7 +49,6 @@ export class TypeOperatorTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -65,7 +66,7 @@ export class TypeOperatorTsDsl extends TypeTsDsl { return this; } - $render(): ts.TypeOperatorNode { + protected override _render() { this.$validate(); return ts.factory.createTypeOperatorNode(this._op, this.$type(this._type)); } diff --git a/packages/openapi-ts/src/ts-dsl/type/or.ts b/packages/openapi-ts/src/ts-dsl/type/or.ts index 6b2d4f973..61ab200ea 100644 --- a/packages/openapi-ts/src/ts-dsl/type/or.ts +++ b/packages/openapi-ts/src/ts-dsl/type/or.ts @@ -3,7 +3,9 @@ import ts from 'typescript'; import { TypeTsDsl } from '../base'; -export class TypeOrTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeOrTsDsl extends Mixed { protected _types: Array = []; constructor(...nodes: Array) { @@ -11,7 +13,6 @@ export class TypeOrTsDsl extends TypeTsDsl { this.types(...nodes); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -21,7 +22,7 @@ export class TypeOrTsDsl extends TypeTsDsl { return this; } - $render(): ts.UnionTypeNode { + protected override _render() { const flat: Array = []; for (const n of this._types) { diff --git a/packages/openapi-ts/src/ts-dsl/type/param.ts b/packages/openapi-ts/src/ts-dsl/type/param.ts index 94a82c04a..20f1f2109 100644 --- a/packages/openapi-ts/src/ts-dsl/type/param.ts +++ b/packages/openapi-ts/src/ts-dsl/type/param.ts @@ -1,20 +1,22 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -export class TypeParamTsDsl extends TypeTsDsl { - protected name?: string | ts.Identifier; +const Mixed = TypeTsDsl; + +export class TypeParamTsDsl extends Mixed { + protected name?: Symbol | string; protected constraint?: string | MaybeTsDsl | boolean; protected defaultValue?: string | MaybeTsDsl | boolean; - constructor( - name?: string | ts.Identifier, - fn?: (name: TypeParamTsDsl) => void, - ) { + constructor(name?: Symbol | string, fn?: (name: TypeParamTsDsl) => void) { super(); this.name = name; + if (name && typeof name !== 'string') { + this.getRootSymbol().addDependency(name); + } fn?.(this); } @@ -28,16 +30,17 @@ export class TypeParamTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TypeParameterDeclaration { + protected override _render() { if (!this.name) throw new Error('Missing type name'); + const name = + typeof this.name === 'string' ? this.name : this.name.finalName; return ts.factory.createTypeParameterDeclaration( undefined, - this.$maybeId(this.name), + this.$maybeId(name), this.$type(this.constraint), this.$type(this.defaultValue), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/prop.ts b/packages/openapi-ts/src/ts-dsl/type/prop.ts index c7f27cc29..13fd2077d 100644 --- a/packages/openapi-ts/src/ts-dsl/type/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/type/prop.ts @@ -1,18 +1,17 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { DocMixin } from '../mixins/doc'; -import { createModifierAccessor, ReadonlyMixin } from '../mixins/modifiers'; +import { ReadonlyMixin } from '../mixins/modifiers'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; import { safePropName } from '../utils/prop'; -export class TypePropTsDsl extends TypeTsDsl { - protected modifiers = createModifierAccessor(this); +const Mixed = DocMixin(OptionalMixin(ReadonlyMixin(TypeTsDsl))); + +export class TypePropTsDsl extends Mixed { protected name: string; protected _type?: string | MaybeTsDsl; @@ -22,7 +21,6 @@ export class TypePropTsDsl extends TypeTsDsl { fn(this); } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } @@ -33,19 +31,15 @@ export class TypePropTsDsl extends TypeTsDsl { return this; } - /** Builds and returns the property signature. */ - $render(): ts.TypeElement { + protected override _render() { if (!this._type) { throw new Error(`Type not specified for property '${this.name}'`); } return ts.factory.createPropertySignature( - this.modifiers.list(), + this.modifiers, safePropName(this.name), this._optional ? this.$node(new TokenTsDsl().optional()) : undefined, this.$type(this._type), ); } } - -export interface TypePropTsDsl extends DocMixin, OptionalMixin, ReadonlyMixin {} -mixin(TypePropTsDsl, DocMixin, OptionalMixin, ReadonlyMixin); diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index 059054964..7013337b6 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -1,16 +1,16 @@ -/* eslint-disable @typescript-eslint/no-empty-object-type, @typescript-eslint/no-unsafe-declaration-merging */ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { mixin } from '../mixins/apply'; import { registerLazyAccessTypeQueryFactory, TypeExprMixin, } from '../mixins/type-expr'; -export class TypeQueryTsDsl extends TypeTsDsl { +const Mixed = TypeExprMixin(TypeTsDsl); + +export class TypeQueryTsDsl extends Mixed { protected _expr: string | MaybeTsDsl; constructor(expr: string | MaybeTsDsl) { @@ -18,18 +18,14 @@ export class TypeQueryTsDsl extends TypeTsDsl { this._expr = expr; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TypeQueryNode { + protected override _render() { const expr = this.$node(this._expr); return ts.factory.createTypeQueryNode(expr as unknown as ts.EntityName); } } -export interface TypeQueryTsDsl extends TypeExprMixin {} -mixin(TypeQueryTsDsl, TypeExprMixin); - registerLazyAccessTypeQueryFactory((...args) => new TypeQueryTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/type/template.ts b/packages/openapi-ts/src/ts-dsl/type/template.ts index 6cbb940de..ca7372133 100644 --- a/packages/openapi-ts/src/ts-dsl/type/template.ts +++ b/packages/openapi-ts/src/ts-dsl/type/template.ts @@ -4,7 +4,9 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -export class TypeTemplateTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeTemplateTsDsl extends Mixed { protected parts: Array> = []; constructor(value?: string | MaybeTsDsl) { @@ -18,13 +20,11 @@ export class TypeTemplateTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - /** Renders a TemplateLiteralTypeNode. */ - $render(): ts.TemplateLiteralTypeNode { + protected override _render() { const parts = this.$node(this.parts); const normalized: Array = []; diff --git a/packages/openapi-ts/src/ts-dsl/type/tuple.ts b/packages/openapi-ts/src/ts-dsl/type/tuple.ts index e0ab0cc65..3f400978d 100644 --- a/packages/openapi-ts/src/ts-dsl/type/tuple.ts +++ b/packages/openapi-ts/src/ts-dsl/type/tuple.ts @@ -3,7 +3,9 @@ import ts from 'typescript'; import { TypeTsDsl } from '../base'; -export class TypeTupleTsDsl extends TypeTsDsl { +const Mixed = TypeTsDsl; + +export class TypeTupleTsDsl extends Mixed { protected _elements: Array = []; constructor(...nodes: Array) { @@ -16,12 +18,11 @@ export class TypeTupleTsDsl extends TypeTsDsl { return this; } - /** Walk this node and its children with a visitor. */ traverse(visitor: (node: SyntaxNode) => void): void { console.log(visitor); } - $render(): ts.TupleTypeNode { + protected override _render() { return ts.factory.createTupleTypeNode( this._elements.map((t) => this.$type(t)), ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efc0189b5..1e254d608 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1228,6 +1228,13 @@ importers: version: 3.0.8(typescript@5.8.3) packages/codegen-core: + dependencies: + ansi-colors: + specifier: 4.1.3 + version: 4.1.3 + color-support: + specifier: 1.1.3 + version: 1.1.3 devDependencies: '@config/vite-base': specifier: workspace:* From 0b345867d2625b775c17cde4fbf8f9dc7f546af0 Mon Sep 17 00:00:00 2001 From: Lubos Date: Tue, 25 Nov 2025 06:13:58 +0800 Subject: [PATCH 04/15] chore: symbol ref --- dev/openapi-ts.config.ts | 16 ++-- packages/codegen-core/src/debug.ts | 6 +- packages/codegen-core/src/symbols/symbol.ts | 8 +- packages/codegen-core/src/syntax-node.d.ts | 8 +- packages/openapi-ts/src/ir/types.d.ts | 6 ++ .../client-core/createClientConfig.ts | 4 +- .../@hey-api/sdk/shared/typeOptions.ts | 2 +- .../@hey-api/typescript/shared/operation.ts | 12 +-- .../@hey-api/typescript/shared/webhook.ts | 28 ++----- .../@hey-api/typescript/shared/webhooks.ts | 23 ------ .../plugins/@hey-api/typescript/v1/plugin.ts | 20 ++++- .../@hey-api/typescript/v1/toAst/string.ts | 4 +- .../src/plugins/@pinia/colada/queryKey.ts | 6 +- .../plugins/@tanstack/query-core/queryKey.ts | 4 +- .../src/plugins/arktype/shared/export.ts | 4 +- .../openapi-ts/src/plugins/fastify/plugin.ts | 30 +++----- .../src/plugins/valibot/shared/export.ts | 6 +- .../src/plugins/zod/shared/export.ts | 4 +- packages/openapi-ts/src/ts-dsl/base.ts | 52 +++++++------ packages/openapi-ts/src/ts-dsl/decl/class.ts | 10 ++- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 15 ++-- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/field.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/func.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/init.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/member.ts | 6 +- packages/openapi-ts/src/ts-dsl/decl/method.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/param.ts | 4 +- .../openapi-ts/src/ts-dsl/decl/pattern.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/setter.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/array.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/as.ts | 5 +- packages/openapi-ts/src/ts-dsl/expr/attr.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/await.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/binary.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/call.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/expr.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/id.ts | 4 +- .../openapi-ts/src/ts-dsl/expr/literal.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/new.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/object.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/prefix.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/prop.ts | 14 ++-- packages/openapi-ts/src/ts-dsl/expr/regexp.ts | 4 +- .../openapi-ts/src/ts-dsl/expr/template.ts | 4 +- .../openapi-ts/src/ts-dsl/expr/ternary.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 4 +- packages/openapi-ts/src/ts-dsl/layout/doc.ts | 6 -- packages/openapi-ts/src/ts-dsl/layout/hint.ts | 6 -- .../openapi-ts/src/ts-dsl/layout/newline.ts | 6 -- packages/openapi-ts/src/ts-dsl/layout/note.ts | 6 -- packages/openapi-ts/src/ts-dsl/mixins/args.ts | 3 +- packages/openapi-ts/src/ts-dsl/mixins/as.ts | 7 +- .../openapi-ts/src/ts-dsl/mixins/decorator.ts | 8 +- packages/openapi-ts/src/ts-dsl/mixins/do.ts | 3 +- packages/openapi-ts/src/ts-dsl/mixins/doc.ts | 3 +- packages/openapi-ts/src/ts-dsl/mixins/expr.ts | 3 +- packages/openapi-ts/src/ts-dsl/mixins/hint.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/layout.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/modifiers.ts | 2 +- packages/openapi-ts/src/ts-dsl/mixins/note.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/operator.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/optional.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/param.ts | 3 +- .../openapi-ts/src/ts-dsl/mixins/pattern.ts | 12 +-- .../openapi-ts/src/ts-dsl/mixins/type-args.ts | 28 ++++++- .../openapi-ts/src/ts-dsl/mixins/type-expr.ts | 51 ++++++++----- .../src/ts-dsl/mixins/type-params.ts | 16 ++-- .../openapi-ts/src/ts-dsl/mixins/value.ts | 3 +- packages/openapi-ts/src/ts-dsl/stmt/if.ts | 4 +- packages/openapi-ts/src/ts-dsl/stmt/return.ts | 4 +- packages/openapi-ts/src/ts-dsl/stmt/stmt.ts | 4 +- packages/openapi-ts/src/ts-dsl/stmt/throw.ts | 6 +- packages/openapi-ts/src/ts-dsl/stmt/var.ts | 4 +- packages/openapi-ts/src/ts-dsl/token.ts | 6 -- packages/openapi-ts/src/ts-dsl/type/alias.ts | 37 +++++++--- packages/openapi-ts/src/ts-dsl/type/and.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/attr.ts | 73 ++++++++++++------- packages/openapi-ts/src/ts-dsl/type/expr.ts | 40 ++++++---- packages/openapi-ts/src/ts-dsl/type/func.ts | 4 +- .../openapi-ts/src/ts-dsl/type/idx-sig.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/idx.ts | 34 +++++---- .../openapi-ts/src/ts-dsl/type/literal.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/mapped.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/object.ts | 4 +- .../openapi-ts/src/ts-dsl/type/operator.ts | 16 +++- packages/openapi-ts/src/ts-dsl/type/or.ts | 36 ++++++--- packages/openapi-ts/src/ts-dsl/type/param.ts | 8 +- packages/openapi-ts/src/ts-dsl/type/prop.ts | 6 +- packages/openapi-ts/src/ts-dsl/type/query.ts | 4 +- .../openapi-ts/src/ts-dsl/type/template.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/tuple.ts | 4 +- packages/openapi-ts/src/ts-dsl/utils/prop.ts | 19 ++--- 94 files changed, 490 insertions(+), 413 deletions(-) delete mode 100644 packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 900cff9ec..d487f3e44 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -41,7 +41,7 @@ export default defineConfig(() => { // 'dutchie.json', // 'enum-names-values.yaml', // 'invalid', - 'full.yaml', + // 'full.yaml', // 'object-property-names.yaml', // 'openai.yaml', // 'opencode.yaml', @@ -53,7 +53,7 @@ export default defineConfig(() => { // 'validators.yaml', // 'validators-circular-ref.json', // 'validators-circular-ref-2.yaml', - // 'zoom-video-sdk.json', + 'zoom-video-sdk.json', ), // path: 'https://get.heyapi.dev/hey-api/backend?branch=main&version=1.0.0', // path: 'http://localhost:4000/', @@ -83,7 +83,7 @@ export default defineConfig(() => { // 'https://somefakedomain.com/openapi.yaml', ], logs: { - level: 'silent', + // level: 'silent', path: './logs', }, // name: 'foo', @@ -263,7 +263,7 @@ export default defineConfig(() => { // }, // include... // instance: true, - name: '@hey-api/sdk', + // name: '@hey-api/sdk', // operationId: false, // paramsStructure: 'flat', // responseStyle: 'data', @@ -328,7 +328,7 @@ export default defineConfig(() => { // name: '{{name}}MO', name: 'options', }, - name: '@tanstack/react-query', + // name: '@tanstack/react-query', queryKeys: { // name: '{{name}}QK', name: 'options', @@ -374,7 +374,7 @@ export default defineConfig(() => { // definitions: 'z{{name}}Definition', exportFromIndex: true, // metadata: true, - name: 'valibot', + // name: 'valibot', // requests: { // case: 'PascalCase', // name: '{{name}}Data', @@ -451,7 +451,7 @@ export default defineConfig(() => { }, // exportFromIndex: true, metadata: true, - name: 'zod', + // name: 'zod', // requests: { // // case: 'SCREAMING_SNAKE_CASE', // // name: 'z{{name}}TestData', @@ -528,7 +528,7 @@ export default defineConfig(() => { httpResources: { asClass: true, }, - name: '@angular/common', + // name: '@angular/common', }, { exportFromIndex: true, diff --git a/packages/codegen-core/src/debug.ts b/packages/codegen-core/src/debug.ts index fb6e95289..4e7adce0d 100644 --- a/packages/codegen-core/src/debug.ts +++ b/packages/codegen-core/src/debug.ts @@ -14,12 +14,12 @@ export function debug(message: string, group: keyof typeof DEBUG_GROUPS) { const value = process.env.DEBUG; if (!value) return; - const groups = value.split(",").map(x => x.trim().toLowerCase()); + const groups = value.split(',').map((x) => x.trim().toLowerCase()); if ( !( - groups.includes("*") || - groups.includes("heyapi:*") || + groups.includes('*') || + groups.includes('heyapi:*') || groups.includes(`heyapi:${group}`) || groups.includes(group) ) diff --git a/packages/codegen-core/src/symbols/symbol.ts b/packages/codegen-core/src/symbols/symbol.ts index 9f06eecba..78e451824 100644 --- a/packages/codegen-core/src/symbols/symbol.ts +++ b/packages/codegen-core/src/symbols/symbol.ts @@ -84,7 +84,7 @@ export class Symbol { */ private _name: string; /** - * Root DSL node that defines this symbol. + * Root node that defines this symbol. * * @private */ @@ -311,14 +311,14 @@ export class Symbol { } /** - * Binds the DSL node that defines this symbol. + * Binds the node that defines this symbol. * * This may only be set once. */ setRootNode(node: ISyntaxNode): void { this.assertCanonical(); if (this._rootNode && this._rootNode !== node) { - throw new Error('Symbol is already bound to a different root DSL node.'); + throw new Error('Symbol is already bound to a different root node.'); } this._rootNode = node; } @@ -344,7 +344,7 @@ export class Symbol { private assertCanonical(): void { if (this._canonical && this._canonical !== this) { const message = `Illegal mutation of stub symbol ${this.toString()} → canonical: ${this._canonical.toString()}`; - debug(message, "symbol"); + debug(message, 'symbol'); throw new Error(message); } } diff --git a/packages/codegen-core/src/syntax-node.d.ts b/packages/codegen-core/src/syntax-node.d.ts index ca04a1bee..0acc2a472 100644 --- a/packages/codegen-core/src/syntax-node.d.ts +++ b/packages/codegen-core/src/syntax-node.d.ts @@ -2,13 +2,13 @@ import type { Symbol } from './symbols/symbol'; export interface ISyntaxNode { /** - * Return local names introduced by this node. + * Collect symbols referenced directly by this node into the provided accumulator. */ - getLocalNames(): Iterable; + collectSymbols(out: Set): void; /** - * Return symbols referenced directly by this node. + * Return local names introduced by this node. */ - getSymbols(): Iterable; + getLocalNames(): Iterable; /** * Rewrite local identifiers based on a rename map. */ diff --git a/packages/openapi-ts/src/ir/types.d.ts b/packages/openapi-ts/src/ir/types.d.ts index 6c28cce86..e7ba0bfe2 100644 --- a/packages/openapi-ts/src/ir/types.d.ts +++ b/packages/openapi-ts/src/ir/types.d.ts @@ -1,3 +1,5 @@ +import type { Symbol } from '@hey-api/codegen-core'; + import type { JsonSchemaDraft2020_12 } from '~/openApi/3.1.x/types/json-schema-draft-2020-12'; import type { SecuritySchemeObject, @@ -185,6 +187,10 @@ interface IRSchemaObject * follow a specific convention. */ propertyNames?: IRSchemaObject; + /** + * Reference to symbol instead of `$ref` string. + */ + symbolRef?: Symbol; /** * Each schema eventually resolves into `type`. */ diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts index fa5447282..29c154d57 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts @@ -49,13 +49,13 @@ export const createClientConfigType = ({ p .optional() .type( - $.type(symbolConfig.placeholder).generic( + $.type(symbolConfig).generic( $.type.and(symbolDefaultClientOptions.placeholder, 'T'), ), ), ) .returns( - $.type(symbolConfig.placeholder).generic( + $.type(symbolConfig).generic( $.type.and( $.type('Required').generic( symbolDefaultClientOptions.placeholder, diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts index ed1e67dba..78ab440fd 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts @@ -80,7 +80,7 @@ export const createTypeOptions = ({ ) .type( $.type.and( - $.type(symbolClientOptions.placeholder).$if( + $.type(symbolClientOptions).$if( isNuxtClient, (t) => t diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts index 4f81c2196..078eec703 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts @@ -210,11 +210,7 @@ export const operationToType = ({ const node = $.type .alias(symbol) .export() - .type( - $.type(symbolErrors.placeholder).idx( - $.type(symbolErrors.placeholder).keyof(), - ), - ); + .type($.type(symbolErrors).idx($.type(symbolErrors).keyof())); plugin.setSymbolValue(symbol, node); } } @@ -269,11 +265,7 @@ export const operationToType = ({ const node = $.type .alias(symbol) .export() - .type( - $.type(symbolResponses.placeholder).idx( - $.type(symbolResponses.placeholder).keyof(), - ), - ); + .type($.type(symbolResponses).idx($.type(symbolResponses).keyof())); plugin.setSymbolValue(symbol, node); } } diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts index d50b96308..ac99a4550 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts @@ -1,3 +1,5 @@ +import type { Symbol } from '@hey-api/codegen-core'; + import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import { createSchemaComment } from '~/plugins/shared/utils/schema'; @@ -12,7 +14,7 @@ const operationToDataType = ({ state, }: IrSchemaToAstOptions & { operation: IR.OperationObject; -}): string => { +}): Symbol => { const data: IR.SchemaObject = { type: 'object', }; @@ -54,21 +56,7 @@ const operationToDataType = ({ ); plugin.setSymbolValue(symbolWebhookPayload, node); - plugin.registerSymbol({ - exported: true, - kind: 'type', - meta: { - category: 'type', - path: state.path.value, - resource: 'definition', - resourceId: symbolWebhookPayload.placeholder, - tags: state.tags?.value, - tool: 'typescript', - }, - name: symbolWebhookPayload.name, - placeholder: symbolWebhookPayload.placeholder, - }); - data.properties.body = { $ref: symbolWebhookPayload.placeholder }; + data.properties.body = { symbolRef: symbolWebhookPayload }; dataRequired.push('body'); } else { data.properties.body = { type: 'never' }; @@ -112,7 +100,7 @@ const operationToDataType = ({ ); plugin.setSymbolValue(symbolWebhookRequest, node); - return symbolWebhookRequest.placeholder; + return symbolWebhookRequest; }; export const webhookToType = ({ @@ -121,9 +109,9 @@ export const webhookToType = ({ state, }: IrSchemaToAstOptions & { operation: IR.OperationObject; -}): string => { - const name = operationToDataType({ operation, plugin, state }); - return name; +}): Symbol => { + const symbol = operationToDataType({ operation, plugin, state }); + return symbol; // don't handle webhook responses for now, users only need requestBody }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts deleted file mode 100644 index 81bd4e4f9..000000000 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhooks.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Symbol } from '@hey-api/codegen-core'; - -import { $ } from '~/ts-dsl'; - -import type { HeyApiTypeScriptPlugin } from '../types'; - -export const createWebhooks = ({ - plugin, - symbolWebhooks, - webhookNames, -}: { - plugin: HeyApiTypeScriptPlugin['Instance']; - symbolWebhooks: Symbol; - webhookNames: ReadonlyArray; -}) => { - if (!webhookNames.length) return; - - const node = $.type - .alias(symbolWebhooks) - .export() - .type($.type.or(...webhookNames)); - plugin.setSymbolValue(symbolWebhooks, node); -}; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts index 4754a671e..5dd9c2e7d 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts @@ -1,3 +1,5 @@ +import type { Symbol } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -11,7 +13,6 @@ import { exportType } from '../shared/export'; import { operationToType } from '../shared/operation'; import type { IrSchemaToAstOptions, PluginState } from '../shared/types'; import { webhookToType } from '../shared/webhook'; -import { createWebhooks } from '../shared/webhooks'; import type { HeyApiTypeScriptPlugin } from '../types'; import { irSchemaWithTypeToAst } from './toAst'; @@ -22,6 +23,10 @@ export const irSchemaToAst = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): MaybeTsDsl => { + if (schema.symbolRef) { + return $.type(schema.symbolRef); + } + if (schema.$ref) { const symbol = plugin.referenceSymbol({ category: 'type', @@ -112,7 +117,7 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { }); const servers: Array = []; - const webhookNames: Array = []; + const webhooks: Array = []; plugin.forEach( 'operation', @@ -159,7 +164,7 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { servers.push(event.server); break; case 'webhook': - webhookNames.push( + webhooks.push( webhookToType({ operation: event.operation, plugin, @@ -175,5 +180,12 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { ); createClientOptions({ plugin, servers, symbolClientOptions }); - createWebhooks({ plugin, symbolWebhooks, webhookNames }); + + if (webhooks.length > 0) { + const node = $.type + .alias(symbolWebhooks) + .export() + .type($.type.or(...webhooks)); + plugin.setSymbolValue(symbolWebhooks, node); + } }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts index a3208ad27..06458e259 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts @@ -74,11 +74,11 @@ export const stringToAst = ({ const node = $.type .alias(symbolTypeName) .export() - .type($.type(symbolTypeId.placeholder).generic($.type.literal(type))); + .type($.type(symbolTypeId).generic($.type.literal(type))); plugin.setSymbolValue(symbolTypeName, node); } const symbol = plugin.referenceSymbol(query); - return $.type(symbol.placeholder); + return $.type(symbol); } } diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts index 097f87aca..2a2a54810 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts @@ -41,9 +41,7 @@ export const createQueryKeyFunction = ({ resource: `${plugin.name}._JSONValue`, }); - const returnType = $.type(symbolQueryKeyType.placeholder) - .generic(TOptionsType) - .idx(0); + const returnType = $.type(symbolQueryKeyType).generic(TOptionsType).idx(0); const baseUrlKey = getClientBaseUrlKey(plugin.context.config); @@ -173,7 +171,7 @@ export const createQueryKeyType = ({ const queryKeyType = $.type .alias(symbolQueryKeyType) .export() - .generic(TOptionsType, (g) => g.extends($.type(symbolOptions.placeholder))) + .generic(TOptionsType, (g) => g.extends($.type(symbolOptions))) .type( $.type.tuple( $.type.and( diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts index 11528dbfb..a49706ce0 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts @@ -49,9 +49,7 @@ export const createQueryKeyFunction = ({ tool: 'sdk', }); - const returnType = $.type(symbolQueryKeyType.placeholder) - .generic(TOptionsType) - .idx(0); + const returnType = $.type(symbolQueryKeyType).generic(TOptionsType).idx(0); const fn = $.const(symbolCreateQueryKey).assign( $.func() diff --git a/packages/openapi-ts/src/plugins/arktype/shared/export.ts b/packages/openapi-ts/src/plugins/arktype/shared/export.ts index 96da51263..e4c9761a8 100644 --- a/packages/openapi-ts/src/plugins/arktype/shared/export.ts +++ b/packages/openapi-ts/src/plugins/arktype/shared/export.ts @@ -48,9 +48,7 @@ export const exportAst = ({ const inferType = $.type .alias(typeInferSymbol) .export() - .type( - $.type(symbol.placeholder).attr(identifiers.type.infer).typeofType(), - ); + .type($.type(symbol).attr(identifiers.type.infer).typeofType()); plugin.setSymbolValue(typeInferSymbol, inferType); } }; diff --git a/packages/openapi-ts/src/plugins/fastify/plugin.ts b/packages/openapi-ts/src/plugins/fastify/plugin.ts index 33c701da2..17dce6874 100644 --- a/packages/openapi-ts/src/plugins/fastify/plugin.ts +++ b/packages/openapi-ts/src/plugins/fastify/plugin.ts @@ -26,7 +26,7 @@ const operationToRouteHandler = ({ type.prop('Body', (p) => p .required(operation.body!.required) - .type($.type(symbolDataType.placeholder).idx($.type.literal('body'))), + .type($.type(symbolDataType).idx($.type.literal('body'))), ); } @@ -37,9 +37,7 @@ const operationToRouteHandler = ({ .required( hasParameterGroupObjectRequired(operation.parameters!.header), ) - .type( - $.type(symbolDataType.placeholder).idx($.type.literal('headers')), - ), + .type($.type(symbolDataType).idx($.type.literal('headers'))), ); } @@ -49,9 +47,7 @@ const operationToRouteHandler = ({ .required( hasParameterGroupObjectRequired(operation.parameters!.path), ) - .type( - $.type(symbolDataType.placeholder).idx($.type.literal('path')), - ), + .type($.type(symbolDataType).idx($.type.literal('path'))), ); } @@ -61,9 +57,7 @@ const operationToRouteHandler = ({ .required( hasParameterGroupObjectRequired(operation.parameters!.query), ) - .type( - $.type(symbolDataType.placeholder).idx($.type.literal('query')), - ), + .type($.type(symbolDataType).idx($.type.literal('query'))), ); } } @@ -83,13 +77,10 @@ const operationToRouteHandler = ({ if (keys.length) { const hasDefaultResponse = keys.includes('default'); if (!hasDefaultResponse) { - errorsTypeReference = $.type(symbolErrorType.placeholder); + errorsTypeReference = $.type(symbolErrorType); } else if (keys.length > 1) { errorsTypeReference = $.type('Omit', (t) => - t.generics( - $.type(symbolErrorType.placeholder), - $.type.literal('default'), - ), + t.generics($.type(symbolErrorType), $.type.literal('default')), ); } } @@ -107,13 +98,10 @@ const operationToRouteHandler = ({ if (keys.length) { const hasDefaultResponse = keys.includes('default'); if (!hasDefaultResponse) { - responsesTypeReference = $.type(symbolResponseType.placeholder); + responsesTypeReference = $.type(symbolResponseType); } else if (keys.length > 1) { responsesTypeReference = $.type('Omit', (t) => - t.generics( - $.type(symbolResponseType.placeholder), - $.type.literal('default'), - ), + t.generics($.type(symbolResponseType), $.type.literal('default')), ); } } @@ -137,7 +125,7 @@ const operationToRouteHandler = ({ }); return { name: operation.id, - type: $.type(symbolRouteHandler.placeholder, (t) => t.generic(type)), + type: $.type(symbolRouteHandler, (t) => t.generic(type)), }; }; diff --git a/packages/openapi-ts/src/plugins/valibot/shared/export.ts b/packages/openapi-ts/src/plugins/valibot/shared/export.ts index d2c2f6dd6..666f5927e 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/export.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/export.ts @@ -30,11 +30,7 @@ export const exportAst = ({ c.doc(v), ) .$if(state.hasLazyExpression.value, (c) => - c.type( - $.type(v.placeholder).attr( - ast.typeName || identifiers.types.GenericSchema, - ), - ), + c.type($.type(v).attr(ast.typeName || identifiers.types.GenericSchema)), ) .assign(pipesToAst({ pipes: ast.pipes, plugin })); plugin.setSymbolValue(symbol, statement); diff --git a/packages/openapi-ts/src/plugins/zod/shared/export.ts b/packages/openapi-ts/src/plugins/zod/shared/export.ts index 7890bc73f..4cb903e34 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/export.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/export.ts @@ -31,7 +31,7 @@ export const exportAst = ({ .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v), ) - .$if(ast.typeName, (c, v) => c.type($.type(z.placeholder).attr(v))) + .$if(ast.typeName, (c, v) => c.type($.type(z).attr(v))) .assign(ast.expression); plugin.setSymbolValue(symbol, statement); @@ -40,7 +40,7 @@ export const exportAst = ({ .alias(typeInferSymbol) .export() .type( - $.type(z.placeholder) + $.type(z) .attr(identifiers.infer) .generic($(symbol.placeholder).typeofType()), ); diff --git a/packages/openapi-ts/src/ts-dsl/base.ts b/packages/openapi-ts/src/ts-dsl/base.ts index a9c1e6f0d..cb3e51a12 100644 --- a/packages/openapi-ts/src/ts-dsl/base.ts +++ b/packages/openapi-ts/src/ts-dsl/base.ts @@ -6,7 +6,7 @@ import ts from 'typescript'; export type MaybeArray = T | ReadonlyArray; export interface ITsDsl extends SyntaxNode { - /** Render this DSL node into a concrete TypeScript AST node. */ + /** Render this node into a concrete TypeScript AST. */ $render(): T; } @@ -14,13 +14,10 @@ export interface ITsDsl extends SyntaxNode { export type Constructor = new (...args: ReadonlyArray) => T; export abstract class TsDsl implements ITsDsl { - /** Render this DSL node into a concrete TypeScript AST node. */ + /** Render this node into a concrete TypeScript AST. */ protected abstract _render(): T; - /** Walk this node and its children with a visitor. */ - abstract traverse(visitor: (node: SyntaxNode) => void): void; - - /** Parent DSL node in the constructed syntax tree. */ + /** Parent node in the constructed syntax tree. */ protected parent?: TsDsl; /** The codegen symbol associated with this node. */ @@ -101,7 +98,7 @@ export abstract class TsDsl implements ITsDsl { return this; } - /** Render this DSL node into a concrete TypeScript AST node. */ + /** Render this node into a concrete TypeScript AST. */ $render(): T { if (!this.parent) { this._validate(); @@ -109,13 +106,14 @@ export abstract class TsDsl implements ITsDsl { return this._render(); } - /** Returns all locally declared names within this node. */ - getLocalNames(): Iterable { - return []; + /** Returns all symbols referenced by this node (directly or through children). */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + collectSymbols(_out: Set): void { + // noop } - /** Returns all symbols referenced by this node (directly or through children). */ - getSymbols(): Iterable { + /** Returns all locally declared names within this node. */ + getLocalNames(): Iterable { return []; } @@ -125,7 +123,7 @@ export abstract class TsDsl implements ITsDsl { // noop } - /** Assigns the parent DSL node, enforcing a single-parent invariant. */ + /** Assigns the parent node, enforcing a single-parent invariant. */ setParent(parent: TsDsl): this { if (this.parent && this.parent !== parent) { const message = `${this.constructor.name} already had a parent (${this.parent.constructor.name}), new parent attempted: ${parent.constructor.name}`; @@ -143,6 +141,11 @@ export abstract class TsDsl implements ITsDsl { return this; } + /** Walk this node and its children with a visitor. */ + traverse(visitor: (node: SyntaxNode) => void): void { + visitor(this); + } + protected $maybeId( expr: T, ): T extends string ? ts.Identifier : T { @@ -201,19 +204,23 @@ export abstract class TsDsl implements ITsDsl { return this.parent ? this.parent.getRootSymbol() : this.symbol!.canonical; } - /** Unwraps nested DSL nodes into raw TypeScript AST nodes. */ + /** Unwraps nested nodes into raw TypeScript AST. */ protected unwrap(value: I): I extends TsDsl ? N : I { return ( - value instanceof TsDsl ? value.$render() : value + value instanceof TsDsl ? value._render() : value ) as I extends TsDsl ? N : I; } /** Validate DSL invariants. */ protected _validate(): void { if (!this.parent && !this.symbol) { - const message = `${this.constructor.name}: top-level DSL node has no symbol`; + const message = + `${this.constructor.name}: node has neither a parent nor a symbol — ` + + `this likely means the node was never attached to a parent or is incorrectly ` + + `being treated as a root-level construct.`; debug(message, 'dsl'); - throw new Error(message); + // TODO: enable later + // throw new Error(message); } if (this.parent && this.symbol) { @@ -223,21 +230,22 @@ export abstract class TsDsl implements ITsDsl { } if (this.parent === undefined && this.symbol === undefined) { - const message = `${this.constructor.name}: non-root DSL node is missing a parent`; + const message = `${this.constructor.name}: non-root node is missing a parent`; debug(message, 'dsl'); - throw new Error(message); + // TODO: enable later + // throw new Error(message); } if (this.symbol && this.symbol.canonical !== this.symbol) { - const message = `${this.constructor.name}: DSL node is holding a non-canonical (stub) symbol`; + const message = `${this.constructor.name}: node is holding a non-canonical (stub) symbol`; debug(message, 'dsl'); throw new Error(message); } this.traverse((node) => { const dsl = node as TsDsl; - if (dsl !== this && dsl.parent !== this) { - const message = `${dsl.constructor.name}: child node has incorrect or missing parent`; + if (dsl !== this && !dsl.parent) { + const message = `${dsl.constructor.name}: child node has missing parent`; debug(message, 'dsl'); throw new Error(message); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index 93faf446d..8dc610d77 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -37,10 +37,14 @@ export class ClassTsDsl extends Mixed { this.symbol.setRootNode(this); } + override collectSymbols(out: Set): void { + console.log(out); + } + /** Adds one or more class members (fields, methods, etc.). */ do(...items: ReadonlyArray>): this { for (const item of items) { - if (typeof item === 'object' && 'setParent' in item) { + if (item instanceof TsDsl) { item.setParent(this); } // @ts-expect-error --- IGNORE --- @@ -86,8 +90,8 @@ export class ClassTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index d181fa24b..780634e24 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -1,4 +1,5 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -16,19 +17,23 @@ export class DecoratorTsDsl extends Mixed { ) { super(); this.name = name; - if (typeof name !== 'string' && 'id' in name) { + if (name instanceof Symbol) { this.getRootSymbol().addDependency(name); } this.args(...args); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override collectSymbols(out: Set): void { + console.log(out); + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { const target = - typeof this.name !== 'string' && 'id' in this.name + this.name instanceof Symbol ? this.$maybeId(this.name.finalName) : this.$node(this.name); diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index 988b269ba..416c357c2 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -42,8 +42,8 @@ export class EnumTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/field.ts b/packages/openapi-ts/src/ts-dsl/decl/field.ts index 29e66be60..0b08b6779 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/field.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/field.ts @@ -42,8 +42,8 @@ export class FieldTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index 24e741d09..f6d8794d3 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -97,8 +97,8 @@ class ImplFuncTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } // @ts-expect-error --- need to fix types --- diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 465877656..5efccc83c 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -42,8 +42,8 @@ export class GetterTsDsl extends Mixed { fn?.(this); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index 5fdeaae9d..d731e5a46 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -26,8 +26,8 @@ export class InitTsDsl extends Mixed { fn?.(this); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/member.ts b/packages/openapi-ts/src/ts-dsl/decl/member.ts index 9af12b171..dca59b394 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/member.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/member.ts @@ -25,8 +25,8 @@ export class EnumMemberTsDsl extends Mixed { } } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the enum member value. */ @@ -37,7 +37,7 @@ export class EnumMemberTsDsl extends Mixed { protected override _render() { return ts.factory.createEnumMember( - safeMemberName(this._name), + this.$node(safeMemberName(this._name)), this.$node(this._value), ); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index 73443ca07..cc997b04d 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -57,8 +57,8 @@ export class MethodTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/param.ts b/packages/openapi-ts/src/ts-dsl/decl/param.ts index c7c9113d2..9717445b5 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/param.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/param.ts @@ -30,8 +30,8 @@ export class ParamTsDsl extends Mixed { } } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the parameter type. */ diff --git a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts index 9ab213938..088c9ecd5 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts @@ -47,8 +47,8 @@ export class PatternTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index 01ddb3254..d54645f21 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -42,8 +42,8 @@ export class SetterTsDsl extends Mixed { fn?.(this); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/array.ts b/packages/openapi-ts/src/ts-dsl/expr/array.ts index 86f3589ba..4b0a9ece5 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/array.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/array.ts @@ -50,8 +50,8 @@ export class ArrayTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/as.ts b/packages/openapi-ts/src/ts-dsl/expr/as.ts index 5f2b7ae30..8c3f76674 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/as.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/as.ts @@ -21,9 +21,8 @@ export class AsTsDsl extends Mixed { this.type = type; } - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index 6f5698c91..9cfcd3d18 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -35,8 +35,8 @@ export class AttrTsDsl extends Mixed { this.right = right; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/await.ts b/packages/openapi-ts/src/ts-dsl/expr/await.ts index 1c9fcc5c0..5b6942a19 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/await.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/await.ts @@ -15,8 +15,8 @@ export class AwaitTsDsl extends Mixed { this._awaitExpr = expr; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/binary.ts b/packages/openapi-ts/src/ts-dsl/expr/binary.ts index c0b1d5ea2..10f3a8985 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/binary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/binary.ts @@ -120,8 +120,8 @@ export class BinaryTsDsl extends Mixed { return this.opAndExpr('*', expr); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/call.ts b/packages/openapi-ts/src/ts-dsl/expr/call.ts index ebd7bb878..2820bc5d8 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/call.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/call.ts @@ -26,8 +26,8 @@ export class CallTsDsl extends Mixed { ); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/expr.ts b/packages/openapi-ts/src/ts-dsl/expr/expr.ts index 7e8c72adf..c8d9671dc 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/expr.ts @@ -20,8 +20,8 @@ export class ExprTsDsl extends Mixed { this._exprInput = id; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/id.ts b/packages/openapi-ts/src/ts-dsl/expr/id.ts index 0e200cc7a..b1e030439 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/id.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/id.ts @@ -13,8 +13,8 @@ export class IdTsDsl extends Mixed { this.name = name; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/literal.ts b/packages/openapi-ts/src/ts-dsl/expr/literal.ts index 9d7843ad0..1811c87e0 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/literal.ts @@ -15,8 +15,8 @@ export class LiteralTsDsl extends Mixed { this.value = value; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/new.ts b/packages/openapi-ts/src/ts-dsl/expr/new.ts index 0e8298404..ef05b7c05 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/new.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/new.ts @@ -21,8 +21,8 @@ export class NewTsDsl extends Mixed { this.args(...args); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/object.ts b/packages/openapi-ts/src/ts-dsl/expr/object.ts index b3672fe7d..394ac31c6 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/object.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/object.ts @@ -74,8 +74,8 @@ export class ObjectTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts index 5d3ea0529..65b66960f 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts @@ -43,8 +43,8 @@ export class PrefixTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/prop.ts b/packages/openapi-ts/src/ts-dsl/expr/prop.ts index dd83e622d..114bcc83e 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prop.ts @@ -36,8 +36,8 @@ export class ObjectPropTsDsl extends Mixed { return this.missingRequiredCalls().length === 0; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } value(value: Expr | Stmt | ((p: ObjectPropTsDsl) => void)) { @@ -61,11 +61,15 @@ export class ObjectPropTsDsl extends Mixed { return ts.factory.createSpreadAssignment(node); } if (this.meta.kind === 'getter') { - const getter = new GetterTsDsl(safePropName(this.meta.name)).do(node); + const getter = new GetterTsDsl( + this.$node(safePropName(this.meta.name)), + ).do(node); return this.$node(getter); } if (this.meta.kind === 'setter') { - const setter = new SetterTsDsl(safePropName(this.meta.name)).do(node); + const setter = new SetterTsDsl( + this.$node(safePropName(this.meta.name)), + ).do(node); return this.$node(setter); } if (ts.isIdentifier(node) && node.text === this.meta.name) { @@ -81,7 +85,7 @@ export class ObjectPropTsDsl extends Mixed { ? ts.factory.createComputedPropertyName( this.$node(new IdTsDsl(this.meta.name)), ) - : safePropName(this.meta.name), + : this.$node(safePropName(this.meta.name)), node, ); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts index 273d8cb59..32c70a736 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts @@ -23,8 +23,8 @@ export class RegExpTsDsl extends Mixed { this.flags = flags; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/template.ts b/packages/openapi-ts/src/ts-dsl/expr/template.ts index a39f4d98d..3cea764cd 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/template.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/template.ts @@ -19,8 +19,8 @@ export class TemplateTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts index 4f1d5b460..cbe6b8e3e 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts @@ -31,8 +31,8 @@ export class TernaryTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index b2e8c2227..af5c8a401 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -16,8 +16,8 @@ export class TypeOfExprTsDsl extends Mixed { this._expr = expr; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/layout/doc.ts b/packages/openapi-ts/src/ts-dsl/layout/doc.ts index b6336a5f9..9336ea781 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/doc.ts @@ -1,4 +1,3 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -59,11 +58,6 @@ export class DocTsDsl extends TsDsl { return node; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - traverse(_visitor: (node: SyntaxNode) => void): void { - // noop - } - protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/layout/hint.ts b/packages/openapi-ts/src/ts-dsl/layout/hint.ts index 096ad0c8f..c8452f8eb 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/hint.ts @@ -1,4 +1,3 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -41,11 +40,6 @@ export class HintTsDsl extends TsDsl { return node; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - traverse(_visitor: (node: SyntaxNode) => void): void { - // noop - } - protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/layout/newline.ts b/packages/openapi-ts/src/ts-dsl/layout/newline.ts index c04b1763a..fe8d791d8 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/newline.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/newline.ts @@ -1,15 +1,9 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NewlineTsDsl extends TsDsl { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - traverse(_visitor: (node: SyntaxNode) => void): void { - // noop - } - protected override _render(): ts.Identifier { return this.$node(new IdTsDsl('\n')); } diff --git a/packages/openapi-ts/src/ts-dsl/layout/note.ts b/packages/openapi-ts/src/ts-dsl/layout/note.ts index 2bd0b3f32..b38fe39bc 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/note.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/note.ts @@ -1,4 +1,3 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -39,11 +38,6 @@ export class NoteTsDsl extends TsDsl { return node; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - traverse(_visitor: (node: SyntaxNode) => void): void { - // noop - } - protected override _render(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. diff --git a/packages/openapi-ts/src/ts-dsl/mixins/args.ts b/packages/openapi-ts/src/ts-dsl/mixins/args.ts index db9c124b7..7c53ba244 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/args.ts @@ -1,9 +1,10 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface ArgsMethods { +export interface ArgsMethods extends SyntaxNode { /** Renders the arguments into an array of `Expression`s. */ $args(): ReadonlyArray; /** Adds a single expression argument. */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/as.ts b/packages/openapi-ts/src/ts-dsl/mixins/as.ts index c5ff34212..7cecfadca 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/as.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/as.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; @@ -14,7 +15,7 @@ export function registerLazyAccessAsFactory(factory: AsFactory): void { asFactory = factory; } -export interface AsMethods { +export interface AsMethods extends SyntaxNode { /** Creates an `as` type assertion expression (e.g. `value as Type`). */ as(type: string | TypeTsDsl): AsTsDsl; } @@ -26,6 +27,10 @@ export function AsMixin>( protected as(type: string | TypeTsDsl): AsTsDsl { return asFactory!(this, type); } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + } } return As as unknown as MixinCtor; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts index afe7c78c0..cc8e46eab 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts @@ -1,11 +1,11 @@ -import type { Symbol } from '@hey-api/codegen-core'; +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { DecoratorTsDsl } from '../decl/decorator'; import type { BaseCtor, MixinCtor } from './types'; -export interface DecoratorMethods { +export interface DecoratorMethods extends SyntaxNode { /** Renders the decorators into an array of `ts.Decorator`s. */ $decorators(): ReadonlyArray; /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */ @@ -25,9 +25,7 @@ export function DecoratorMixin>( name: Symbol | string | MaybeTsDsl, ...args: ReadonlyArray> ): this { - this.decorators.push( - new DecoratorTsDsl(name, ...args).setParent(this as any), - ); + this.decorators.push(new DecoratorTsDsl(name, ...args).setParent(this)); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/do.ts b/packages/openapi-ts/src/ts-dsl/mixins/do.ts index 5a1803107..868072c8d 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/do.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/do.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { StmtTsDsl } from '../stmt/stmt'; import type { BaseCtor, MixinCtor } from './types'; -export interface DoMethods { +export interface DoMethods extends SyntaxNode { /** Renders the collected `.do()` calls into an array of `Statement` nodes. */ $do(): ReadonlyArray; /** Adds one or more expressions/statements to the body. */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts index 5427a8575..0f5bcc2a9 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { DocTsDsl } from '../layout/doc'; import type { BaseCtor, MixinCtor } from './types'; -export interface DocMethods { +export interface DocMethods extends SyntaxNode { doc(lines?: MaybeArray, fn?: (d: DocTsDsl) => void): this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts index c33103afc..39ce2d7fc 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -41,7 +42,7 @@ export function registerLazyAccessReturnFactory(factory: ReturnFactory): void { returnFactory = factory; } -export interface ExprMethods { +export interface ExprMethods extends SyntaxNode { /** Accesses a property on the current expression (e.g. `this.foo`). */ attr(name: string | ts.MemberName | number): AttrTsDsl; /** Awaits the current expression (e.g. `await expr`). */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts index 1116982c6..0a64d5caf 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { HintTsDsl } from '../layout/hint'; import type { BaseCtor, MixinCtor } from './types'; -export interface HintMethods { +export interface HintMethods extends SyntaxNode { hint(lines?: MaybeArray, fn?: (h: HintTsDsl) => void): this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts index ac7bef720..0aa5c256b 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts @@ -1,8 +1,9 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { BaseCtor, MixinCtor } from './types'; -export interface LayoutMethods { +export interface LayoutMethods extends SyntaxNode { /** Computes whether output should be multiline based on layout setting and element count. */ $multiline(count: number): boolean; /** Sets automatic line output with optional threshold (default: 3). */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts index 77315411f..497359632 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts @@ -12,7 +12,7 @@ export interface ModifierMethods extends Modifiers { * * @param kind - The syntax kind of the modifier to add. * @param condition - Whether to add the modifier. - * @returns The parent DSL node for chaining. + * @returns The parent node for chaining. */ _m(kind: ts.ModifierSyntaxKind, condition: boolean): this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/note.ts b/packages/openapi-ts/src/ts-dsl/mixins/note.ts index 5fc771e2e..4a4dd99e2 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/note.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/note.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { NoteTsDsl } from '../layout/note'; import type { BaseCtor, MixinCtor } from './types'; -export interface NoteMethods { +export interface NoteMethods extends SyntaxNode { note(lines?: MaybeArray, fn?: (h: NoteTsDsl) => void): this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts index bd616e1b2..7d00deed1 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts @@ -1,3 +1,4 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -6,7 +7,7 @@ import type { BaseCtor, MixinCtor } from './types'; type Expr = string | MaybeTsDsl; -export interface OperatorMethods { +export interface OperatorMethods extends SyntaxNode { /** Logical AND — `this && expr` */ and(expr: Expr): BinaryTsDsl; /** Creates an assignment expression (e.g. `this = expr`). */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts index 115a8764d..1109f0127 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts @@ -1,8 +1,9 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { BaseCtor, MixinCtor } from './types'; -export interface OptionalMethods { +export interface OptionalMethods extends SyntaxNode { _optional?: boolean; /** Marks the node as optional when the condition is true. */ optional(condition?: boolean): this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/param.ts b/packages/openapi-ts/src/ts-dsl/mixins/param.ts index f5a6d1927..2ffc74f62 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/param.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/param.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { ParamTsDsl } from '../decl/param'; import type { BaseCtor, MixinCtor } from './types'; -export interface ParamMethods { +export interface ParamMethods extends SyntaxNode { /** Renders the parameters into an array of `ParameterDeclaration`s. */ $params(): ReadonlyArray; /** Adds a parameter. */ diff --git a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts index 5bdf44f59..9bd68477d 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts @@ -1,10 +1,11 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { PatternTsDsl } from '../decl/pattern'; import type { BaseCtor, MixinCtor } from './types'; -export interface PatternMethods { +export interface PatternMethods extends SyntaxNode { /** Renders the pattern into a `BindingName`. */ $pattern(): ts.BindingName | undefined; /** Defines an array binding pattern. */ @@ -24,30 +25,31 @@ export function PatternMixin>( Base: TBase, ) { abstract class Pattern extends Base { - protected pattern: PatternTsDsl = new PatternTsDsl(); + protected pattern?: PatternTsDsl; protected array( ...props: ReadonlyArray | [ReadonlyArray] ): this { - this.pattern.array(...props); + (this.pattern ??= new PatternTsDsl()).array(...props); return this; } protected object( ...props: ReadonlyArray | Record> ): this { - this.pattern.object(...props); + (this.pattern ??= new PatternTsDsl()).object(...props); return this; } /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */ protected spread(name: string): this { - this.pattern.spread(name); + (this.pattern ??= new PatternTsDsl()).spread(name); return this; } /** Renders the pattern into a `BindingName`. */ protected $pattern(): ts.BindingName | undefined { + if (!this.pattern) return; return this.$node(this.pattern); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts index 6de990b1c..191cade55 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts @@ -1,9 +1,11 @@ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; +import { TsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface TypeArgsMethods { +export interface TypeArgsMethods extends SyntaxNode { /** Returns the type arguments as an array of ts.TypeNode nodes. */ $generics(): ReadonlyArray | undefined; /** Adds a single type argument (e.g. `string` in `Foo`). */ @@ -16,23 +18,41 @@ export function TypeArgsMixin>( Base: TBase, ) { abstract class TypeArgs extends Base { - protected _generics?: Array>; + protected _generics: Array> = []; protected generic(arg: string | MaybeTsDsl): this { - (this._generics ??= []).push(arg); + if (arg instanceof TsDsl) arg.setParent(this); + this._generics.push(arg); return this; } protected generics( ...args: ReadonlyArray> ): this { - (this._generics ??= []).push(...args); + for (const arg of args) { + if (arg instanceof TsDsl) arg.setParent(this); + this._generics.push(arg); + } return this; } protected $generics(): ReadonlyArray | undefined { return this.$type(this._generics); } + + override collectSymbols(out: Set): void { + super.collectSymbols(out); + for (const g of this._generics) { + if (g instanceof TsDsl) g.collectSymbols(out); + } + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + for (const g of this._generics) { + if (g instanceof TsDsl) g.traverse(visitor); + } + } } return TypeArgs as unknown as MixinCtor; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts index 509cc4c88..8d2f3fc1c 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts @@ -1,3 +1,4 @@ +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; @@ -64,7 +65,7 @@ export function registerLazyAccessTypeQueryFactory( typeQueryFactory = factory; } -export interface TypeExprMethods { +export interface TypeExprMethods extends SyntaxNode { /** Creates an indexed-access type (e.g. `Foo[K]`). */ idx( this: MaybeTsDsl, @@ -74,7 +75,7 @@ export interface TypeExprMethods { keyof(this: MaybeTsDsl): TypeOperatorTsDsl; /** Shorthand: builds `readonly T`. */ readonly(this: MaybeTsDsl): TypeOperatorTsDsl; - /** Create a TypeExpr DSL node representing ReturnType. */ + /** Create a TypeExpr node representing ReturnType. */ returnType(this: MaybeTsDsl): TypeExprTsDsl; /** * Create a `typeof` operator that narrows its return type based on the receiver. @@ -91,9 +92,9 @@ export interface TypeExprMethods { : T extends MaybeTsDsl ? TypeQueryTsDsl : TypeQueryTsDsl | TypeOfExprTsDsl; - /** Create a TypeOfExpr DSL node representing typeof this. */ + /** Create a TypeOfExpr node representing typeof this. */ typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl; - /** Create a TypeQuery DSL node representing typeof this. */ + /** Create a TypeQuery node representing typeof this. */ typeofType(this: MaybeTsDsl): TypeQueryTsDsl; /** Shorthand: builds `unique T`. */ unique(this: MaybeTsDsl): TypeOperatorTsDsl; @@ -104,46 +105,50 @@ export function TypeExprMixin>( ) { abstract class TypeExpr extends Base { protected idx( - this: MaybeTsDsl, + this: TypeTsDsl, index: string | number | MaybeTsDsl, ): TypeIdxTsDsl { return typeIdxFactory!(this, index); } - protected keyof(this: MaybeTsDsl): TypeOperatorTsDsl { + protected keyof(this: TypeTsDsl): TypeOperatorTsDsl { return typeOperatorFactory!().keyof(this); } - protected readonly(this: MaybeTsDsl): TypeOperatorTsDsl { + protected readonly(this: TypeTsDsl): TypeOperatorTsDsl { return typeOperatorFactory!().readonly(this); } - protected returnType(this: MaybeTsDsl): TypeExprTsDsl { - return typeExprFactory!('ReturnType').generic(typeQueryFactory!(this)); + protected returnType(this: TsDsl): TypeExprTsDsl { + const node = typeExprFactory!('ReturnType'); + node.setParent(this); + return node.generic(typeQueryFactory!(this)); } - protected typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl { + protected typeofExpr(this: TsDsl): TypeOfExprTsDsl { return typeOfExprFactory!(this); } protected typeofType( - this: MaybeTsDsl, + this: TypeTsDsl | TsDsl, ): TypeQueryTsDsl { return typeQueryFactory!(this); } - protected typeof>( + protected typeof>( this: T, - ): T extends MaybeTsDsl + ): T extends TsDsl ? TypeOfExprTsDsl - : T extends MaybeTsDsl + : T extends TypeTsDsl ? TypeQueryTsDsl : TypeQueryTsDsl | TypeOfExprTsDsl { if (this instanceof TsDsl) { - const node = this.$render(); - return ts.isExpression(node) - ? (typeOfExprFactory!(this) as any) - : (typeQueryFactory!(this) as any); + // @ts-expect-error + return ( + ts.isExpression(this._render()) + ? typeOfExprFactory!(this as any) + : typeQueryFactory!(this) + ) as any; } if (ts.isExpression(this as any)) { @@ -153,9 +158,17 @@ export function TypeExprMixin>( return typeQueryFactory!(this) as any; } - protected unique(this: MaybeTsDsl): TypeOperatorTsDsl { + protected unique(this: TypeTsDsl): TypeOperatorTsDsl { return typeOperatorFactory!().unique(this); } + + override collectSymbols(out: Set): void { + super.collectSymbols(out); + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + } } return TypeExpr as unknown as MixinCtor; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts index aee6b5db6..b60bc6ee0 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts @@ -1,11 +1,13 @@ -import type { Symbol } from '@hey-api/codegen-core'; +import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; +import { TsDsl } from '../base'; import { TypeParamTsDsl } from '../type/param'; import type { BaseCtor, MixinCtor } from './types'; -export interface TypeParamsMethods { +export interface TypeParamsMethods extends SyntaxNode { /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */ $generics(): ReadonlyArray | undefined; /** Adds a single type parameter (e.g. `T` in `Array`). */ @@ -20,13 +22,13 @@ export function TypeParamsMixin>( Base: TBase, ) { abstract class TypeParams extends Base { - protected _generics?: Array>; + protected _generics: Array> = []; protected generic( ...args: ConstructorParameters ): this { const g = new TypeParamTsDsl(...args).setParent(this); - (this._generics ??= []).push(g); + this._generics.push(g); return this; } @@ -34,13 +36,13 @@ export function TypeParamsMixin>( ...args: ReadonlyArray> ): this { for (let arg of args) { - if (typeof arg !== 'object' || 'id' in arg) { + if (typeof arg === 'string' || arg instanceof Symbol) { arg = new TypeParamTsDsl(arg); } - if (typeof arg === 'object' && 'setParent' in arg) { + if (arg instanceof TsDsl) { arg.setParent(this); } - (this._generics ??= []).push(arg); + this._generics.push(arg); } return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/value.ts b/packages/openapi-ts/src/ts-dsl/mixins/value.ts index 69a6ec4f5..2c2def448 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/value.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/value.ts @@ -1,9 +1,10 @@ +import type { SyntaxNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface ValueMethods { +export interface ValueMethods extends SyntaxNode { $value(): ts.Expression | undefined; /** Sets the initializer expression (e.g. `= expr`). */ assign(expr: string | MaybeTsDsl): this; diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index 2a1046244..bdbc7f92c 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -26,8 +26,8 @@ export class IfTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/stmt/return.ts b/packages/openapi-ts/src/ts-dsl/stmt/return.ts index 9fe6cb038..8d1804135 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/return.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/return.ts @@ -15,8 +15,8 @@ export class ReturnTsDsl extends Mixed { this._returnExpr = expr; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts index 1826c8822..41d543fde 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts @@ -13,8 +13,8 @@ export class StmtTsDsl extends Mixed { this._inner = inner; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts index c740fc003..1a3abc6ea 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts @@ -23,14 +23,14 @@ export class ThrowTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { const errorNode = this.$node(this.error); const messageNode = this.$node(this.msg ? [this.msg] : []).map((expr) => - typeof expr === 'string' ? new LiteralTsDsl(expr).$render() : expr, + typeof expr === 'string' ? this.$node(new LiteralTsDsl(expr)) : expr, ); if (this.useNew) { return ts.factory.createThrowStatement( diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index dde588180..caa900ae2 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -46,8 +46,8 @@ export class VarTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the variable type. */ diff --git a/packages/openapi-ts/src/ts-dsl/token.ts b/packages/openapi-ts/src/ts-dsl/token.ts index 51c31ef66..f4fef733d 100644 --- a/packages/openapi-ts/src/ts-dsl/token.ts +++ b/packages/openapi-ts/src/ts-dsl/token.ts @@ -1,4 +1,3 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from './base'; @@ -56,11 +55,6 @@ export class TokenTsDsl extends TsDsl< ); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - traverse(_visitor: (node: SyntaxNode) => void): void { - // noop - } - protected override _render(): ts.Token { if (!this._kind) { throw new Error(`Token missing \`.kind(kind)\``); diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index 15b761ca3..fd1cd5741 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -1,4 +1,5 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -7,20 +8,23 @@ import { DocMixin } from '../mixins/doc'; import { ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; +type Name = Symbol | string; +type Value = MaybeTsDsl; + const Mixed = DocMixin( ExportMixin(TypeParamsMixin(TsDsl)), ); export class TypeAliasTsDsl extends Mixed { - protected name: string; - protected value?: MaybeTsDsl; + protected name: Name; + protected value?: Value; - constructor(name: Symbol | string, fn?: (t: TypeAliasTsDsl) => void) { + constructor(name: Name, fn?: (t: TypeAliasTsDsl) => void) { super(); if (typeof name === 'string') { this.name = name; } else { - this.name = name.finalName; + this.name = name; this.symbol = name; this.symbol.setKind('type'); this.symbol.setRootNode(this); @@ -28,22 +32,37 @@ export class TypeAliasTsDsl extends Mixed { fn?.(this); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override collectSymbols(out: Set): void { + super.collectSymbols(out); + if (this.name instanceof Symbol) { + out.add(this.name); + } + if (this.value instanceof TsDsl) { + this.value.collectSymbols(out); + } + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + if (this.value instanceof TsDsl) { + this.value.traverse(visitor); + } } /** Sets the type expression on the right-hand side of `= ...`. */ - type(node: MaybeTsDsl): this { + type(node: Value): this { this.value = node; + if (this.value instanceof TsDsl) this.value.setParent(this); return this; } protected override _render() { if (!this.value) throw new Error(`Type alias '${this.name}' is missing a type definition`); + const name = this.name instanceof Symbol ? this.name.finalName : this.name; return ts.factory.createTypeAliasDeclaration( this.modifiers, - this.name, + name, this.$generics(), this.$type(this.value), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/and.ts b/packages/openapi-ts/src/ts-dsl/type/and.ts index 82e72a2c0..7a973b692 100644 --- a/packages/openapi-ts/src/ts-dsl/type/and.ts +++ b/packages/openapi-ts/src/ts-dsl/type/and.ts @@ -13,8 +13,8 @@ export class TypeAndTsDsl extends Mixed { this.types(...nodes); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } types(...nodes: Array): this { diff --git a/packages/openapi-ts/src/ts-dsl/type/attr.ts b/packages/openapi-ts/src/ts-dsl/type/attr.ts index 3dd5881b2..01fd1c6e8 100644 --- a/packages/openapi-ts/src/ts-dsl/type/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/attr.ts @@ -1,42 +1,63 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; import { TypeExprMixin } from '../mixins/type-expr'; +type Base = Symbol | string | MaybeTsDsl; +type Right = Symbol | string | ts.Identifier; + const Mixed = TypeExprMixin(TypeTsDsl); export class TypeAttrTsDsl extends Mixed { - protected _base?: Symbol | string | MaybeTsDsl; - protected right: Symbol | string | ts.Identifier; - - constructor( - base: Symbol | string | MaybeTsDsl, - right: string | ts.Identifier, - ); - constructor(right: Symbol | string | ts.Identifier); - constructor( - baseOrRight: Symbol | string | MaybeTsDsl, - maybeRight?: Symbol | string | ts.Identifier, - ) { + protected _base?: Base; + protected _right!: Right; + + constructor(base: Base, right: string | ts.Identifier); + constructor(right: Right); + constructor(base: Base, right?: Right) { super(); - if (maybeRight) { - this.base(baseOrRight); - this.right = maybeRight; + if (right) { + this.base(base); + this.right(right); } else { - this.base(undefined); - this.right = baseOrRight as string | ts.Identifier; + this.base(); + this.right(base as Right); } } - base(base?: Symbol | string | MaybeTsDsl): this { + base(base?: Base): this { this._base = base; + if (this._base instanceof TsDsl) this._base.setParent(this); + return this; + } + + right(right: Right): this { + this._right = right; return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override collectSymbols(out: Set): void { + super.collectSymbols(out); + if (this._base) { + if (this._base instanceof Symbol) { + out.add(this._base); + } else if (this._base instanceof TsDsl) { + this._base.collectSymbols(out); + } + } + if (this._right instanceof Symbol) { + out.add(this._right); + } + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + if (this._base instanceof TsDsl) { + this._base.traverse(visitor); + } } protected override _render() { @@ -44,16 +65,16 @@ export class TypeAttrTsDsl extends Mixed { throw new Error('TypeAttrTsDsl: missing base for qualified name'); } const left = - typeof this._base !== 'string' && this._base && 'id' in this._base + this._base instanceof Symbol ? this.$node(this._base.finalName) : this.$node(this._base); if (!ts.isEntityName(left)) { throw new Error('TypeAttrTsDsl: base must be an EntityName'); } const right = - typeof this.right !== 'string' && this.right && 'id' in this.right - ? this.$maybeId(this.right.finalName) - : this.$maybeId(this.right); + this._right instanceof Symbol + ? this.$maybeId(this._right.finalName) + : this.$maybeId(this._right); return ts.factory.createQualifiedName(left, right); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index 23aebefc0..0ce8d87f9 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -1,7 +1,8 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; import { TypeArgsMixin } from '../mixins/type-args'; import { registerLazyAccessTypeExprFactory, @@ -23,16 +24,11 @@ export class TypeExprTsDsl extends Mixed { fn?: (t: TypeExprTsDsl) => void, ) { super(); - if (name) { - if (typeof name === 'function') { - name(this); - } else { - this._exprInput = name; - if (typeof name !== 'string') { - this.getRootSymbol().addDependency(name); - } - fn?.(this); - } + if (typeof name === 'function') { + name(this); + } else { + this._exprInput = name; + fn?.(this); } } @@ -42,12 +38,26 @@ export class TypeExprTsDsl extends Mixed { right instanceof TypeAttrTsDsl ? right.base(this._exprInput) : new TypeAttrTsDsl(this._exprInput!, right); - this._exprInput = this._exprInput.setParent(this); + this._exprInput.setParent(this); return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override collectSymbols(out: Set): void { + super.collectSymbols(out); + if (this._exprInput && typeof this._exprInput !== 'string') { + if (this._exprInput instanceof Symbol) { + out.add(this._exprInput); + } else { + this._exprInput.collectSymbols(out); + } + } + } + + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + if (this._exprInput instanceof TsDsl) { + this._exprInput.traverse(visitor); + } } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/func.ts b/packages/openapi-ts/src/ts-dsl/type/func.ts index 14c4b572d..cb3b066eb 100644 --- a/packages/openapi-ts/src/ts-dsl/type/func.ts +++ b/packages/openapi-ts/src/ts-dsl/type/func.ts @@ -20,8 +20,8 @@ export class TypeFuncTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts index 4e32832f4..1967d4d82 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts @@ -32,8 +32,8 @@ export class TypeIdxSigTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the property type. */ diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index 1d49f34eb..30441d470 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -2,39 +2,47 @@ import type { SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; import { registerLazyAccessTypeIdxFactory, TypeExprMixin, } from '../mixins/type-expr'; +type Base = string | MaybeTsDsl; +type Index = string | number | MaybeTsDsl; + const Mixed = TypeExprMixin(TypeTsDsl); export class TypeIdxTsDsl extends Mixed { - protected _base: string | MaybeTsDsl; - protected _index: string | MaybeTsDsl | number; + protected _base!: Base; + protected _index!: Index; - constructor( - base: string | MaybeTsDsl, - index: string | MaybeTsDsl | number, - ) { + constructor(base: Base, index: Index) { super(); - this._base = base; - this._index = index; + this.base(base); + this.index(index); } - base(base: string | MaybeTsDsl): this { + base(base: Base): this { this._base = base; + if (this._base instanceof TsDsl) this._base.setParent(this); return this; } - index(index: string | MaybeTsDsl | number): this { + index(index: Index): this { this._index = index; + if (this._index instanceof TsDsl) this._index.setParent(this); return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + if (this._base instanceof TsDsl) { + this._base.traverse(visitor); + } + if (this._index instanceof TsDsl) { + this._index.traverse(visitor); + } } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/literal.ts b/packages/openapi-ts/src/ts-dsl/type/literal.ts index 7466647c8..33085953e 100644 --- a/packages/openapi-ts/src/ts-dsl/type/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/type/literal.ts @@ -14,8 +14,8 @@ export class TypeLiteralTsDsl extends Mixed { this.value = value; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/mapped.ts b/packages/openapi-ts/src/ts-dsl/type/mapped.ts index b88081b65..2957228e8 100644 --- a/packages/openapi-ts/src/ts-dsl/type/mapped.ts +++ b/packages/openapi-ts/src/ts-dsl/type/mapped.ts @@ -68,8 +68,8 @@ export class TypeMappedTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the mapped value type: `[K in X]: ValueType` */ diff --git a/packages/openapi-ts/src/ts-dsl/type/object.ts b/packages/openapi-ts/src/ts-dsl/type/object.ts index 18b20f27e..09f8dde9b 100644 --- a/packages/openapi-ts/src/ts-dsl/type/object.ts +++ b/packages/openapi-ts/src/ts-dsl/type/object.ts @@ -34,8 +34,8 @@ export class TypeObjectTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index 9502e3932..97d5b8fbf 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; import { registerLazyAccessTypeOperatorFactory } from '../mixins/type-expr'; type Op = @@ -29,6 +29,10 @@ export class TypeOperatorTsDsl extends Mixed { protected _op?: Op; protected _type?: Type; + override collectSymbols(out: Set): void { + super.collectSymbols(out); + } + /** Shorthand: builds `keyof T`. */ keyof(type: Type): this { this.operator(ts.SyntaxKind.KeyOfKeyword); @@ -49,13 +53,17 @@ export class TypeOperatorTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + if (this._type instanceof TsDsl) { + this._type.traverse(visitor); + } } /** Sets the target type of the operator. */ type(type: Type): this { this._type = type; + if (this._type instanceof TsDsl) this._type.setParent(this); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/type/or.ts b/packages/openapi-ts/src/ts-dsl/type/or.ts index 61ab200ea..6933837af 100644 --- a/packages/openapi-ts/src/ts-dsl/type/or.ts +++ b/packages/openapi-ts/src/ts-dsl/type/or.ts @@ -1,36 +1,48 @@ import type { SyntaxNode } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; + +type Type = Symbol | string | ts.TypeNode | TypeTsDsl; const Mixed = TypeTsDsl; export class TypeOrTsDsl extends Mixed { - protected _types: Array = []; + protected _types: Array = []; - constructor(...nodes: Array) { + constructor(...nodes: Array) { super(); this.types(...nodes); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); + for (const node of this._types) { + if (node instanceof TsDsl) { + node.traverse(visitor); + } + } } - types(...nodes: Array): this { - this._types.push(...nodes); + types(...nodes: Array): this { + for (const node of nodes) { + if (node instanceof TsDsl) node.setParent(this); + this._types.push(node); + } return this; } protected override _render() { const flat: Array = []; - for (const n of this._types) { - const t = this.$type(n); - if (ts.isUnionTypeNode(t)) { - flat.push(...t.types); + for (const node of this._types) { + const value = node instanceof Symbol ? node.finalName : node; + const type = this.$type(value); + if (ts.isUnionTypeNode(type)) { + flat.push(...type.types); } else { - flat.push(t); + flat.push(type); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/param.ts b/packages/openapi-ts/src/ts-dsl/type/param.ts index 20f1f2109..31db589d6 100644 --- a/packages/openapi-ts/src/ts-dsl/type/param.ts +++ b/packages/openapi-ts/src/ts-dsl/type/param.ts @@ -20,6 +20,10 @@ export class TypeParamTsDsl extends Mixed { fn?.(this); } + override collectSymbols(out: Set): void { + console.log(out); + } + default(value: string | MaybeTsDsl | boolean): this { this.defaultValue = value; return this; @@ -30,8 +34,8 @@ export class TypeParamTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/prop.ts b/packages/openapi-ts/src/ts-dsl/type/prop.ts index 13fd2077d..7e6ad5b61 100644 --- a/packages/openapi-ts/src/ts-dsl/type/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/type/prop.ts @@ -21,8 +21,8 @@ export class TypePropTsDsl extends Mixed { fn(this); } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } /** Sets the property type. */ @@ -37,7 +37,7 @@ export class TypePropTsDsl extends Mixed { } return ts.factory.createPropertySignature( this.modifiers, - safePropName(this.name), + this.$node(safePropName(this.name)), this._optional ? this.$node(new TokenTsDsl().optional()) : undefined, this.$type(this._type), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index 7013337b6..7c93e226a 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -18,8 +18,8 @@ export class TypeQueryTsDsl extends Mixed { this._expr = expr; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/template.ts b/packages/openapi-ts/src/ts-dsl/type/template.ts index ca7372133..90c0cf583 100644 --- a/packages/openapi-ts/src/ts-dsl/type/template.ts +++ b/packages/openapi-ts/src/ts-dsl/type/template.ts @@ -20,8 +20,8 @@ export class TypeTemplateTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/tuple.ts b/packages/openapi-ts/src/ts-dsl/type/tuple.ts index 3f400978d..e365c4306 100644 --- a/packages/openapi-ts/src/ts-dsl/type/tuple.ts +++ b/packages/openapi-ts/src/ts-dsl/type/tuple.ts @@ -18,8 +18,8 @@ export class TypeTupleTsDsl extends Mixed { return this; } - traverse(visitor: (node: SyntaxNode) => void): void { - console.log(visitor); + override traverse(visitor: (node: SyntaxNode) => void): void { + super.traverse(visitor); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/utils/prop.ts b/packages/openapi-ts/src/ts-dsl/utils/prop.ts index fbc342e9d..309f0a179 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/prop.ts @@ -1,30 +1,31 @@ -import ts from 'typescript'; +import type ts from 'typescript'; import { numberRegExp, validTypescriptIdentifierRegExp } from '~/utils/regexp'; +import type { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; import { LiteralTsDsl } from '../expr/literal'; -export const safeMemberName = (name: string): ts.PropertyName => { +export const safeMemberName = (name: string): TsDsl => { validTypescriptIdentifierRegExp.lastIndex = 0; if (validTypescriptIdentifierRegExp.test(name)) { - return new IdTsDsl(name).$render(); + return new IdTsDsl(name); } - return new LiteralTsDsl(name).$render() as ts.StringLiteral; + return new LiteralTsDsl(name) as TsDsl; }; -export const safePropName = (name: string): ts.PropertyName => { +export const safePropName = (name: string): TsDsl => { numberRegExp.lastIndex = 0; if (numberRegExp.test(name)) { return name.startsWith('-') - ? (new LiteralTsDsl(name).$render() as ts.StringLiteral) - : ts.factory.createNumericLiteral(name); + ? (new LiteralTsDsl(name) as TsDsl) + : (new LiteralTsDsl(Number(name)) as TsDsl); } validTypescriptIdentifierRegExp.lastIndex = 0; if (validTypescriptIdentifierRegExp.test(name)) { - return new IdTsDsl(name).$render(); + return new IdTsDsl(name); } - return new LiteralTsDsl(name).$render() as ts.StringLiteral; + return new LiteralTsDsl(name) as TsDsl; }; From d1ea0baed307d5fb962094be473108be53160fdc Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 27 Nov 2025 01:30:30 +0800 Subject: [PATCH 05/15] chore: clean up renderer --- .vscode/launch.json | 2 +- dev/openapi-ts.config.ts | 35 +- .../src/__tests__/symbols.test.ts | 85 +++ packages/codegen-core/src/bindings/plan.d.ts | 76 +++ packages/codegen-core/src/debug.ts | 1 + packages/codegen-core/src/files/registry.ts | 11 +- packages/codegen-core/src/files/rules.d.ts | 14 + packages/codegen-core/src/files/types.d.ts | 57 +- packages/codegen-core/src/index.ts | 10 +- packages/codegen-core/src/nodes/node.d.ts | 13 + packages/codegen-core/src/nodes/registry.ts | 26 + packages/codegen-core/src/nodes/types.d.ts | 16 + .../codegen-core/src/project/namespace.ts | 77 +++ packages/codegen-core/src/project/project.ts | 263 ++++++--- packages/codegen-core/src/project/types.d.ts | 33 +- packages/codegen-core/src/renderer/types.d.ts | 9 + packages/codegen-core/src/symbols/analyzer.ts | 61 ++ packages/codegen-core/src/symbols/registry.ts | 3 + packages/codegen-core/src/symbols/symbol.ts | 35 +- packages/codegen-core/src/syntax-node.d.ts | 20 - packages/openapi-ts/src/generate/renderer.ts | 159 ++++-- .../plugins/@angular/common/httpRequests.ts | 26 +- .../plugins/@angular/common/httpResources.ts | 52 +- .../plugins/@hey-api/client-core/client.ts | 10 +- .../client-core/createClientConfig.ts | 12 +- .../src/plugins/@hey-api/schemas/plugin.ts | 6 +- .../src/plugins/@hey-api/sdk/shared/class.ts | 34 +- .../plugins/@hey-api/sdk/shared/functions.ts | 6 +- .../plugins/@hey-api/sdk/shared/operation.ts | 47 +- .../@hey-api/sdk/shared/typeOptions.ts | 14 +- .../plugins/@hey-api/transformers/plugin.ts | 15 +- .../typescript/shared/clientOptions.ts | 2 +- .../@hey-api/typescript/shared/export.ts | 8 +- .../@hey-api/typescript/shared/operation.ts | 10 +- .../@hey-api/typescript/shared/webhook.ts | 4 +- .../plugins/@hey-api/typescript/v1/plugin.ts | 2 +- .../@hey-api/typescript/v1/toAst/string.ts | 4 +- .../plugins/@pinia/colada/mutationOptions.ts | 2 +- .../src/plugins/@pinia/colada/queryKey.ts | 30 +- .../src/plugins/@pinia/colada/queryOptions.ts | 10 +- .../plugins/@tanstack/query-core/queryKey.ts | 10 +- .../query-core/v5/infiniteQueryOptions.ts | 15 +- .../query-core/v5/mutationOptions.ts | 2 +- .../@tanstack/query-core/v5/queryOptions.ts | 10 +- .../@tanstack/query-core/v5/useQuery.ts | 6 +- .../src/plugins/arktype/shared/export.ts | 10 +- .../openapi-ts/src/plugins/arktype/v2/api.ts | 16 +- .../src/plugins/arktype/v2/plugin.ts | 16 +- .../src/plugins/arktype/v2/toAst/index.ts | 2 +- .../openapi-ts/src/plugins/fastify/plugin.ts | 2 +- .../src/plugins/shared/utils/instance.ts | 8 + .../openapi-ts/src/plugins/swr/v2/useSwr.ts | 4 +- .../src/plugins/valibot/shared/export.ts | 2 +- .../src/plugins/valibot/shared/pipesToAst.ts | 2 +- .../openapi-ts/src/plugins/valibot/v1/api.ts | 6 +- .../src/plugins/valibot/v1/plugin.ts | 20 +- .../src/plugins/valibot/v1/toAst/array.ts | 8 +- .../src/plugins/valibot/v1/toAst/boolean.ts | 6 +- .../src/plugins/valibot/v1/toAst/enum.ts | 4 +- .../src/plugins/valibot/v1/toAst/never.ts | 2 +- .../src/plugins/valibot/v1/toAst/null.ts | 2 +- .../src/plugins/valibot/v1/toAst/number.ts | 32 +- .../src/plugins/valibot/v1/toAst/object.ts | 19 +- .../src/plugins/valibot/v1/toAst/string.ts | 40 +- .../src/plugins/valibot/v1/toAst/tuple.ts | 8 +- .../src/plugins/valibot/v1/toAst/undefined.ts | 4 +- .../src/plugins/valibot/v1/toAst/unknown.ts | 2 +- .../src/plugins/valibot/v1/toAst/void.ts | 2 +- .../openapi-ts/src/plugins/zod/mini/api.ts | 6 +- .../openapi-ts/src/plugins/zod/mini/plugin.ts | 26 +- .../src/plugins/zod/mini/toAst/array.ts | 22 +- .../src/plugins/zod/mini/toAst/boolean.ts | 6 +- .../src/plugins/zod/mini/toAst/enum.ts | 20 +- .../src/plugins/zod/mini/toAst/never.ts | 2 +- .../src/plugins/zod/mini/toAst/null.ts | 2 +- .../src/plugins/zod/mini/toAst/number.ts | 16 +- .../src/plugins/zod/mini/toAst/object.ts | 6 +- .../src/plugins/zod/mini/toAst/string.ts | 44 +- .../src/plugins/zod/mini/toAst/tuple.ts | 6 +- .../src/plugins/zod/mini/toAst/undefined.ts | 2 +- .../src/plugins/zod/mini/toAst/unknown.ts | 2 +- .../src/plugins/zod/mini/toAst/void.ts | 2 +- .../src/plugins/zod/shared/export.ts | 10 +- packages/openapi-ts/src/plugins/zod/v3/api.ts | 6 +- .../openapi-ts/src/plugins/zod/v3/plugin.ts | 10 +- .../src/plugins/zod/v3/toAst/array.ts | 8 +- .../src/plugins/zod/v3/toAst/boolean.ts | 6 +- .../src/plugins/zod/v3/toAst/enum.ts | 16 +- .../src/plugins/zod/v3/toAst/never.ts | 2 +- .../src/plugins/zod/v3/toAst/null.ts | 2 +- .../src/plugins/zod/v3/toAst/number.ts | 6 +- .../src/plugins/zod/v3/toAst/object.ts | 4 +- .../src/plugins/zod/v3/toAst/string.ts | 6 +- .../src/plugins/zod/v3/toAst/tuple.ts | 6 +- .../src/plugins/zod/v3/toAst/undefined.ts | 2 +- .../src/plugins/zod/v3/toAst/unknown.ts | 2 +- .../src/plugins/zod/v3/toAst/void.ts | 2 +- packages/openapi-ts/src/plugins/zod/v4/api.ts | 6 +- .../openapi-ts/src/plugins/zod/v4/plugin.ts | 18 +- .../src/plugins/zod/v4/toAst/array.ts | 8 +- .../src/plugins/zod/v4/toAst/boolean.ts | 6 +- .../src/plugins/zod/v4/toAst/enum.ts | 20 +- .../src/plugins/zod/v4/toAst/never.ts | 2 +- .../src/plugins/zod/v4/toAst/null.ts | 2 +- .../src/plugins/zod/v4/toAst/number.ts | 8 +- .../src/plugins/zod/v4/toAst/object.ts | 6 +- .../src/plugins/zod/v4/toAst/string.ts | 28 +- .../src/plugins/zod/v4/toAst/tuple.ts | 6 +- .../src/plugins/zod/v4/toAst/undefined.ts | 2 +- .../src/plugins/zod/v4/toAst/unknown.ts | 2 +- .../src/plugins/zod/v4/toAst/void.ts | 2 +- packages/openapi-ts/src/ts-dsl/base.ts | 120 +--- packages/openapi-ts/src/ts-dsl/decl/class.ts | 79 ++- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 34 +- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 34 +- packages/openapi-ts/src/ts-dsl/decl/field.ts | 23 +- packages/openapi-ts/src/ts-dsl/decl/func.ts | 47 +- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 6 +- packages/openapi-ts/src/ts-dsl/decl/init.ts | 6 +- packages/openapi-ts/src/ts-dsl/decl/member.ts | 9 +- packages/openapi-ts/src/ts-dsl/decl/method.ts | 11 +- packages/openapi-ts/src/ts-dsl/decl/param.ts | 7 +- .../openapi-ts/src/ts-dsl/decl/pattern.ts | 10 +- packages/openapi-ts/src/ts-dsl/decl/setter.ts | 6 +- packages/openapi-ts/src/ts-dsl/expr/array.ts | 15 +- packages/openapi-ts/src/ts-dsl/expr/as.ts | 36 +- packages/openapi-ts/src/ts-dsl/expr/attr.ts | 38 +- packages/openapi-ts/src/ts-dsl/expr/await.ts | 25 +- packages/openapi-ts/src/ts-dsl/expr/binary.ts | 25 +- packages/openapi-ts/src/ts-dsl/expr/call.ts | 29 +- packages/openapi-ts/src/ts-dsl/expr/expr.ts | 20 +- .../openapi-ts/src/ts-dsl/expr/fromValue.ts | 7 +- packages/openapi-ts/src/ts-dsl/expr/id.ts | 6 +- .../openapi-ts/src/ts-dsl/expr/literal.ts | 6 +- packages/openapi-ts/src/ts-dsl/expr/new.ts | 23 +- packages/openapi-ts/src/ts-dsl/expr/object.ts | 17 +- packages/openapi-ts/src/ts-dsl/expr/prefix.ts | 13 +- packages/openapi-ts/src/ts-dsl/expr/prop.ts | 22 +- packages/openapi-ts/src/ts-dsl/expr/regexp.ts | 6 +- .../openapi-ts/src/ts-dsl/expr/template.ts | 15 +- .../openapi-ts/src/ts-dsl/expr/ternary.ts | 15 +- packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 9 +- packages/openapi-ts/src/ts-dsl/index.ts | 2 +- packages/openapi-ts/src/ts-dsl/layout/doc.ts | 5 + packages/openapi-ts/src/ts-dsl/layout/hint.ts | 5 + .../openapi-ts/src/ts-dsl/layout/newline.ts | 5 + packages/openapi-ts/src/ts-dsl/layout/note.ts | 5 + packages/openapi-ts/src/ts-dsl/mixins/args.ts | 40 +- packages/openapi-ts/src/ts-dsl/mixins/as.ts | 27 +- .../openapi-ts/src/ts-dsl/mixins/decorator.ts | 15 +- packages/openapi-ts/src/ts-dsl/mixins/do.ts | 13 +- packages/openapi-ts/src/ts-dsl/mixins/doc.ts | 8 +- packages/openapi-ts/src/ts-dsl/mixins/expr.ts | 73 +-- packages/openapi-ts/src/ts-dsl/mixins/hint.ts | 8 +- .../openapi-ts/src/ts-dsl/mixins/layout.ts | 8 +- .../openapi-ts/src/ts-dsl/mixins/modifiers.ts | 5 + packages/openapi-ts/src/ts-dsl/mixins/note.ts | 8 +- .../openapi-ts/src/ts-dsl/mixins/operator.ts | 10 +- .../openapi-ts/src/ts-dsl/mixins/optional.ts | 8 +- .../openapi-ts/src/ts-dsl/mixins/param.ts | 13 +- .../openapi-ts/src/ts-dsl/mixins/pattern.ts | 11 +- .../openapi-ts/src/ts-dsl/mixins/type-args.ts | 52 +- .../openapi-ts/src/ts-dsl/mixins/type-expr.ts | 29 +- .../src/ts-dsl/mixins/type-params.ts | 23 +- .../openapi-ts/src/ts-dsl/mixins/value.ts | 19 +- packages/openapi-ts/src/ts-dsl/stmt/if.ts | 18 +- packages/openapi-ts/src/ts-dsl/stmt/return.ts | 25 +- packages/openapi-ts/src/ts-dsl/stmt/stmt.ts | 9 +- packages/openapi-ts/src/ts-dsl/stmt/throw.ts | 14 +- packages/openapi-ts/src/ts-dsl/stmt/var.ts | 35 +- packages/openapi-ts/src/ts-dsl/type/alias.ts | 41 +- packages/openapi-ts/src/ts-dsl/type/and.ts | 24 +- packages/openapi-ts/src/ts-dsl/type/attr.ts | 53 +- packages/openapi-ts/src/ts-dsl/type/expr.ts | 59 +- .../openapi-ts/src/ts-dsl/type/fromValue.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/func.ts | 11 +- .../openapi-ts/src/ts-dsl/type/idx-sig.ts | 35 +- packages/openapi-ts/src/ts-dsl/type/idx.ts | 22 +- .../openapi-ts/src/ts-dsl/type/literal.ts | 6 +- packages/openapi-ts/src/ts-dsl/type/mapped.ts | 16 +- packages/openapi-ts/src/ts-dsl/type/object.ts | 13 +- .../openapi-ts/src/ts-dsl/type/operator.ts | 17 +- packages/openapi-ts/src/ts-dsl/type/or.ts | 26 +- packages/openapi-ts/src/ts-dsl/type/param.ts | 47 +- packages/openapi-ts/src/ts-dsl/type/prop.ts | 25 +- packages/openapi-ts/src/ts-dsl/type/query.ts | 9 +- .../openapi-ts/src/ts-dsl/type/template.ts | 15 +- packages/openapi-ts/src/ts-dsl/type/tuple.ts | 15 +- specs/3.1.x/openai.yaml | 528 +++++++++--------- 189 files changed, 2297 insertions(+), 1810 deletions(-) create mode 100644 packages/codegen-core/src/bindings/plan.d.ts create mode 100644 packages/codegen-core/src/files/rules.d.ts create mode 100644 packages/codegen-core/src/nodes/node.d.ts create mode 100644 packages/codegen-core/src/nodes/registry.ts create mode 100644 packages/codegen-core/src/nodes/types.d.ts create mode 100644 packages/codegen-core/src/project/namespace.ts create mode 100644 packages/codegen-core/src/symbols/analyzer.ts delete mode 100644 packages/codegen-core/src/syntax-node.d.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 5db1d3093..edbd4ea4b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -18,7 +18,7 @@ "runtimeArgs": ["-r", "ts-node/register/transpile-only"], "program": "${workspaceFolder}/packages/openapi-ts/src/run.ts", "env": { - "DEBUG": "heyapi:*" + "DEBUG": "false" } } ] diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index d487f3e44..f0d31addb 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -43,7 +43,7 @@ export default defineConfig(() => { // 'invalid', // 'full.yaml', // 'object-property-names.yaml', - // 'openai.yaml', + 'openai.yaml', // 'opencode.yaml', // 'pagination-ref.yaml', // 'sdk-instance.yaml', @@ -53,7 +53,7 @@ export default defineConfig(() => { // 'validators.yaml', // 'validators-circular-ref.json', // 'validators-circular-ref-2.yaml', - 'zoom-video-sdk.json', + // 'zoom-video-sdk.json', ), // path: 'https://get.heyapi.dev/hey-api/backend?branch=main&version=1.0.0', // path: 'http://localhost:4000/', @@ -237,6 +237,7 @@ export default defineConfig(() => { // error: '他們_error_{{name}}', // name: '你們_errors_{{name}}', // }, + // exportFromIndex: false, name: '@hey-api/typescript', // requests: '我們_data_{{name}}', // responses: { @@ -263,7 +264,7 @@ export default defineConfig(() => { // }, // include... // instance: true, - // name: '@hey-api/sdk', + name: '@hey-api/sdk', // operationId: false, // paramsStructure: 'flat', // responseStyle: 'data', @@ -272,7 +273,7 @@ export default defineConfig(() => { // signature: 'object', // transformer: '@hey-api/transformers', // transformer: true, - validator: 'valibot', + validator: 'zod', // validator: { // request: 'zod', // response: 'zod', @@ -371,18 +372,18 @@ export default defineConfig(() => { { // case: 'SCREAMING_SNAKE_CASE', // comments: false, - // definitions: 'z{{name}}Definition', + definitions: 'z{{name}}', exportFromIndex: true, // metadata: true, - // name: 'valibot', + name: 'valibot', // requests: { // case: 'PascalCase', // name: '{{name}}Data', // }, - // responses: { - // // case: 'snake_case', - // name: 'z{{name}}TestResponse', - // }, + responses: { + // case: 'snake_case', + name: 'z{{name}}TestResponse', + }, // webhooks: { // name: 'q{{name}}CoolWebhook', // }, @@ -425,10 +426,7 @@ export default defineConfig(() => { validator({ $, schema, v }) { return [ $.const('parsed').assign( - $(v.placeholder) - .attr('safeParseAsync') - .call(schema.placeholder, 'data') - .await(), + $(v).attr('safeParseAsync').call(schema, 'data').await(), ), $('parsed').return(), ]; @@ -449,9 +447,9 @@ export default defineConfig(() => { // infer: 'D{{name}}ZodType', // }, }, - // exportFromIndex: true, + exportFromIndex: true, metadata: true, - // name: 'zod', + name: 'zod', // requests: { // // case: 'SCREAMING_SNAKE_CASE', // // name: 'z{{name}}TestData', @@ -505,10 +503,7 @@ export default defineConfig(() => { validator({ $, schema }) { return [ $.const('parsed').assign( - $(schema.placeholder) - .attr('safeParseAsync') - .call('data') - .await(), + $(schema).attr('safeParseAsync').call('data').await(), ), $('parsed').return(), ]; diff --git a/packages/codegen-core/src/__tests__/symbols.test.ts b/packages/codegen-core/src/__tests__/symbols.test.ts index 142391724..42aa30779 100644 --- a/packages/codegen-core/src/__tests__/symbols.test.ts +++ b/packages/codegen-core/src/__tests__/symbols.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { SymbolRegistry } from '../symbols/registry'; +import { isSymbol } from '../symbols/symbol'; describe('SymbolRegistry', () => { it('covers the full public interface', () => { @@ -260,4 +261,88 @@ describe('SymbolRegistry', () => { const newQuery = registry.query({ something: 'else' }); expect(newQuery).toEqual([]); }); + + it('isSymbol covers various inputs', () => { + const registry = new SymbolRegistry(); + + // real registered symbol + const sym = registry.register({ meta: { a: 1 }, name: 'A' }); + expect(isSymbol(sym)).toBe(true); + + // stub reference (unregistered) + const stub = registry.reference({ b: 2 }); + expect(isSymbol(stub)).toBe(true); + + // primitives + expect(isSymbol(null)).toBe(false); + expect(isSymbol(undefined)).toBe(false); + expect(isSymbol(123)).toBe(false); + expect(isSymbol('foo')).toBe(false); + expect(isSymbol(true)).toBe(false); + + // arrays and plain objects + expect(isSymbol([])).toBe(false); + expect(isSymbol({})).toBe(false); + + // object with different tag + expect(isSymbol({ '~tag': 'not-a-symbol' })).toBe(false); + + // object masquerading as a symbol (matches tag) + expect(isSymbol({ '~tag': 'heyapi.symbol' })).toBe(true); + + // Date, Map, Set should be false + expect(isSymbol(new Date())).toBe(false); + expect(isSymbol(new Map())).toBe(false); + expect(isSymbol(new Set())).toBe(false); + + // Typed arrays and ArrayBuffer should be false + expect(isSymbol(new Uint8Array())).toBe(false); + expect(isSymbol(new ArrayBuffer(8))).toBe(false); + + // Functions without tag should be false + const fn = () => {}; + expect(isSymbol(fn)).toBe(false); + + // Class instance without tag should be false + class Foo {} + const foo = new Foo(); + expect(isSymbol(foo)).toBe(false); + + // Proxy with tag should be true if own property is present + const target = {} as Record; + const proxied = new Proxy(target, { + get(_, prop) { + if (prop === '~tag') return 'heyapi.symbol'; + return undefined; + }, + getOwnPropertyDescriptor(_, prop) { + if (prop === '~tag') + return { + configurable: true, + enumerable: true, + value: 'heyapi.symbol', + writable: false, + }; + return undefined; + }, + has(_, prop) { + return prop === '~tag'; + }, + }); + // Define as own property to satisfy hasOwn + Object.defineProperty(target, '~tag', { + configurable: true, + value: 'heyapi.symbol', + }); + expect(isSymbol(proxied)).toBe(true); + + // Inherited tag should be false (not own property) + const proto = { '~tag': 'heyapi.symbol' }; + const objWithProto = Object.create(proto); + expect(isSymbol(objWithProto)).toBe(false); + + // Primitive edge cases + expect(isSymbol(Symbol('x'))).toBe(false); + expect(isSymbol(0n)).toBe(false); + }); }); diff --git a/packages/codegen-core/src/bindings/plan.d.ts b/packages/codegen-core/src/bindings/plan.d.ts new file mode 100644 index 000000000..7224f3866 --- /dev/null +++ b/packages/codegen-core/src/bindings/plan.d.ts @@ -0,0 +1,76 @@ +import type { SymbolImportKind } from '../symbols/types'; + +export interface PlannedImport { + /** ID of the file where the symbol lives */ + from: number; + /** The final exported name of the symbol in its source file */ + importedName: string; + /** Whether this import is type-only. */ + isTypeOnly: boolean; + /** Import flavor. */ + kind: SymbolImportKind; + /** + * The name this symbol will have locally in this file. + * This is where aliasing is applied: + * + * import { Foo as Foo$2 } from "./x" + * + * localName === "Foo$2" + */ + localName: string; + /** ID of the symbol being imported */ + symbolId: number; +} + +export interface PlannedExport { + /** + * Whether the export was explicitly requested by the plugin/DSL + * (e.g. symbol.exported = true) vs implicitly required (e.g. re-export). + */ + explicit: boolean; + /** + * The name this symbol will be exported under from this file. + * + * This may differ from the symbol's finalName if aliasing is needed: + * + * export { Foo as Foo2 } + * + * exportedName === "Foo2" + */ + exportedName: string; + /** Whether this export is type-only. */ + isTypeOnly: boolean; + /** Export flavor. */ + kind: SymbolImportKind; + /** ID of the symbol being exported */ + symbolId: number; +} + +export interface PlannedReexport { + /** + * Name under which the symbol is exported in this file. + * + * export { Foo as Bar } from "./models" + * + * exportedName === "Bar" + */ + exportedName: string; + /** ID of the source file containing the symbol */ + from: number; + /** + * The name the symbol has in the source file’s exports. + * + * export { Foo as Bar } from "./models" + * + * importedName === "Foo" + * + * This handles aliasing in the source file's export list. + */ + importedName: string; + /** Whether this re-export is type-only. */ + isTypeOnly: boolean; + /** Export flavor. */ + kind: SymbolImportKind; + /** ID of the symbol being re-exported */ + symbolId: number; +} diff --git a/packages/codegen-core/src/debug.ts b/packages/codegen-core/src/debug.ts index 4e7adce0d..5e1cbcb56 100644 --- a/packages/codegen-core/src/debug.ts +++ b/packages/codegen-core/src/debug.ts @@ -5,6 +5,7 @@ import colorSupport from 'color-support'; colors.enabled = colorSupport().hasBasic; const DEBUG_GROUPS = { + analyzer: colors.greenBright, dsl: colors.cyanBright, registry: colors.blueBright, symbol: colors.magentaBright, diff --git a/packages/codegen-core/src/files/registry.ts b/packages/codegen-core/src/files/registry.ts index e51ce85d3..3391a875b 100644 --- a/packages/codegen-core/src/files/registry.ts +++ b/packages/codegen-core/src/files/registry.ts @@ -99,14 +99,13 @@ export class FileRegistry implements IFileRegistry { result = { ...result, ...file, // clone to avoid mutation + exports: result?.exports ?? [], id, - localNames: new Set(), + imports: result?.imports ?? [], + reexports: result?.reexports ?? [], + reservedNames: result?.reservedNames ?? new Map(), resolvedNames: result?.resolvedNames ?? new BiMap(), - symbols: result?.symbols ?? { - body: [], - exports: [], - imports: [], - }, + symbols: result?.symbols ?? [], }; this.values.set(id, result); diff --git a/packages/codegen-core/src/files/rules.d.ts b/packages/codegen-core/src/files/rules.d.ts new file mode 100644 index 000000000..07f6c1fab --- /dev/null +++ b/packages/codegen-core/src/files/rules.d.ts @@ -0,0 +1,14 @@ +export interface Rules { + /** Whether two exported names may collide. */ + allowExportNameShadowing: boolean; + /** Whether a local symbol can shadow another local name without error. */ + allowLocalNameShadowing: boolean; + /** Whether the language requires file-scoped name uniqueness. */ + fileScopedNamesMustBeUnique: boolean; + /** Whether `import { X } from "mod"` introduces a local binding `X`. */ + importCreatesLocalBinding: boolean; + /** Whether `export { X } from "mod"` introduces a local binding `X`. */ + reexportCreatesLocalBinding: boolean; + /** Whether the language distinguishes type-only imports. */ + supportsTypeImports: boolean; +} diff --git a/packages/codegen-core/src/files/types.d.ts b/packages/codegen-core/src/files/types.d.ts index 9dc3ab505..7bf21a16b 100644 --- a/packages/codegen-core/src/files/types.d.ts +++ b/packages/codegen-core/src/files/types.d.ts @@ -1,4 +1,12 @@ import type { IBiMap } from '../bimap/types'; +import type { + PlannedExport, + PlannedImport, + PlannedReexport, +} from '../bindings/plan'; +import type { Symbol } from '../symbols/symbol'; +import type { SymbolKind } from '../symbols/types'; +import type { Rules } from './rules'; /** * Selector array used to reference files. @@ -10,9 +18,7 @@ export type IFileSelector = ReadonlyArray; export type IFileIdentifier = number | IFileSelector; export type IFileIn = { - /** - * File extension, if any. - */ + /** File extension, if any. */ extension?: string; /** * Indicates whether the file is external, meaning it is not generated @@ -22,9 +28,7 @@ export type IFileIn = { * @example true */ external?: boolean; - /** - * Unique file ID. If one is not provided, it will be auto-generated. - */ + /** Unique file ID. If one is not provided, it will be auto-generated. */ readonly id?: number; /** * The desired name for the file within the project. If there are multiple files @@ -48,35 +52,22 @@ export type IFileIn = { }; export type IFileOut = IFileIn & { - /** - * Unique file ID. - */ + /** Named exports originating from this file */ + readonly exports: Array; + /** Unique file ID. */ readonly id: number; - /** - * Names declared in local (non‑top‑level) scopes within this file. - */ - readonly localNames: Set; - /** - * Map holding resolved names for symbols in this file. - */ + /** Fully resolved imports this file needs */ + readonly imports: Array; + /** Re-exports (“export { X } from …”) */ + readonly reexports: Array; + /** Top-level names in this file that cannot be reused (imports, exports, declarations, symbol names). */ + readonly reservedNames: Map>; + /** Map holding resolved names for symbols in this file. */ readonly resolvedNames: IBiMap; - /** - * Symbols in this file, categorized by their role. - */ - readonly symbols: { - /** - * Symbols declared in the body of this file. - */ - body: Array; - /** - * Symbols re-exported from other files. - */ - exports: Array; - /** - * Symbols imported from other files. - */ - imports: Array; - }; + /** Rules that control naming, imports, reexports, and scope behavior for this file. */ + rules?: Rules; + /** Symbols defined inside this file */ + readonly symbols: Array; }; export interface IFileRegistry { diff --git a/packages/codegen-core/src/index.ts b/packages/codegen-core/src/index.ts index 8fdab76f6..4723164dd 100644 --- a/packages/codegen-core/src/index.ts +++ b/packages/codegen-core/src/index.ts @@ -1,4 +1,9 @@ export type { IBiMap as BiMap } from './bimap/types'; +export type { + PlannedExport, + PlannedImport, + PlannedReexport, +} from './bindings/plan'; export type { IBinding as Binding } from './bindings/types'; export { createBinding, mergeBindings } from './bindings/utils'; export { debug } from './debug'; @@ -11,14 +16,15 @@ export type { IFileIdentifier as FileIdentifier, IFileIn as FileIn, } from './files/types'; +export type { INode as Node } from './nodes/node'; export type { IOutput as Output } from './output'; export { Project } from './project/project'; export type { IProject } from './project/types'; export type { IRenderer as Renderer } from './renderer/types'; export { renderIds } from './renderer/utils'; -export { Symbol } from './symbols/symbol'; +export { AnalysisContext, Analyzer } from './symbols/analyzer'; +export { isSymbol, Symbol, symbolBrand } from './symbols/symbol'; export type { ISymbolIdentifier as SymbolIdentifier, ISymbolIn as SymbolIn, } from './symbols/types'; -export type { ISyntaxNode as SyntaxNode } from './syntax-node'; diff --git a/packages/codegen-core/src/nodes/node.d.ts b/packages/codegen-core/src/nodes/node.d.ts new file mode 100644 index 000000000..8c62d9999 --- /dev/null +++ b/packages/codegen-core/src/nodes/node.d.ts @@ -0,0 +1,13 @@ +import type { IAnalysisContext } from '../symbols/analyzer'; +import type { Symbol } from '../symbols/symbol'; + +export interface INode { + /** Perform semantic analysis. */ + analyze(ctx: IAnalysisContext): void; + /** Parent node in the constructed syntax tree. */ + parent?: INode; + /** The symbol associated with this node, if it defines a top‑level symbol. */ + symbol?: Symbol; + /** Brand used for renderer dispatch. */ + readonly '~brand': symbol; +} diff --git a/packages/codegen-core/src/nodes/registry.ts b/packages/codegen-core/src/nodes/registry.ts new file mode 100644 index 000000000..c99eab598 --- /dev/null +++ b/packages/codegen-core/src/nodes/registry.ts @@ -0,0 +1,26 @@ +import type { INode } from './node'; +import type { INodeRegistry } from './types'; + +export class NodeRegistry implements INodeRegistry { + private brands: Map> = new Map(); + private list: Array = []; + + add(node: INode): void { + this.list.push(node); + + let group = this.brands.get(node['~brand']); + if (!group) { + group = []; + this.brands.set(node['~brand'], group); + } + group.push(node); + } + + all(): ReadonlyArray { + return this.list; + } + + byBrand(brand: symbol): ReadonlyArray { + return this.brands.get(brand) ?? []; + } +} diff --git a/packages/codegen-core/src/nodes/types.d.ts b/packages/codegen-core/src/nodes/types.d.ts new file mode 100644 index 000000000..a21416b76 --- /dev/null +++ b/packages/codegen-core/src/nodes/types.d.ts @@ -0,0 +1,16 @@ +import type { INode } from './node'; + +export interface INodeRegistry { + /** + * Register a syntax node. + */ + add(node: INode): void; + /** + * All nodes in insertion order. + */ + all(): ReadonlyArray; + /** + * Nodes by backend brand, so planner doesn't need to filter repeatedly. + */ + byBrand(brand: symbol): ReadonlyArray; +} diff --git a/packages/codegen-core/src/project/namespace.ts b/packages/codegen-core/src/project/namespace.ts new file mode 100644 index 000000000..d6b1aaa1d --- /dev/null +++ b/packages/codegen-core/src/project/namespace.ts @@ -0,0 +1,77 @@ +import type { SymbolKind } from '../symbols/types'; + +/** + * Returns true if two declarations of given kinds + * are allowed to share the same identifier in TypeScript. + */ +export function canShareName(a: SymbolKind, b: SymbolKind): boolean { + // same-kind always valid for interfaces (merging) + if (a === 'interface' && b === 'interface') return true; + + // type vs interface merges + if ( + (a === 'interface' && b === 'type') || + (a === 'type' && b === 'interface') + ) { + return false; // TypeScript does NOT merge type-alias with interface. + } + + // type vs type = conflict + if (a === 'type' && b === 'type') return false; + + // interface vs class = allowed (declare-merge) + if ( + (a === 'interface' && b === 'class') || + (a === 'class' && b === 'interface') + ) { + return true; + } + + // enum vs namespace = allowed (merges into value+type) + if ( + (a === 'enum' && b === 'namespace') || + (a === 'namespace' && b === 'enum') + ) { + return true; + } + + // class vs namespace = allowed + if ( + (a === 'class' && b === 'namespace') || + (a === 'namespace' && b === 'class') + ) { + return true; + } + + // namespace vs namespace = allowed (merging) + if (a === 'namespace' && b === 'namespace') return true; + + // enum vs enum = conflict IF values conflict (TypeScript flags duplicates) + if (a === 'enum' && b === 'enum') return false; + + // function and namespace merge (namespace can augment function) + if ( + (a === 'function' && b === 'namespace') || + (a === 'namespace' && b === 'function') + ) { + return true; + } + + // these collide with each other in the value namespace + const valueKinds = new Set(['class', 'enum', 'function', 'var']); + + const aInValue = valueKinds.has(a); + const bInValue = valueKinds.has(b); + + if (aInValue && bInValue) return false; + + // type-only declarations do not collide with value-only declarations + const typeKinds = new Set(['interface', 'type']); + const aInType = typeKinds.has(a); + const bInType = typeKinds.has(b); + + // if one is type-only and the other is value-only, they do NOT collide + if (aInType !== bInType) return true; + + return true; +} diff --git a/packages/codegen-core/src/project/project.ts b/packages/codegen-core/src/project/project.ts index 91ed73036..cbf1c67ea 100644 --- a/packages/codegen-core/src/project/project.ts +++ b/packages/codegen-core/src/project/project.ts @@ -2,21 +2,25 @@ import path from 'node:path'; import type { IProjectRenderMeta } from '../extensions'; import { FileRegistry } from '../files/registry'; -import type { IFileOut, IFileSelector } from '../files/types'; +import type { IFileSelector } from '../files/types'; +import { NodeRegistry } from '../nodes/registry'; import type { IOutput } from '../output'; import type { IRenderer } from '../renderer/types'; +import { Analyzer } from '../symbols/analyzer'; import { SymbolRegistry } from '../symbols/registry'; import type { Symbol } from '../symbols/symbol'; +import type { SymbolKind } from '../symbols/types'; +import { canShareName } from './namespace'; import type { IProject } from './types'; const externalSourceSymbol = '@'; export class Project implements IProject { - private symbolIdToFileIds: Map> = new Map(); - + readonly analyzer = new Analyzer(); readonly defaultFileName: string; readonly files = new FileRegistry(); readonly fileName?: (name: string) => string; + readonly nodes = new NodeRegistry(); readonly renderers: Record = {}; readonly root: string; readonly symbols = new SymbolRegistry(); @@ -33,104 +37,219 @@ export class Project implements IProject { this.root = root; } - private getRenderer(file: IFileOut): IRenderer | undefined { - return file.extension ? this.renderers[file.extension] : undefined; + render(meta?: IProjectRenderMeta): ReadonlyArray { + this.prepareFiles(); + return this.renderFiles(meta); } private prepareFiles(): void { - // TODO: infer extension from symbols - const extension = '.ts'; - for (const symbol of this.symbols.registered()) { + this.assignFiles(); + this.registerFiles(); + this.resolveFinalSymbolNames(); + this.planImports(); + this.planExports(); + } + + /** + * Creates a file for every symbol so all files exist before planning. + */ + private assignFiles(): void { + this.analyzer.analyze(this.nodes.all(), (ctx) => { + const symbol = ctx.root; const selector = this.symbolToFileSelector(symbol); const file = this.files.reference(selector); - file.symbols.body.push(symbol.id); - // update symbol->files map - const symbolIdToFileIds = - this.symbolIdToFileIds.get(symbol.id) ?? new Set(); - symbolIdToFileIds.add(file.id); - this.symbolIdToFileIds.set(symbol.id, symbolIdToFileIds); - // update re-exports - if (symbol.exportFrom) { - for (const exportFrom of symbol.exportFrom) { - const exportSelector = [exportFrom]; - const exportFile = this.files.reference(exportSelector); - if (exportFile.id !== file.id) { - exportFile.symbols.exports.push(symbol.id); - } + file.symbols.push(symbol); + symbol.setFile(file); + for (const exportFrom of symbol.exportFrom) { + const selector = [exportFrom]; + this.files.reference(selector); + } + for (const dependency of ctx.symbols) { + if (dependency.external) { + const selector = this.symbolToFileSelector(dependency); + const file = this.files.reference(selector); + dependency.setFile(file); } } - } - for (const file of this.files.referenced()) { - if (!file.selector) continue; - if (file.selector[0] === externalSourceSymbol) { - const filePath = file.selector[1]; - if (!filePath) { - this.files.register({ - external: true, - selector: file.selector, - }); - continue; + }); + } + + private planExports(): void { + const seenByFile = new Map< + number, + Map }> + >(); + const sourceFile = new Map(); + + this.analyzer.analyze(this.nodes.all(), (ctx) => { + const symbol = ctx.root; + const file = ctx.root.file; + if (!file) return; + + for (const exportFrom of symbol.exportFrom) { + const target = this.files.reference([exportFrom]); + if (target.id === file.id) continue; + + let map = seenByFile.get(target.id); + if (!map) { + map = new Map(); + seenByFile.set(target.id, map); } - const extension = path.extname(filePath); - if (!extension) { - this.files.register({ - external: true, - path: filePath, - selector: file.selector, - }); - continue; + + const dep = this.symbols.register({ + exported: true, + external: symbol.external, + importKind: symbol.importKind, + kind: symbol.kind, + meta: symbol.meta, + name: symbol.finalName, + }); + dep.setFile(target); + sourceFile.set(dep.id, file.id); + this.resolveSymbolFinalName(dep); + + let entry = map.get(dep.finalName); + if (!entry) { + entry = { dep, kinds: new Set() }; + map.set(dep.finalName, entry); } + entry.kinds.add(dep.kind); + } + }); + + for (const [fileId, map] of seenByFile) { + const target = this.files.get(fileId)!; + for (const [, entry] of map) { + const symbol = entry.dep; + target.reexports.push({ + exportedName: symbol.finalName, + from: sourceFile.get(symbol.id)!, + importedName: symbol.name, + isTypeOnly: [...entry.kinds].every( + (kind) => kind === 'type' || kind === 'interface', + ), + kind: symbol.importKind, + symbolId: symbol.id, + }); + } + } + } + + private planImports(): void { + const seenByFile = new Map>(); + + this.analyzer.analyze(this.nodes.all(), (ctx) => { + const file = ctx.root.file; + if (!file) return; + + let seen = seenByFile.get(file.id); + if (!seen) { + seen = new Set(); + seenByFile.set(file.id, seen); + } + + for (const dependency of ctx.symbols) { + if (!dependency.file || dependency.file.id === file.id) continue; + + this.resolveSymbolFinalName(dependency); + const from = dependency.file.id; + const importedName = dependency.name; + const localName = dependency.finalName; + const isTypeOnly = false; // keep as-is for now + const kind = dependency.importKind; + + const key = `${from}|${importedName}|${localName}|${kind}|${isTypeOnly}`; + if (seen.has(key)) continue; + seen.add(key); + + file.imports.push({ + from, + importedName, + isTypeOnly, + kind, + localName, + symbolId: dependency.id, + }); + } + }); + } + + /** + * Registers all files. + */ + private registerFiles(): void { + for (const file of this.files.referenced()) { + const selector = file.selector; + if (!selector) continue; + if (selector[0] === externalSourceSymbol) { this.files.register({ - extension, external: true, - path: filePath, + path: selector[1], + selector, + }); + } else { + const dirs = file.selector.slice(0, -1); + let name = file.selector[file.selector.length - 1]!; + name = this.fileName?.(name) || name; + const extension = '.ts'; + this.files.register({ + extension, + name, + path: path.resolve(this.root, ...dirs, `${name}${extension}`), selector: file.selector, }); - continue; } - const dirs = file.selector.slice(0, -1); - let name = file.selector[file.selector.length - 1]!; - name = this.fileName?.(name) || name; - this.files.register({ - extension, - name, - path: path.resolve(this.root, ...dirs, `${name}${extension}`), - selector: file.selector, - }); } - - // TODO: track symbol dependencies and inject imports into files - // based on symbol references so the render step can just render } - render(meta?: IProjectRenderMeta): ReadonlyArray { - this.prepareFiles(); + private renderFiles(meta?: IProjectRenderMeta): ReadonlyArray { const files: Map = new Map(); for (const file of this.files.registered()) { if (file.external || !file.path) continue; - const renderer = this.getRenderer(file); + const renderer = file.extension + ? this.renderers[file.extension] + : undefined; if (!renderer) continue; files.set(file.id, { - content: renderer.renderSymbols(file, this, meta), + content: renderer.render(file, this, meta), path: file.path, }); } - for (const [fileId, value] of files.entries()) { - const file = this.files.get(fileId)!; - const renderer = this.getRenderer(file)!; - const content = renderer.renderFile(value.content, file, this, meta); - if (content) { - files.set(file.id, { ...value, content }); - } else { - files.delete(file.id); + return Array.from(files.values()); + } + + private resolveSymbolFinalName(symbol: Symbol): void { + const file = symbol.file; + if (symbol._finalName || !file) return; + + let name = symbol.name; + let index = 1; + while (file.reservedNames.has(name)) { + const scopes = file.reservedNames.get(name)!; + let exit = true; + for (const kind of scopes) { + if (!canShareName(symbol.kind, kind)) { + exit = false; + index = index + 1; + name = `${name}${index}`; + break; + } } + if (exit) break; } - return Array.from(files.values()); + // TODO: ensure valid names + symbol.setFinalName(name); + const scopes = file.reservedNames.get(name) ?? new Set(); + scopes.add(symbol.kind); + file.reservedNames.set(name, scopes); } - symbolIdToFiles(symbolId: number): ReadonlyArray { - const fileIds = this.symbolIdToFileIds.get(symbolId); - return Array.from(fileIds ?? []).map((fileId) => this.files.get(fileId)!); + private resolveFinalSymbolNames(): void { + for (const file of this.files.registered()) { + for (const symbol of file.symbols) { + this.resolveSymbolFinalName(symbol); + } + } } private symbolToFileSelector(symbol: Symbol): IFileSelector { diff --git a/packages/codegen-core/src/project/types.d.ts b/packages/codegen-core/src/project/types.d.ts index bbb80fa75..1bd90a1b8 100644 --- a/packages/codegen-core/src/project/types.d.ts +++ b/packages/codegen-core/src/project/types.d.ts @@ -1,11 +1,13 @@ import type { IProjectRenderMeta } from '../extensions'; -import type { IFileOut, IFileRegistry } from '../files/types'; +import type { IFileRegistry } from '../files/types'; +import type { INodeRegistry } from '../nodes/types'; import type { IOutput } from '../output'; import type { IRenderer } from '../renderer/types'; import type { ISymbolRegistry } from '../symbols/types'; /** - * Represents a code generation project consisting of multiple codegen files. + * Represents a code generation project consisting of codegen files. + * * Manages imports, symbols, and output generation across the project. */ export interface IProject { @@ -22,10 +24,10 @@ export interface IProject { * @returns The transformed file name. */ readonly fileName?: (name: string) => string; - /** - * Centralized file registry for the project. - */ + /** Centralized file registry for the project. */ readonly files: IFileRegistry; + /** Centralized node registry for the project. */ + readonly nodes: INodeRegistry; /** * Produces output representations for all files in the project. * @@ -45,25 +47,8 @@ export interface IProject { * } */ readonly renderers: Record; - /** - * The absolute path to the root folder of the project. - */ + /** The absolute path to the root folder of the project. */ readonly root: string; - /** - * Retrieves files that include symbol ID. The first file is the one - * where the symbol is declared, the rest are files that re-export it. - * - * @param symbolId The symbol ID to find. - * @returns An array of files containing the symbol. - * @example - * const files = project.symbolIdToFiles(31); - * for (const file of files) { - * console.log(file.path); - * } - */ - symbolIdToFiles(symbolId: number): ReadonlyArray; - /** - * Centralized symbol registry for the project. - */ + /** Centralized symbol registry for the project. */ readonly symbols: ISymbolRegistry; } diff --git a/packages/codegen-core/src/renderer/types.d.ts b/packages/codegen-core/src/renderer/types.d.ts index 7b36db787..6c1aa4d7a 100644 --- a/packages/codegen-core/src/renderer/types.d.ts +++ b/packages/codegen-core/src/renderer/types.d.ts @@ -3,6 +3,15 @@ import type { IFileOut } from '../files/types'; import type { IProject } from '../project/types'; export interface IRenderer { + /** + * Renders the given file. + * + * @param file The file to render. + * @param project The project the file belongs to. + * @param meta Arbitrary metadata. + * @returns Rendered content. + */ + render(file: IFileOut, project: IProject, meta?: IProjectRenderMeta): string; /** * Renders content with replaced symbols. * diff --git a/packages/codegen-core/src/symbols/analyzer.ts b/packages/codegen-core/src/symbols/analyzer.ts new file mode 100644 index 000000000..5ce93f085 --- /dev/null +++ b/packages/codegen-core/src/symbols/analyzer.ts @@ -0,0 +1,61 @@ +import { debug } from '../debug'; +import type { INode } from '../nodes/node'; +import type { Symbol } from './symbol'; + +export interface IAnalysisContext { + /** Register a dependency on another symbol. */ + addDependency(symbol: Symbol): void; + /** Local names declared by nodes within the analyzed symbol. */ + localNames: Set; + /** Root symbol for the current top‑level analysis pass. */ + root: Symbol; + /** Collected symbol references discovered during analysis. */ + symbols: Set; +} + +export class AnalysisContext implements IAnalysisContext { + localNames: Set = new Set(); + root: Symbol; + symbols: Set = new Set(); + + constructor(symbol: Symbol) { + this.root = symbol; + } + + addDependency(symbol: Symbol): void { + if (this.root !== symbol) { + this.symbols.add(symbol); + } + } +} + +export class Analyzer { + private nodeCache = new WeakMap(); + + analyzeNode(node: INode): AnalysisContext { + const cached = this.nodeCache.get(node); + if (cached) return cached; + + if (!node.symbol) { + const message = `Analyzer: cannot analyze node "${node}" without a defining symbol.`; + debug(message, 'analyzer'); + throw new Error(message); + } + + const ctx = new AnalysisContext(node.symbol); + node.analyze(ctx); + + this.nodeCache.set(node, ctx); + return ctx; + } + + analyze( + nodes: ReadonlyArray, + callback?: (ctx: AnalysisContext) => void, + ): void { + for (const node of nodes) { + const ctx = this.analyzeNode(node); + callback?.(ctx); + } + } +} diff --git a/packages/codegen-core/src/symbols/registry.ts b/packages/codegen-core/src/symbols/registry.ts index 48ac0569b..59eed9701 100644 --- a/packages/codegen-core/src/symbols/registry.ts +++ b/packages/codegen-core/src/symbols/registry.ts @@ -119,6 +119,9 @@ export class SymbolRegistry implements ISymbolRegistry { } } + /** + * @deprecated + */ setValue(symbolId: SymbolId, value: unknown): Map { return this.nodes.set(symbolId, value); } diff --git a/packages/codegen-core/src/symbols/symbol.ts b/packages/codegen-core/src/symbols/symbol.ts index 78e451824..c9e09106f 100644 --- a/packages/codegen-core/src/symbols/symbol.ts +++ b/packages/codegen-core/src/symbols/symbol.ts @@ -1,10 +1,12 @@ import { debug } from '../debug'; import type { ISymbolMeta } from '../extensions'; import type { IFileOut } from '../files/types'; +import type { INode } from '../nodes/node'; import { wrapId } from '../renderer/utils'; -import type { ISyntaxNode } from '../syntax-node'; import type { ISymbolIn, SymbolImportKind, SymbolKind } from './types'; +export const symbolBrand = globalThis.Symbol('symbol'); + export class Symbol { /** * Canonical symbol this stub resolves to, if any. @@ -49,10 +51,8 @@ export class Symbol { private _file?: IFileOut; /** * The alias-resolved, conflict-free emitted name. - * - * @private */ - private _finalName?: string; + _finalName?: string; /** * Custom strategy to determine file output path. * @@ -84,12 +84,14 @@ export class Symbol { */ private _name: string; /** - * Root node that defines this symbol. + * Node that defines this symbol. * * @private */ - private _rootNode?: ISyntaxNode; + private _node?: INode; + /** Brand used for identifying symbols. */ + readonly '~brand': symbol = symbolBrand; /** * Globally unique, stable symbol ID. */ @@ -208,10 +210,10 @@ export class Symbol { } /** - * Read‑only accessor for the defining DSL root node. + * Read‑only accessor for the defining node. */ - get rootNode(): ISyntaxNode | undefined { - return this.canonical._rootNode; + get node(): INode | undefined { + return this.canonical._node; } /** @@ -315,12 +317,13 @@ export class Symbol { * * This may only be set once. */ - setRootNode(node: ISyntaxNode): void { + setNode(node: INode): void { this.assertCanonical(); - if (this._rootNode && this._rootNode !== node) { - throw new Error('Symbol is already bound to a different root node.'); + if (this._node && this._node !== node) { + throw new Error('Symbol is already bound to a different node.'); } - this._rootNode = node; + this._node = node; + node.symbol = this; } /** @@ -349,3 +352,9 @@ export class Symbol { } } } + +export function isSymbol(value: unknown): value is Symbol { + if (!value || typeof value !== 'object' || Array.isArray(value)) return false; + const obj = value as { '~brand'?: unknown }; + return obj['~brand'] === symbolBrand && Object.hasOwn(obj, '~brand'); +} diff --git a/packages/codegen-core/src/syntax-node.d.ts b/packages/codegen-core/src/syntax-node.d.ts deleted file mode 100644 index 0acc2a472..000000000 --- a/packages/codegen-core/src/syntax-node.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Symbol } from './symbols/symbol'; - -export interface ISyntaxNode { - /** - * Collect symbols referenced directly by this node into the provided accumulator. - */ - collectSymbols(out: Set): void; - /** - * Return local names introduced by this node. - */ - getLocalNames(): Iterable; - /** - * Rewrite local identifiers based on a rename map. - */ - rewriteIdentifiers(map: Map): void; - /** - * Walk this node and its children with a visitor. - */ - traverse(visitor: (node: ISyntaxNode) => void): void; -} diff --git a/packages/openapi-ts/src/generate/renderer.ts b/packages/openapi-ts/src/generate/renderer.ts index b163bbb48..2f96ea45b 100644 --- a/packages/openapi-ts/src/generate/renderer.ts +++ b/packages/openapi-ts/src/generate/renderer.ts @@ -4,6 +4,9 @@ import type { Binding, File, IProject, + PlannedImport, + PlannedReexport, + Project, ProjectRenderMeta, Renderer, Symbol, @@ -12,7 +15,7 @@ import { createBinding, mergeBindings, renderIds } from '@hey-api/codegen-core'; import ts from 'typescript'; import { ensureValidIdentifier } from '~/openApi/shared/utils/identifier'; -import { $, TsDsl } from '~/ts-dsl'; +import { $, isTsDsl } from '~/ts-dsl'; const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, @@ -93,6 +96,103 @@ const nodeBuiltins = new Set([ ]); export class TypeScriptRenderer implements Renderer { + render(file: File, project: Project, meta?: ProjectRenderMeta): string { + let output = ''; + const header = '// This file is auto-generated by @hey-api/openapi-ts'; + output += `${header}\n`; + + let outputImports = ''; + for (const plan of file.imports) { + outputImports += nodeToString( + this.renderImport(plan, file, project, meta), + ); + outputImports += '\n'; + } + output = `${output}${output && outputImports ? '\n' : ''}${outputImports}`; + + let outputSymbols = ''; + for (const symbol of file.symbols) { + if (outputSymbols) outputSymbols += '\n'; + const node = symbol.node; + if (isTsDsl(node)) { + outputSymbols += nodeToString(node.$render()); + } + outputSymbols += '\n'; + } + output = `${output}${output && outputSymbols ? '\n' : ''}${outputSymbols}`; + + let outputReexports = ''; + for (const plan of file.reexports) { + if (!outputReexports && outputSymbols) outputReexports += '\n'; + outputReexports += nodeToString( + this.renderExport(plan, file, project, meta), + ); + outputReexports += '\n'; + } + output = `${output}${output && outputReexports ? '\n' : ''}${outputReexports}`; + + return output; + } + + private renderExport( + plan: PlannedReexport, + file: File, + project: Project, + meta?: ProjectRenderMeta, + ): ts.ExportDeclaration { + const modulePath = this.getBindingPath( + file, + project.files.get(plan.from)!, + meta, + ); + const specifier = ts.factory.createExportSpecifier( + false, + plan.importedName !== plan.exportedName + ? $.id(plan.importedName).$render() + : undefined, + $.id(plan.exportedName).$render(), + ); + return ts.factory.createExportDeclaration( + undefined, + plan.isTypeOnly, + ts.factory.createNamedExports([specifier]), + $.literal(modulePath).$render(), + ); + } + + private renderImport( + plan: PlannedImport, + file: File, + project: Project, + meta?: ProjectRenderMeta, + ): ts.ImportDeclaration { + const modulePath = this.getBindingPath( + file, + project.files.get(plan.from)!, + meta, + ); + const localName = $.id(plan.localName).$render(); + const specifier = ts.factory.createImportSpecifier( + false, + plan.importedName !== plan.localName + ? $.id(plan.importedName).$render() + : undefined, + localName, + ); + const importClause = ts.factory.createImportClause( + false, + plan.kind === 'default' ? localName : undefined, + plan.kind === 'namespace' + ? ts.factory.createNamespaceImport(localName) + : ts.factory.createNamedImports([specifier]), + ); + return ts.factory.createImportDeclaration( + undefined, + importClause, + $.literal(modulePath).$render(), + ); + } + renderFile( symbolsAndExports: string, file: File, @@ -117,26 +217,11 @@ export class TypeScriptRenderer implements Renderer { return `${output}${symbolsAndExports}`; } - renderSymbols( - file: File, - project: IProject, - meta?: ProjectRenderMeta, - ): string { + renderSymbols(file: File, project: IProject): string { const exports: Map = new Map(); let output = ''; - const bodyLines = this.getBodyLines(file, project); + const bodyLines: Array = []; output += `${bodyLines.join('\n\n')}${bodyLines.length ? '\n' : ''}`; - output = renderIds(output, (symbolId) => { - if (!file.symbols.body.includes(symbolId)) return; - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }); - for (const symbolId of file.symbols.exports) { - const symbol = project.symbols.get(symbolId); - if (symbol) { - this.addBinding({ bindings: exports, file, meta, project, symbol }); - } - } // cast everything into namespace exports for now for (const binding of exports.values()) { binding.namespaceBinding = true; @@ -168,7 +253,7 @@ export class TypeScriptRenderer implements Renderer { return; } - const [symbolFile] = project.symbolIdToFiles(symbol.id); + const symbolFile: File | undefined = undefined; if (!symbolFile || file === symbolFile) return; const modulePath = this.getBindingPath(file, symbolFile, meta); @@ -220,29 +305,6 @@ export class TypeScriptRenderer implements Renderer { return relativePath; } - private getBodyLine(value: unknown, lines: Array): void { - if (value instanceof TsDsl) { - const node = value.$render(); - lines.push(nodeToString(node)); - } else if (typeof value === 'string') { - lines.push(value); - } else if (value instanceof Array) { - for (const node of value) { - this.getBodyLine(node, lines); - } - } else if (value !== undefined && value !== null) { - lines.push(nodeToString(value as any)); - } - } - - private getBodyLines(file: File, project: IProject): Array { - const lines: Array = []; - for (const symbolId of file.symbols.body) { - this.getBodyLine(project.symbols.getValue(symbolId), lines); - } - return lines; - } - private getExportLines( bindings: Map, file: File, @@ -283,9 +345,10 @@ export class TypeScriptRenderer implements Renderer { finalName = renderIds(finalName, (symbolId) => { const symbol = project.symbols.get(symbolId); const name = this.replacerFn({ file, project, symbol }); - const [symbolFile] = project.symbolIdToFiles(symbolId); + const symbolFile: File | undefined = undefined; const sourceName = symbolFile - ? symbolFile.resolvedNames.get(symbolId) + ? // @ts-expect-error + symbolFile.resolvedNames.get(symbolId) : undefined; if (sourceName && sourceName !== name) { // handle only simple imports for now @@ -421,9 +484,10 @@ export class TypeScriptRenderer implements Renderer { finalName = renderIds(finalName, (symbolId) => { const symbol = project.symbols.get(symbolId); const name = this.replacerFn({ file, project, symbol }); - const [symbolFile] = project.symbolIdToFiles(symbolId); + const symbolFile: File | undefined = undefined; const sourceName = symbolFile - ? symbolFile.resolvedNames.get(symbolId) + ? // @ts-expect-error + symbolFile.resolvedNames.get(symbolId) : undefined; if (sourceName && sourceName !== name) { // handle only simple imports for now @@ -547,7 +611,8 @@ export class TypeScriptRenderer implements Renderer { const cached = file.resolvedNames.get(symbol.id); if (cached) return cached; if (!symbol.name) return; - const [symbolFile] = project.symbolIdToFiles(symbol.id); + const symbolFile: File | undefined = undefined; + // @ts-expect-error const symbolFileResolvedName = symbolFile?.resolvedNames.get(symbol.id); const name = this.getUniqueName({ base: ensureValidIdentifier(symbolFileResolvedName ?? symbol.name), diff --git a/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts b/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts index c1d9b5dec..be0653840 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/httpRequests.ts @@ -156,7 +156,7 @@ const generateAngularClassRequests = ({ ), ) .do(...currentClass.nodes); - plugin.setSymbolValue(symbolClass, node); + plugin.addNode(node); generatedClasses.add(currentClass.className); }; @@ -195,7 +195,7 @@ const generateAngularFunctionRequests = ({ plugin, symbol, }); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }, { order: 'declarations', @@ -217,7 +217,7 @@ const generateRequestCallExpression = ({ const optionsClient = $('options') .attr('client') .optional() - .$if(symbolClient, (c, s) => c.coalesce(s.placeholder)); + .$if(symbolClient, (c, s) => c.coalesce(s)); return optionsClient .attr('requestOptions') @@ -259,15 +259,16 @@ const generateAngularRequestMethod = ({ role: 'data', tool: 'typescript', }); - const dataType = symbolDataType?.placeholder || 'unknown'; return $.method(methodName) .public() .$if(createOperationComment(operation), (c, v) => c.doc(v)) .param('options', (p) => - p - .required(isRequiredOptions) - .type($.type(symbolOptions).generic(dataType).generic('ThrowOnError')), + p.required(isRequiredOptions).type( + $.type(symbolOptions) + .generic(symbolDataType ?? 'unknown') + .generic('ThrowOnError'), + ), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) .returns($.type(symbolHttpRequest).generic('unknown')) @@ -310,7 +311,6 @@ const generateAngularRequestFunction = ({ role: 'data', tool: 'typescript', }); - const dataType = symbolDataType?.placeholder || 'unknown'; return $.const(symbol) .export() @@ -318,11 +318,11 @@ const generateAngularRequestFunction = ({ .assign( $.func() .param('options', (p) => - p - .required(isRequiredOptions) - .type( - $.type(symbolOptions).generic(dataType).generic('ThrowOnError'), - ), + p.required(isRequiredOptions).type( + $.type(symbolOptions) + .generic(symbolDataType ?? 'unknown') + .generic('ThrowOnError'), + ), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) .returns($.type(symbolHttpRequest).generic('unknown')) diff --git a/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts b/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts index 92960cf27..0a31ed7e7 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/httpResources.ts @@ -153,7 +153,7 @@ const generateAngularClassServices = ({ ), ) .do(...currentClass.nodes); - plugin.setSymbolValue(symbolClass, node); + plugin.addNode(node); generatedClasses.add(currentClass.className); }; @@ -185,7 +185,7 @@ const generateAngularFunctionServices = ({ plugin, symbol, }); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }, { order: 'declarations', @@ -213,7 +213,6 @@ const generateResourceCallExpression = ({ resourceId: operation.id, role: 'response', }); - const responseType = symbolResponseType?.placeholder || 'unknown'; if (plugin.config.httpRequests.asClass) { // For class-based request methods, use inject and class hierarchy @@ -239,9 +238,8 @@ const generateResourceCallExpression = ({ category: 'external', resource: '@angular/core.inject', }); - let methodAccess: ReturnType = $( - symbolInject.placeholder, - ).call(symbolClass.placeholder); + let methodAccess: ReturnType = + $(symbolInject).call(symbolClass); // Navigate through the class hierarchy for (let i = 1; i < firstEntry.path.length; i++) { @@ -260,7 +258,7 @@ const generateResourceCallExpression = ({ plugin.config.httpRequests.methodNameBuilder(operation), ); - return $(symbolHttpResource.placeholder) + return $(symbolHttpResource) .call( $.func().do( $.const('opts').assign( @@ -275,7 +273,7 @@ const generateResourceCallExpression = ({ ), ), ) - .generic(responseType); + .generic(symbolResponseType ?? 'unknown'); } } else { const symbolHttpRequest = plugin.referenceSymbol({ @@ -286,7 +284,7 @@ const generateResourceCallExpression = ({ tool: 'angular', }); - return $(symbolHttpResource.placeholder) + return $(symbolHttpResource) .call( $.func().do( $.const('opts').assign( @@ -296,19 +294,19 @@ const generateResourceCallExpression = ({ ), $.return( $.ternary('opts') - .do($(symbolHttpRequest.placeholder).call('opts')) + .do($(symbolHttpRequest).call('opts')) .otherwise($.id('undefined')), ), ), ) - .generic(responseType); + .generic(symbolResponseType ?? 'unknown'); } // Fallback return (should not reach here) - return $(symbolHttpResource.placeholder).call( + return $(symbolHttpResource).call( $.func() .do($.return($.id('undefined'))) - .generic(responseType), + .generic(symbolResponseType ?? 'unknown'), ); }; @@ -336,17 +334,21 @@ const generateAngularResourceMethod = ({ role: 'data', tool: 'typescript', }); - const dataType = symbolDataType?.placeholder || 'unknown'; return $.method(methodName) .public() .$if(createOperationComment(operation), (c, v) => c.doc(v)) .param('options', (p) => - p - .required(isRequiredOptions) - .type( - `() => ${symbolOptions.placeholder}<${dataType}, ThrowOnError> | undefined`, + p.required(isRequiredOptions).type( + $.type.func().returns( + $.type.or( + $.type(symbolOptions) + .generic(symbolDataType ?? 'unknown') + .generic('ThrowOnError'), + $.type('undefined'), + ), ), + ), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) .do( @@ -383,7 +385,6 @@ const generateAngularResourceFunction = ({ role: 'data', tool: 'typescript', }); - const dataType = symbolDataType?.placeholder || 'unknown'; return $.const(symbol) .export() @@ -391,11 +392,16 @@ const generateAngularResourceFunction = ({ .assign( $.func() .param('options', (p) => - p - .required(isRequiredOptions) - .type( - `() => ${symbolOptions.placeholder}<${dataType}, ThrowOnError> | undefined`, + p.required(isRequiredOptions).type( + $.type.func().returns( + $.type.or( + $.type(symbolOptions) + .generic(symbolDataType ?? 'unknown') + .generic('ThrowOnError'), + $.type('undefined'), + ), ), + ), ) .generic('ThrowOnError', (g) => g.extends('boolean').default(false)) .do( diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts index 398ab7b44..c9feb0885 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/client.ts @@ -79,9 +79,9 @@ export const createClient: PluginHandler = ({ plugin }) => { } const createConfigParameters = [ - $(symbolCreateConfig.placeholder) + $(symbolCreateConfig) .call(defaultVals.hasProps() ? defaultVals : undefined) - .generic(symbolClientOptions.placeholder), + .generic(symbolClientOptions), ]; const symbolClient = plugin.registerSymbol({ @@ -93,11 +93,11 @@ export const createClient: PluginHandler = ({ plugin }) => { const statement = $.const(symbolClient) .export() .assign( - $(symbolCreateClient.placeholder).$if( + $(symbolCreateClient).$if( symbolCreateClientConfig, - (c, s) => c.call($(s.placeholder).call(...createConfigParameters)), + (c, s) => c.call($(s).call(...createConfigParameters)), (c) => c.call(...createConfigParameters), ), ); - plugin.setSymbolValue(symbolClient, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts index 29c154d57..ea408a25d 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/createClientConfig.ts @@ -38,9 +38,7 @@ export const createClientConfigType = ({ 'to ensure your client always has the correct values.', ]) .generic('T', (g) => - g - .extends(symbolDefaultClientOptions.placeholder) - .default(symbolClientOptions.placeholder), + g.extends(symbolDefaultClientOptions).default(symbolClientOptions), ) .type( $.type @@ -50,20 +48,18 @@ export const createClientConfigType = ({ .optional() .type( $.type(symbolConfig).generic( - $.type.and(symbolDefaultClientOptions.placeholder, 'T'), + $.type.and(symbolDefaultClientOptions, 'T'), ), ), ) .returns( $.type(symbolConfig).generic( $.type.and( - $.type('Required').generic( - symbolDefaultClientOptions.placeholder, - ), + $.type('Required').generic(symbolDefaultClientOptions), 'T', ), ), ), ); - plugin.setSymbolValue(symbolCreateClientConfig, typeCreateClientConfig); + plugin.addNode(typeCreateClientConfig); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts index d62d62780..ceb4cf545 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts @@ -391,7 +391,7 @@ const schemasV2_0_X = ({ }), ).as('const'), ); - plugin.setSymbolValue(symbol, statement); + plugin.addNode(statement); } }; @@ -431,7 +431,7 @@ const schemasV3_0_X = ({ }), ).as('const'), ); - plugin.setSymbolValue(symbol, statement); + plugin.addNode(statement); } }; @@ -471,7 +471,7 @@ const schemasV3_1_X = ({ }), ).as('const'), ); - plugin.setSymbolValue(symbol, statement); + plugin.addNode(statement); } }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts index dbb572377..c7c10fd3c 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts @@ -122,7 +122,7 @@ const createClientClass = ({ resource: 'client.Client', }); return $.class(symbol) - .field('client', (f) => f.protected().type(symbolClient.placeholder)) + .field('client', (f) => f.protected().type(symbolClient)) .newline() .init((i) => i @@ -133,7 +133,7 @@ const createClientClass = ({ $.type .object() .prop('client', (p) => - p.optional(optionalClient).type(symbolClient.placeholder), + p.optional(optionalClient).type(symbolClient), ), ), ) @@ -144,7 +144,7 @@ const createClientClass = ({ $('args') .attr('client') .optional(optionalClient) - .$if(optionalClient, (a) => a.coalesce(symClient!.placeholder)), + .$if(optionalClient, (a) => a.coalesce(symClient!)), ), ), ); @@ -266,14 +266,12 @@ export const generateClassSdk = ({ plugin.referenceSymbol({ category: 'external', resource: 'client.Composable', - }).placeholder, + }), ) .default($.type.literal('$fetch')), ) .generic(nuxtTypeDefault, (t) => - t.$if(symbolResponse, (t, s) => - t.extends(s.placeholder).default(s.placeholder), - ), + t.$if(symbolResponse, (t, s) => t.extends(s).default(s)), ), (m) => m.generic('ThrowOnError', (t) => @@ -374,10 +372,10 @@ export const generateClassSdk = ({ .static(!plugin.config.instance) .assign( plugin.config.instance - ? $.new(refChildClass.placeholder).args( + ? $.new(refChildClass).args( $.object().prop('client', $('this').attr('client')), ) - : $(refChildClass.placeholder), + : $(refChildClass), ), ) : $.getter(memberName, (g) => @@ -386,10 +384,10 @@ export const generateClassSdk = ({ .do( $.return( plugin.config.instance - ? $.new(refChildClass.placeholder).args( + ? $.new(refChildClass).args( $.object().prop('client', $('this').attr('client')), ) - : refChildClass.placeholder, + : refChildClass, ), ), ); @@ -410,7 +408,7 @@ export const generateClassSdk = ({ plugin, symbol: symbolHeyApiClient, }); - plugin.setSymbolValue(symbolHeyApiClient, node); + plugin.addNode(node); } const symbol = plugin.registerSymbol({ @@ -439,14 +437,14 @@ export const generateClassSdk = ({ $.type .object() .prop('client', (p) => - p.required(isClientRequired).type(symbolClient.placeholder), + p.required(isClientRequired).type(symbolClient), ) .prop('key', (p) => p.optional().type('string')), ), ) .do( $('super').call('args'), - $(symbol.placeholder) + $(symbol) .attr(registryName) .attr('set') .call('this', $('args').attr('key').required(isClientRequired)), @@ -464,15 +462,13 @@ export const generateClassSdk = ({ sdkName: symbol.placeholder, symbol: symbolHeyApiRegistry, }); - plugin.setSymbolValue(symbolHeyApiRegistry, node); + plugin.addNode(node); const registryNode = $.field(registryName, (f) => f .public() .static() .readonly() - .assign( - $.new(symbolHeyApiRegistry.placeholder).generic(symbol.placeholder), - ), + .assign($.new(symbolHeyApiRegistry).generic(symbol)), ); currentClass.nodes.unshift(registryNode, $.newline()); } @@ -490,7 +486,7 @@ export const generateClassSdk = ({ ), ) .do(...currentClass.nodes); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }; for (const sdkClass of sdkClasses.values()) { diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts index 51f662890..e24b74b18 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts @@ -97,14 +97,14 @@ export const generateFlatSdk = ({ plugin.referenceSymbol({ category: 'external', resource: 'client.Composable', - }).placeholder, + }), ) .default($.type.literal('$fetch')), ) .generic(nuxtTypeDefault, (g) => g.$if( symbolResponse, - (t, s) => t.extends(s.placeholder).default(s.placeholder), + (t, s) => t.extends(s).default(s), (t) => t.default('undefined'), ), ), @@ -121,7 +121,7 @@ export const generateFlatSdk = ({ ) .do(...statements), ); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }, { order: 'declarations', diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts index ed35b7ac7..de2b73c82 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts @@ -184,24 +184,22 @@ export const operationOptionsType = ({ resourceId: operation.id, role: 'response', }); - const dataType = isDataAllowed - ? symbolDataType?.placeholder || 'unknown' - : 'never'; - const responseType = symbolResponseType?.placeholder || 'unknown'; - return `${symbolOptions.placeholder}<${nuxtTypeComposable}, ${dataType}, ${responseType}, ${nuxtTypeDefault}>`; + return $.type(symbolOptions) + .generic(nuxtTypeComposable) + .generic(isDataAllowed ? (symbolDataType ?? 'unknown') : 'never') + .generic(symbolResponseType ?? 'unknown') + .generic(nuxtTypeDefault); } // TODO: refactor this to be more generic, works for now if (throwOnError) { - const dataType = isDataAllowed - ? symbolDataType?.placeholder || 'unknown' - : 'never'; - return `${symbolOptions.placeholder}<${dataType}, ${throwOnError}>`; + return $.type(symbolOptions) + .generic(isDataAllowed ? (symbolDataType ?? 'unknown') : 'never') + .generic(throwOnError); } - const dataType = isDataAllowed ? symbolDataType?.placeholder : 'never'; - return dataType - ? `${symbolOptions.placeholder}<${dataType}>` - : symbolOptions.placeholder; + return $.type(symbolOptions).$if(!isDataAllowed || symbolDataType, (t) => + t.generic(isDataAllowed ? symbolDataType! : 'never'), + ); }; type OperationParameters = { @@ -359,7 +357,6 @@ export const operationStatements = ({ resourceId: operation.id, role: isNuxtClient ? 'response' : 'responses', }); - const responseType = symbolResponseType?.placeholder || 'unknown'; const symbolErrorType = plugin.querySymbol({ category: 'type', @@ -367,7 +364,6 @@ export const operationStatements = ({ resourceId: operation.id, role: isNuxtClient ? 'error' : 'errors', }); - const errorType = symbolErrorType?.placeholder || 'unknown'; // TODO: transform parameters // const query = { @@ -394,7 +390,7 @@ export const operationStatements = ({ category: 'external', resource: 'client.formDataBodySerializer', }); - reqOptions.spread(symbol.placeholder); + reqOptions.spread(symbol); break; } case 'json': @@ -410,7 +406,7 @@ export const operationStatements = ({ category: 'external', resource: 'client.urlSearchParamsBodySerializer', }); - reqOptions.spread(symbol.placeholder); + reqOptions.spread(symbol); break; } } @@ -489,7 +485,7 @@ export const operationStatements = ({ }; if (plugin.isSymbolRegistered(query)) { const ref = plugin.referenceSymbol(query); - reqOptions.prop('responseTransformer', $(ref.placeholder)); + reqOptions.prop('responseTransformer', $(ref)); } } @@ -563,7 +559,7 @@ export const operationStatements = ({ }); statements.push( $.const('params').assign( - $(symbol.placeholder).call($.array(...args), $.array(...config)), + $(symbol).call($.array(...args), $.array(...config)), ), ); reqOptions.spread('params'); @@ -604,7 +600,7 @@ export const operationStatements = ({ if (plugin.config.instance) { clientExpression = optionsClient.coalesce($('this').attr('client')); } else if (symbolClient) { - clientExpression = optionsClient.coalesce(symbolClient.placeholder); + clientExpression = optionsClient.coalesce(symbolClient); } else { clientExpression = optionsClient; } @@ -623,11 +619,16 @@ export const operationStatements = ({ (f) => f .generic(nuxtTypeComposable) - .generic(`${responseType} | ${nuxtTypeDefault}`) - .generic(errorType) + .generic( + $.type.or(symbolResponseType ?? 'unknown', nuxtTypeDefault), + ) + .generic(symbolErrorType ?? 'unknown') .generic(nuxtTypeDefault), (f) => - f.generic(responseType).generic(errorType).generic('ThrowOnError'), + f + .generic(symbolResponseType ?? 'unknown') + .generic(symbolErrorType ?? 'unknown') + .generic('ThrowOnError'), ) .$if(plugin.config.responseStyle === 'data', (f) => f.generic($.type.literal(plugin.config.responseStyle)), diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts index 78ab440fd..e6f211652 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/typeOptions.ts @@ -56,23 +56,19 @@ export const createTypeOptions = ({ plugin.referenceSymbol({ category: 'external', resource: 'client.Composable', - }).placeholder, + }), ) .default($.type.literal('$fetch')), ) .generic('TData', (g) => - g - .extends(symbolTDataShape.placeholder) - .default(symbolTDataShape.placeholder), + g.extends(symbolTDataShape).default(symbolTDataShape), ) .generic(nuxtTypeResponse, (g) => g.default('unknown')) .generic(nuxtTypeDefault, (g) => g.default('undefined')), (t) => t .generic('TData', (g) => - g - .extends(symbolTDataShape.placeholder) - .default(symbolTDataShape.placeholder), + g.extends(symbolTDataShape).default(symbolTDataShape), ) .generic('ThrowOnError', (g) => g.extends('boolean').default('boolean'), @@ -100,7 +96,7 @@ export const createTypeOptions = ({ 'custom client.', ]) .required(!plugin.config.client && !plugin.config.instance) - .type(symbolClient.placeholder), + .type(symbolClient), ) .prop('meta', (p) => p @@ -113,5 +109,5 @@ export const createTypeOptions = ({ ), ), ); - plugin.setSymbolValue(symbolOptions, typeOptions); + plugin.addNode(typeOptions); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts index c4c529ca8..d74b2e908 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts @@ -4,8 +4,7 @@ import ts from 'typescript'; import { createOperationKey, operationResponsesMap } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; -import { $ } from '~/ts-dsl'; -import { TsDsl } from '~/ts-dsl'; +import { $, isTsDsl } from '~/ts-dsl'; import { refToName } from '~/utils/ref'; import type { HeyApiTransformersPlugin } from './types'; @@ -28,7 +27,7 @@ const isNodeReturnStatement = ({ }: { node: ts.Expression | ts.Statement | Expr; }) => { - if (node instanceof TsDsl) { + if (isTsDsl(node)) { node = node.$render(); } return node.kind === ts.SyntaxKind.ReturnStatement; @@ -112,13 +111,13 @@ const processSchemaType = ({ }); if (nodes.length) { - const node = $.const(symbol.placeholder).assign( + const node = $.const(symbol).assign( // TODO: parser - add types, generate types without transforms $.func() .param(dataVariableName, (p) => p.type('any')) .do(...ensureStatements(nodes)), ); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); } } finally { buildingSymbols.delete(symbol.id); @@ -131,7 +130,7 @@ const processSchemaType = ({ const currentValue = plugin.gen.symbols.getValue(symbol.id); if (currentValue || buildingSymbols.has(symbol.id)) { const ref = plugin.referenceSymbol(query); - const callExpression = $(ref.placeholder).call(dataExpression); + const callExpression = $(ref).call(dataExpression); if (dataExpression) { // In a map callback, the item needs to be returned, not just the transformation result @@ -358,10 +357,10 @@ export const handler: HeyApiTransformersPlugin['Handler'] = ({ plugin }) => { $.func() .async() .param(dataVariableName, (p) => p.type('any')) - .returns($.type('Promise').generic(symbolResponse.placeholder)) + .returns($.type('Promise').generic(symbolResponse)) .do(...ensureStatements(nodes)), ); - plugin.setSymbolValue(symbol, value); + plugin.addNode(value); }, { order: 'declarations', diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts index 41d48dbae..0e27f6863 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts @@ -60,5 +60,5 @@ export const createClientOptions = ({ p.type($.type.or(...types)), ), ); - plugin.setSymbolValue(symbolClientOptions, node); + plugin.addNode(node); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts index 10c325d4e..1cf7b2ac3 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts @@ -133,7 +133,7 @@ export const exportType = ({ ), ).as('const'), ); - plugin.setSymbolValue(symbolObject, objectNode); + plugin.addNode(objectNode); const symbol = plugin.registerSymbol({ meta: { @@ -154,7 +154,7 @@ export const exportType = ({ .export() .$if(createSchemaComment(schema), (t, v) => t.doc(v)) .type($.type(symbol).idx($.type(symbol).typeof().keyof()).typeof()); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); return; } else if ( plugin.config.enums.mode === 'typescript' || @@ -190,7 +190,7 @@ export const exportType = ({ .value($.fromValue(item.schema.const)), ), ); - plugin.setSymbolValue(symbol, enumNode); + plugin.addNode(enumNode); return; } } @@ -215,5 +215,5 @@ export const exportType = ({ .export() .$if(createSchemaComment(schema), (t, v) => t.doc(v)) .type(type); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts index 078eec703..872a819ee 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts @@ -145,7 +145,7 @@ const operationToDataType = ({ state, }), ); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); }; export const operationToType = ({ @@ -186,7 +186,7 @@ export const operationToType = ({ state, }), ); - plugin.setSymbolValue(symbolErrors, node); + plugin.addNode(node); if (error) { const symbol = plugin.registerSymbol({ @@ -211,7 +211,7 @@ export const operationToType = ({ .alias(symbol) .export() .type($.type(symbolErrors).idx($.type(symbolErrors).keyof())); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); } } @@ -241,7 +241,7 @@ export const operationToType = ({ state, }), ); - plugin.setSymbolValue(symbolResponses, node); + plugin.addNode(node); if (response) { const symbol = plugin.registerSymbol({ @@ -266,7 +266,7 @@ export const operationToType = ({ .alias(symbol) .export() .type($.type(symbolResponses).idx($.type(symbolResponses).keyof())); - plugin.setSymbolValue(symbol, node); + plugin.addNode(node); } } }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts index ac99a4550..b46c67b90 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts @@ -54,7 +54,7 @@ const operationToDataType = ({ state, }), ); - plugin.setSymbolValue(symbolWebhookPayload, node); + plugin.addNode(node); data.properties.body = { symbolRef: symbolWebhookPayload }; dataRequired.push('body'); @@ -98,7 +98,7 @@ const operationToDataType = ({ state, }), ); - plugin.setSymbolValue(symbolWebhookRequest, node); + plugin.addNode(node); return symbolWebhookRequest; }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts index 5dd9c2e7d..859fa6a97 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts @@ -186,6 +186,6 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { .alias(symbolWebhooks) .export() .type($.type.or(...webhooks)); - plugin.setSymbolValue(symbolWebhooks, node); + plugin.addNode(node); } }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts index 06458e259..4edc3287c 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/string.ts @@ -60,7 +60,7 @@ export const stringToAst = ({ .type( $.type.template().add($.type('T')).add('_').add($.type('string')), ); - plugin.setSymbolValue(symbolTypeId, nodeTypeId); + plugin.addNode(nodeTypeId); } const symbolTypeId = plugin.referenceSymbol(queryTypeId); @@ -75,7 +75,7 @@ export const stringToAst = ({ .alias(symbolTypeName) .export() .type($.type(symbolTypeId).generic($.type.literal(type))); - plugin.setSymbolValue(symbolTypeName, node); + plugin.addNode(node); } const symbol = plugin.referenceSymbol(query); return $.type(symbol); diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts index e5c30310a..419567dd5 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts @@ -90,5 +90,5 @@ export const createMutationOptions = ({ .returns(mutationType) .do($.return(mutationOpts)), ); - plugin.setSymbolValue(symbolMutationOptions, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts index 2a2a54810..3c9ace091 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts @@ -70,7 +70,7 @@ export const createQueryKeyFunction = ({ .param('options', (p) => p.optional().type(TOptionsType)) .param('tags', (p) => p.optional().type('ReadonlyArray')) .returns($.type.tuple(returnType)) - .generic(TOptionsType, (g) => g.extends(symbolOptions.placeholder)) + .generic(TOptionsType, (g) => g.extends(symbolOptions)) .do( $.const('params') .type(returnType) @@ -86,13 +86,11 @@ export const createQueryKeyFunction = ({ $.if('tags').do( $('params') .attr('tags') - .assign($('tags').as('unknown').as(symbolJsonValue.placeholder)), + .assign($('tags').as('unknown').as(symbolJsonValue)), ), $.if($('options').attr('body').optional().neq($.id('undefined'))).do( $.const('normalizedBody').assign( - $(symbolSerializeQueryValue.placeholder).call( - $('options').attr('body'), - ), + $(symbolSerializeQueryValue).call($('options').attr('body')), ), $.if($('normalizedBody').neq($.id('undefined'))).do( $('params').attr('body').assign('normalizedBody'), @@ -103,9 +101,7 @@ export const createQueryKeyFunction = ({ ), $.if($('options').attr('query').optional().neq($.id('undefined'))).do( $.const('normalizedQuery').assign( - $(symbolSerializeQueryValue.placeholder).call( - $('options').attr('query'), - ), + $(symbolSerializeQueryValue).call($('options').attr('query')), ), $.if($('normalizedQuery').neq($.id('undefined'))).do( $('params').attr('query').assign('normalizedQuery'), @@ -114,7 +110,7 @@ export const createQueryKeyFunction = ({ $.return($.array($('params'))), ), ); - plugin.setSymbolValue(symbolCreateQueryKey, fn); + plugin.addNode(fn); }; const createQueryKeyLiteral = ({ @@ -137,7 +133,7 @@ const createQueryKeyLiteral = ({ resource: 'createQueryKey', tool: plugin.name, }); - const createQueryKeyCallExpression = $(symbolCreateQueryKey.placeholder).call( + const createQueryKeyCallExpression = $(symbolCreateQueryKey).call( $.literal(id), 'options', tagsExpression, @@ -180,19 +176,15 @@ export const createQueryKeyType = ({ .object() .prop('_id', (p) => p.type('string')) .prop(getClientBaseUrlKey(plugin.context.config), (p) => - p.optional().type(symbolJsonValue.placeholder), + p.optional().type(symbolJsonValue), ) - .prop('body', (p) => p.optional().type(symbolJsonValue.placeholder)) - .prop('query', (p) => - p.optional().type(symbolJsonValue.placeholder), - ) - .prop('tags', (p) => - p.optional().type(symbolJsonValue.placeholder), - ), + .prop('body', (p) => p.optional().type(symbolJsonValue)) + .prop('query', (p) => p.optional().type(symbolJsonValue)) + .prop('tags', (p) => p.optional().type(symbolJsonValue)), ), ), ); - plugin.setSymbolValue(symbolQueryKeyType, queryKeyType); + plugin.addNode(queryKeyType); }; export const queryKeyStatement = ({ diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts index c837637e5..6d1e43595 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts @@ -61,8 +61,8 @@ export const createQueryOptions = ({ plugin, symbol: symbolQueryKey, }); - plugin.setSymbolValue(symbolQueryKey, node); - keyExpression = $(symbolQueryKey.placeholder).call(optionsParamName); + plugin.addNode(node); + keyExpression = $(symbolQueryKey).call(optionsParamName); } else { const symbolCreateQueryKey = plugin.referenceSymbol({ category: 'utility', @@ -78,7 +78,7 @@ export const createQueryOptions = ({ ) { tagsExpr = $.array(...operation.tags.map((t) => $.literal(t))); } - keyExpression = $(symbolCreateQueryKey.placeholder).call( + keyExpression = $(symbolCreateQueryKey).call( $.literal(operation.id), optionsParamName, tagsExpr, @@ -146,7 +146,7 @@ export const createQueryOptions = ({ c.doc(v), ) .assign( - $(symbolDefineQueryOptions.placeholder).call( + $(symbolDefineQueryOptions).call( $.func() .param(optionsParamName, (p) => p.required(isRequiredOptions).type(strippedTypeData), @@ -154,5 +154,5 @@ export const createQueryOptions = ({ .do($.return(queryOpts)), ), ); - plugin.setSymbolValue(symbolQueryOptionsFn, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts index a49706ce0..c0a01602b 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts @@ -57,7 +57,7 @@ export const createQueryKeyFunction = ({ .param('options', (p) => p.optional().type(TOptionsType)) .param('infinite', (p) => p.optional().type('boolean')) .param('tags', (p) => p.optional().type('ReadonlyArray')) - .generic(TOptionsType, (g) => g.extends(symbolOptions.placeholder)) + .generic(TOptionsType, (g) => g.extends(symbolOptions)) .returns($.type.tuple(returnType)) .do( $.const('params') @@ -88,7 +88,7 @@ export const createQueryKeyFunction = ({ $.return($.array().element($('params'))), ), ); - plugin.setSymbolValue(symbolCreateQueryKey, fn); + plugin.addNode(fn); }; const createQueryKeyLiteral = ({ @@ -114,7 +114,7 @@ const createQueryKeyLiteral = ({ resource: 'createQueryKey', tool: plugin.name, }); - const createQueryKeyCallExpression = $(symbolCreateQueryKey.placeholder).call( + const createQueryKeyCallExpression = $(symbolCreateQueryKey).call( $.literal(id), 'options', isInfinite || tagsArray ? $.literal(Boolean(isInfinite)) : undefined, @@ -140,7 +140,7 @@ export const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => { const queryKeyType = $.type .alias(symbolQueryKeyType) .export() - .generic(TOptionsType, (g) => g.extends(symbolOptions.placeholder)) + .generic(TOptionsType, (g) => g.extends(symbolOptions)) .type( $.type.tuple( $.type.and( @@ -155,7 +155,7 @@ export const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => { ), ), ); - plugin.setSymbolValue(symbolQueryKeyType, queryKeyType); + plugin.addNode(queryKeyType); }; export const queryKeyStatement = ({ diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts index 5b1138f2a..817992360 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts @@ -90,7 +90,7 @@ const createInfiniteParamsFunction = ({ $.return($('params').as('unknown').as($('page').typeofType())), ), ); - plugin.setSymbolValue(symbolCreateInfiniteParams, fn); + plugin.addNode(fn); }; export const createInfiniteQueryOptions = ({ @@ -181,7 +181,7 @@ export const createInfiniteQueryOptions = ({ symbol: symbolInfiniteQueryKey, typeQueryKey, }); - plugin.setSymbolValue(symbolInfiniteQueryKey, node); + plugin.addNode(node); const awaitSdkFn = $(queryFn) .call( @@ -216,7 +216,7 @@ export const createInfiniteQueryOptions = ({ ), ), $.const('params').assign( - $(symbolCreateInfiniteParams.placeholder).call('queryKey', 'page'), + $(symbolCreateInfiniteParams).call('queryKey', 'page'), ), ]; @@ -245,7 +245,7 @@ export const createInfiniteQueryOptions = ({ .param('options', (p) => p.required(isRequiredOptions).type(typeData)) .do( $.return( - $(symbolInfiniteQueryOptions.placeholder) + $(symbolInfiniteQueryOptions) .call( $.object() .pretty() @@ -257,10 +257,7 @@ export const createInfiniteQueryOptions = ({ .param((p) => p.object('pageParam', 'queryKey', 'signal')) .do(...statements), ) - .prop( - 'queryKey', - $(symbolInfiniteQueryKey.placeholder).call('options'), - ) + .prop('queryKey', $(symbolInfiniteQueryKey).call('options')) .$if( handleMeta(plugin, operation, 'infiniteQueryOptions'), (o, v) => o.prop('meta', v), @@ -277,5 +274,5 @@ export const createInfiniteQueryOptions = ({ ), ), ); - plugin.setSymbolValue(symbolInfiniteQueryOptionsFn, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts index ca109cab1..6aad6b0f1 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts @@ -85,5 +85,5 @@ export const createMutationOptions = ({ $(mutationOptionsFn).return(), ), ); - plugin.setSymbolValue(symbolMutationOptions, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts index f355b3ac6..bec556434 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts @@ -65,7 +65,7 @@ export const createQueryOptions = ({ plugin, symbol: symbolQueryKey, }); - plugin.setSymbolValue(symbolQueryKey, node); + plugin.addNode(node); const typeData = useTypeData({ operation, plugin }); const typeError = useTypeError({ operation, plugin }); @@ -100,7 +100,7 @@ export const createQueryOptions = ({ .param((p) => p.object('queryKey', 'signal')) .do(...statements), ) - .prop('queryKey', $(symbolQueryKey.placeholder).call(optionsParamName)) + .prop('queryKey', $(symbolQueryKey).call(optionsParamName)) .$if(handleMeta(plugin, operation, 'queryOptions'), (o, v) => o.prop('meta', v), ); @@ -131,16 +131,16 @@ export const createQueryOptions = ({ p.required(isRequiredOptions).type(typeData), ) .do( - $(symbolQueryOptions.placeholder) + $(symbolQueryOptions) .call(queryOptionsObj) .generics( typeResponse, typeError, typeResponse, - $(symbolQueryKey.placeholder).returnType(), + $(symbolQueryKey).returnType(), ) .return(), ), ); - plugin.setSymbolValue(symbolQueryOptionsFn, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts index e9101dff2..201e22dea 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/useQuery.ts @@ -63,10 +63,10 @@ export const createUseQuery = ({ p.required(isRequiredOptions).type(typeData), ) .do( - $(symbolUseQuery.placeholder) - .call($(symbolQueryOptionsFn.placeholder).call(optionsParamName)) + $(symbolUseQuery) + .call($(symbolQueryOptionsFn).call(optionsParamName)) .return(), ), ); - plugin.setSymbolValue(symbolUseQueryFn, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/arktype/shared/export.ts b/packages/openapi-ts/src/plugins/arktype/shared/export.ts index e4c9761a8..02788cc4e 100644 --- a/packages/openapi-ts/src/plugins/arktype/shared/export.ts +++ b/packages/openapi-ts/src/plugins/arktype/shared/export.ts @@ -34,21 +34,19 @@ export const exportAst = ({ // .type( // ast.typeName // ? (tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: ast.typeName, // }) as unknown as ts.TypeNode) // : undefined, // ) - .assign( - $(type.placeholder).call(ast.def ? $.literal(ast.def) : ast.expression), - ); - plugin.setSymbolValue(symbol, statement); + .assign($(type).call(ast.def ? $.literal(ast.def) : ast.expression)); + plugin.addNode(statement); if (typeInferSymbol) { const inferType = $.type .alias(typeInferSymbol) .export() .type($.type(symbol).attr(identifiers.type.infer).typeofType()); - plugin.setSymbolValue(typeInferSymbol, inferType); + plugin.addNode(inferType); } }; diff --git a/packages/openapi-ts/src/plugins/arktype/v2/api.ts b/packages/openapi-ts/src/plugins/arktype/v2/api.ts index f9551e853..c1bbc8953 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/api.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/api.ts @@ -33,13 +33,7 @@ export const createRequestValidatorV2 = ({ return $.func() .async() .param(dataParameterName) - .do( - $(symbol.placeholder) - .attr('parseAsync') - .call(dataParameterName) - .await() - .return(), - ); + .do($(symbol).attr('parseAsync').call(dataParameterName).await().return()); }; export const createResponseValidatorV2 = ({ @@ -59,11 +53,5 @@ export const createResponseValidatorV2 = ({ return $.func() .async() .param(dataParameterName) - .do( - $(symbol.placeholder) - .attr('parseAsync') - .call(dataParameterName) - .await() - .return(), - ); + .do($(symbol).attr('parseAsync').call(dataParameterName).await().return()); }; diff --git a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts index ff12e885d..c890969d0 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts @@ -43,14 +43,14 @@ export const irSchemaToAst = ({ }; const refSymbol = plugin.referenceSymbol(query); if (plugin.isSymbolRegistered(query)) { - const ref = $(refSymbol.placeholder); + const ref = $(refSymbol); ast.expression = ref; } else { - // expression: z.placeholder, + // expression: z, // name: identifiers.lazy, const lazyExpression = $('TODO') .attr('TODO') - .call($.func().returns('any').do($.return(refSymbol.placeholder))); + .call($.func().returns('any').do($.return(refSymbol))); ast.expression = lazyExpression; ast.hasLazyExpression = true; state.hasLazyExpression.value = true; @@ -74,7 +74,7 @@ export const irSchemaToAst = ({ // }), // parameters: [ // tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: identifiers.globalRegistry, // }), // tsc.objectExpression({ @@ -113,7 +113,7 @@ export const irSchemaToAst = ({ // ) { // ast.expression = tsc.callExpression({ // functionName: tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: identifiers.intersection, // }), // parameters: itemSchemas.map((schema) => schema.expression), @@ -130,7 +130,7 @@ export const irSchemaToAst = ({ // schema.hasCircularReference // ? tsc.callExpression({ // functionName: tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: identifiers.lazy, // }), // parameters: [ @@ -151,7 +151,7 @@ export const irSchemaToAst = ({ // } else { // ast.expression = tsc.callExpression({ // functionName: tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: identifiers.union, // }), // parameters: [ @@ -203,7 +203,7 @@ export const irSchemaToAst = ({ // if (optional) { // ast.expression = tsc.callExpression({ // functionName: tsc.propertyAccessExpression({ - // expression: z.placeholder, + // expression: z, // name: identifiers.optional, // }), // parameters: [ast.expression], diff --git a/packages/openapi-ts/src/plugins/arktype/v2/toAst/index.ts b/packages/openapi-ts/src/plugins/arktype/v2/toAst/index.ts index e3b50b355..326c2e316 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/toAst/index.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/toAst/index.ts @@ -90,7 +90,7 @@ export const irSchemaWithTypeToAst = ({ resource: 'arktype.type', }); - const expression = $(type.placeholder).call( + const expression = $(type).call( $.object() .prop('name', $.literal('string')) .prop('platform', $.literal("'android' | 'ios'")) diff --git a/packages/openapi-ts/src/plugins/fastify/plugin.ts b/packages/openapi-ts/src/plugins/fastify/plugin.ts index 17dce6874..876961928 100644 --- a/packages/openapi-ts/src/plugins/fastify/plugin.ts +++ b/packages/openapi-ts/src/plugins/fastify/plugin.ts @@ -161,5 +161,5 @@ export const handler: FastifyPlugin['Handler'] = ({ plugin }) => { ); const node = $.type.alias(symbolRouteHandlers).export().type(type); - plugin.setSymbolValue(symbolRouteHandlers, node); + plugin.addNode(node); }; diff --git a/packages/openapi-ts/src/plugins/shared/utils/instance.ts b/packages/openapi-ts/src/plugins/shared/utils/instance.ts index 9f7126c86..66e33f6c6 100644 --- a/packages/openapi-ts/src/plugins/shared/utils/instance.ts +++ b/packages/openapi-ts/src/plugins/shared/utils/instance.ts @@ -2,6 +2,7 @@ import path from 'node:path'; import type { IProject, + Node, Symbol, SymbolIdentifier, SymbolIn, @@ -105,6 +106,10 @@ export class PluginInstance { this.package = props.context.package; } + addNode(node: Node): void { + return this.gen.nodes.add(node); + } + /** * Iterates over various input elements as specified by the event types, in * a specific order: servers, schemas, parameters, request bodies, then @@ -345,6 +350,9 @@ export class PluginInstance { } } + /** + * @deprecated use addNode + */ setSymbolValue(symbol: Symbol, value: unknown): void { for (const hook of this.eventHooks['symbol:setValue:before']) { hook({ plugin: this, symbol, value }); diff --git a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts index cec269e01..6a66acb91 100644 --- a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts +++ b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts @@ -54,7 +54,7 @@ export const createUseSwr = ({ ) .assign( $.func().do( - $(symbolUseSwr.placeholder) + $(symbolUseSwr) .call( $.literal(operation.path), $.func() @@ -64,5 +64,5 @@ export const createUseSwr = ({ .return(), ), ); - plugin.setSymbolValue(symbolUseQueryFn, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/valibot/shared/export.ts b/packages/openapi-ts/src/plugins/valibot/shared/export.ts index 666f5927e..de503e5bf 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/export.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/export.ts @@ -33,5 +33,5 @@ export const exportAst = ({ c.type($.type(v).attr(ast.typeName || identifiers.types.GenericSchema)), ) .assign(pipesToAst({ pipes: ast.pipes, plugin })); - plugin.setSymbolValue(symbol, statement); + plugin.addNode(statement); }; diff --git a/packages/openapi-ts/src/plugins/valibot/shared/pipesToAst.ts b/packages/openapi-ts/src/plugins/valibot/shared/pipesToAst.ts index b9ea97379..4e5f6b8eb 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/pipesToAst.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/pipesToAst.ts @@ -18,7 +18,7 @@ export const pipesToAst = ({ category: 'external', resource: 'valibot.v', }); - return $(v.placeholder) + return $(v) .attr(identifiers.methods.pipe) .call(...pipes); }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/api.ts b/packages/openapi-ts/src/plugins/valibot/v1/api.ts index 3c987db44..2f14b3571 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/api.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/api.ts @@ -8,11 +8,7 @@ const defaultValidatorResolver = ({ schema, v, }: ValidatorResolverArgs): ReturnType => - $(v.placeholder) - .attr(identifiers.async.parseAsync) - .call(schema.placeholder, 'data') - .await() - .return(); + $(v).attr(identifiers.async.parseAsync).call(schema, 'data').await().return(); export const createRequestValidatorV1 = ({ operation, diff --git a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts index ab7a3ae7c..e10ec9015 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts @@ -50,12 +50,12 @@ export const irSchemaToAst = ({ }; const refSymbol = plugin.referenceSymbol(query); if (plugin.isSymbolRegistered(query)) { - const ref = $(refSymbol.placeholder); + const ref = $(refSymbol); ast.pipes.push(ref); } else { - const lazyExpression = $(v.placeholder) + const lazyExpression = $(v) .attr(identifiers.schemas.lazy) - .call($.func().do($(refSymbol.placeholder).return())); + .call($.func().do($(refSymbol).return())); ast.pipes.push(lazyExpression); state.hasLazyExpression.value = true; } @@ -69,7 +69,7 @@ export const irSchemaToAst = ({ ast.pipes.push(typeAst.expression); if (plugin.config.metadata && schema.description) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.metadata) .call($.object().prop('description', $.literal(schema.description))); ast.pipes.push(expression); @@ -91,12 +91,12 @@ export const irSchemaToAst = ({ }); if (schema.logicalOperator === 'and') { - const intersectExpression = $(v.placeholder) + const intersectExpression = $(v) .attr(identifiers.schemas.intersect) .call($.array(...itemsAst)); ast.pipes.push(intersectExpression); } else { - const unionExpression = $(v.placeholder) + const unionExpression = $(v) .attr(identifiers.schemas.union) .call($.array(...itemsAst)); ast.pipes.push(unionExpression); @@ -120,9 +120,7 @@ export const irSchemaToAst = ({ if (ast.pipes.length) { if (schema.accessScope === 'read') { - const readonlyExpression = $(v.placeholder) - .attr(identifiers.actions.readonly) - .call(); + const readonlyExpression = $(v).attr(identifiers.actions.readonly).call(); ast.pipes.push(readonlyExpression); } @@ -132,7 +130,7 @@ export const irSchemaToAst = ({ const isBigInt = schema.type === 'integer' && schema.format === 'int64'; callParameter = numberParameter({ isBigInt, value: schema.default }); ast.pipes = [ - $(v.placeholder) + $(v) .attr(identifiers.schemas.optional) .call(pipesToAst({ pipes: ast.pipes, plugin }), callParameter), ]; @@ -140,7 +138,7 @@ export const irSchemaToAst = ({ if (optional && !callParameter) { ast.pipes = [ - $(v.placeholder) + $(v) .attr(identifiers.schemas.optional) .call(pipesToAst({ pipes: ast.pipes, plugin })), ]; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts index 8d8bd8a86..2f9a5ac61 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts @@ -24,7 +24,7 @@ export const arrayToAst = ({ category: 'external', resource: 'valibot.v', }); - const functionName = $(v.placeholder).attr(identifiers.schemas.array); + const functionName = $(v).attr(identifiers.schemas.array); if (!schema.items) { const expression = functionName.call( @@ -84,20 +84,20 @@ export const arrayToAst = ({ } if (schema.minItems === schema.maxItems && schema.minItems !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.length) .call($.fromValue(schema.minItems)); result.pipes.push(expression); } else { if (schema.minItems !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.minLength) .call($.fromValue(schema.minItems)); result.pipes.push(expression); } if (schema.maxItems !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.maxLength) .call($.fromValue(schema.maxItems)); result.pipes.push(expression); diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/boolean.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/boolean.ts index b1b103069..5e6f3415a 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/boolean.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/boolean.ts @@ -20,13 +20,11 @@ export const booleanToAst = ({ if (typeof schema.const === 'boolean') { pipes.push( - $(v.placeholder) - .attr(identifiers.schemas.literal) - .call($.literal(schema.const)), + $(v).attr(identifiers.schemas.literal).call($.literal(schema.const)), ); return pipesToAst({ pipes, plugin }); } - pipes.push($(v.placeholder).attr(identifiers.schemas.boolean).call()); + pipes.push($(v).attr(identifiers.schemas.boolean).call()); return pipesToAst({ pipes, plugin }); }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/enum.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/enum.ts index df36da719..864937b39 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/enum.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/enum.ts @@ -40,12 +40,12 @@ export const enumToAst = ({ resource: 'valibot.v', }); - let resultExpression = $(v.placeholder) + let resultExpression = $(v) .attr(identifiers.schemas.picklist) .call($.array(...enumMembers)); if (isNullable) { - resultExpression = $(v.placeholder) + resultExpression = $(v) .attr(identifiers.schemas.nullable) .call(resultExpression); } diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/never.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/never.ts index f2a79046f..937e92814 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/never.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/never.ts @@ -13,6 +13,6 @@ export const neverToAst = ({ category: 'external', resource: 'valibot.v', }); - const expression = $(v.placeholder).attr(identifiers.schemas.never).call(); + const expression = $(v).attr(identifiers.schemas.never).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/null.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/null.ts index 25eb8de33..db4e25f7c 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/null.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/null.ts @@ -13,6 +13,6 @@ export const nullToAst = ({ category: 'external', resource: 'valibot.v', }); - const expression = $(v.placeholder).attr(identifiers.schemas.null).call(); + const expression = $(v).attr(identifiers.schemas.null).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/number.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/number.ts index 99e6008b0..6f02cc2d5 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/number.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/number.ts @@ -68,42 +68,38 @@ export const numberToAst = ({ literalValue = $.fromValue(constValue); } - return $(v.placeholder) - .attr(identifiers.schemas.literal) - .call(literalValue); + return $(v).attr(identifiers.schemas.literal).call(literalValue); } const pipes: Array> = []; // For bigint formats (int64, uint64), create union of number, string, and bigint with transform if (isBigInt) { - const unionExpression = $(v.placeholder) + const unionExpression = $(v) .attr(identifiers.schemas.union) .call( $.array( - $(v.placeholder).attr(identifiers.schemas.number).call(), - $(v.placeholder).attr(identifiers.schemas.string).call(), - $(v.placeholder).attr(identifiers.schemas.bigInt).call(), + $(v).attr(identifiers.schemas.number).call(), + $(v).attr(identifiers.schemas.string).call(), + $(v).attr(identifiers.schemas.bigInt).call(), ), ); pipes.push(unionExpression); // Add transform to convert to BigInt - const transformExpression = $(v.placeholder) + const transformExpression = $(v) .attr(identifiers.actions.transform) .call($.func().param('x').do($('BigInt').call('x').return())); pipes.push(transformExpression); } else { // For regular number formats, use number schema - const expression = $(v.placeholder).attr(identifiers.schemas.number).call(); + const expression = $(v).attr(identifiers.schemas.number).call(); pipes.push(expression); } // Add integer validation for integer types (except when using bigint union) if (!isBigInt && isInteger) { - const expression = $(v.placeholder) - .attr(identifiers.actions.integer) - .call(); + const expression = $(v).attr(identifiers.actions.integer).call(); pipes.push(expression); } @@ -115,7 +111,7 @@ export const numberToAst = ({ const maxErrorMessage = formatInfo.maxError; // Add minimum value validation - const minExpression = $(v.placeholder) + const minExpression = $(v) .attr(identifiers.actions.minValue) .call( isBigInt ? $('BigInt').call($.literal(minValue)) : $.literal(minValue), @@ -124,7 +120,7 @@ export const numberToAst = ({ pipes.push(minExpression); // Add maximum value validation - const maxExpression = $(v.placeholder) + const maxExpression = $(v) .attr(identifiers.actions.maxValue) .call( isBigInt ? $('BigInt').call($.literal(maxValue)) : $.literal(maxValue), @@ -134,24 +130,24 @@ export const numberToAst = ({ } if (schema.exclusiveMinimum !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.gtValue) .call(numberParameter({ isBigInt, value: schema.exclusiveMinimum })); pipes.push(expression); } else if (schema.minimum !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.minValue) .call(numberParameter({ isBigInt, value: schema.minimum })); pipes.push(expression); } if (schema.exclusiveMaximum !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.ltValue) .call(numberParameter({ isBigInt, value: schema.exclusiveMaximum })); pipes.push(expression); } else if (schema.maximum !== undefined) { - const expression = $(v.placeholder) + const expression = $(v) .attr(identifiers.actions.maxValue) .call(numberParameter({ isBigInt, value: schema.maximum })); pipes.push(expression); diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts index da80e6f04..2c749d933 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts @@ -21,36 +21,27 @@ function defaultObjectBaseResolver({ // Handle `additionalProperties: { type: 'never' }` → v.strictObject() if (additional === null) { - return pipes.push( - $(v.placeholder).attr(identifiers.schemas.strictObject).call(shape), - ); + return pipes.push($(v).attr(identifiers.schemas.strictObject).call(shape)); } // Handle additionalProperties as schema → v.record() or v.objectWithRest() if (additional) { if (shape.isEmpty) { return pipes.push( - $(v.placeholder) + $(v) .attr(identifiers.schemas.record) - .call( - $(v.placeholder).attr(identifiers.schemas.string).call(), - additional, - ), + .call($(v).attr(identifiers.schemas.string).call(), additional), ); } // If there are named properties, use v.objectWithRest() to validate both return pipes.push( - $(v.placeholder) - .attr(identifiers.schemas.objectWithRest) - .call(shape, additional), + $(v).attr(identifiers.schemas.objectWithRest).call(shape, additional), ); } // Default case → v.object() - return pipes.push( - $(v.placeholder).attr(identifiers.schemas.object).call(shape), - ); + return pipes.push($(v).attr(identifiers.schemas.object).call(shape)); } export const objectToAst = ({ diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/string.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/string.ts index 1b41cf8db..5a0300335 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/string.ts @@ -18,28 +18,20 @@ const defaultFormatResolver = ({ switch (schema.format) { case 'date': - return pipes.push( - $(v.placeholder).attr(identifiers.actions.isoDate).call(), - ); + return pipes.push($(v).attr(identifiers.actions.isoDate).call()); case 'date-time': - return pipes.push( - $(v.placeholder).attr(identifiers.actions.isoTimestamp).call(), - ); + return pipes.push($(v).attr(identifiers.actions.isoTimestamp).call()); case 'email': - return pipes.push( - $(v.placeholder).attr(identifiers.actions.email).call(), - ); + return pipes.push($(v).attr(identifiers.actions.email).call()); case 'ipv4': case 'ipv6': - return pipes.push($(v.placeholder).attr(identifiers.actions.ip).call()); + return pipes.push($(v).attr(identifiers.actions.ip).call()); case 'time': - return pipes.push( - $(v.placeholder).attr(identifiers.actions.isoTimeSecond).call(), - ); + return pipes.push($(v).attr(identifiers.actions.isoTimeSecond).call()); case 'uri': - return pipes.push($(v.placeholder).attr(identifiers.actions.url).call()); + return pipes.push($(v).attr(identifiers.actions.url).call()); case 'uuid': - return pipes.push($(v.placeholder).attr(identifiers.actions.uuid).call()); + return pipes.push($(v).attr(identifiers.actions.uuid).call()); } return true; @@ -60,14 +52,12 @@ export const stringToAst = ({ if (typeof schema.const === 'string') { pipes.push( - $(v.placeholder) - .attr(identifiers.schemas.literal) - .call($.literal(schema.const)), + $(v).attr(identifiers.schemas.literal).call($.literal(schema.const)), ); return pipesToAst({ pipes, plugin }); } - pipes.push($(v.placeholder).attr(identifiers.schemas.string).call()); + pipes.push($(v).attr(identifiers.schemas.string).call()); if (schema.format) { const args: FormatResolverArgs = { $, pipes, plugin, schema }; @@ -78,14 +68,12 @@ export const stringToAst = ({ if (schema.minLength === schema.maxLength && schema.minLength !== undefined) { pipes.push( - $(v.placeholder) - .attr(identifiers.actions.length) - .call($.literal(schema.minLength)), + $(v).attr(identifiers.actions.length).call($.literal(schema.minLength)), ); } else { if (schema.minLength !== undefined) { pipes.push( - $(v.placeholder) + $(v) .attr(identifiers.actions.minLength) .call($.literal(schema.minLength)), ); @@ -93,7 +81,7 @@ export const stringToAst = ({ if (schema.maxLength !== undefined) { pipes.push( - $(v.placeholder) + $(v) .attr(identifiers.actions.maxLength) .call($.literal(schema.maxLength)), ); @@ -102,9 +90,7 @@ export const stringToAst = ({ if (schema.pattern) { pipes.push( - $(v.placeholder) - .attr(identifiers.actions.regex) - .call($.regexp(schema.pattern)), + $(v).attr(identifiers.actions.regex).call($.regexp(schema.pattern)), ); } diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts index 346d280fb..aa9e92bb7 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts @@ -24,12 +24,10 @@ export const tupleToAst = ({ if (schema.const && Array.isArray(schema.const)) { const tupleElements = schema.const.map((value) => - $(v.placeholder) - .attr(identifiers.schemas.literal) - .call($.fromValue(value)), + $(v).attr(identifiers.schemas.literal).call($.fromValue(value)), ); result.pipes = [ - $(v.placeholder) + $(v) .attr(identifiers.schemas.tuple) .call($.array(...tupleElements)), ]; @@ -52,7 +50,7 @@ export const tupleToAst = ({ return pipesToAst({ pipes: schemaPipes.pipes, plugin }); }); result.pipes = [ - $(v.placeholder) + $(v) .attr(identifiers.schemas.tuple) .call($.array(...tupleElements)), ]; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/undefined.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/undefined.ts index bd729b699..9d7a9f41d 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/undefined.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/undefined.ts @@ -14,8 +14,6 @@ export const undefinedToAst = ({ resource: 'valibot.v', }); - const expression = $(v.placeholder) - .attr(identifiers.schemas.undefined) - .call(); + const expression = $(v).attr(identifiers.schemas.undefined).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/unknown.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/unknown.ts index ae147c96d..c8765bcf2 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/unknown.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/unknown.ts @@ -14,6 +14,6 @@ export const unknownToAst = ({ resource: 'valibot.v', }); - const expression = $(v.placeholder).attr(identifiers.schemas.unknown).call(); + const expression = $(v).attr(identifiers.schemas.unknown).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/void.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/void.ts index 539687ab9..375a020a4 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/void.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/void.ts @@ -14,6 +14,6 @@ export const voidToAst = ({ resource: 'valibot.v', }); - const expression = $(v.placeholder).attr(identifiers.schemas.void).call(); + const expression = $(v).attr(identifiers.schemas.void).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/api.ts b/packages/openapi-ts/src/plugins/zod/mini/api.ts index d1245f0e6..41755b8c5 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/api.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/api.ts @@ -7,11 +7,7 @@ import type { ValidatorResolverArgs } from '../types'; const defaultValidatorResolver = ({ schema, }: ValidatorResolverArgs): ReturnType => - $(schema.placeholder) - .attr(identifiers.parseAsync) - .call('data') - .await() - .return(); + $(schema).attr(identifiers.parseAsync).call('data').await().return(); export const createRequestValidatorMini = ({ operation, diff --git a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts index 69e0a87a0..b588e9374 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts @@ -48,11 +48,11 @@ export const irSchemaToAst = ({ }; const refSymbol = plugin.referenceSymbol(query); if (plugin.isSymbolRegistered(query)) { - ast.expression = $(refSymbol.placeholder); + ast.expression = $(refSymbol); } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.lazy) - .call($.func().returns('any').do($(refSymbol.placeholder).return())); + .call($.func().returns('any').do($(refSymbol).return())); ast.hasLazyExpression = true; state.hasLazyExpression.value = true; } @@ -69,7 +69,7 @@ export const irSchemaToAst = ({ ast.expression = ast.expression .attr(identifiers.register) .call( - $(z.placeholder).attr(identifiers.globalRegistry), + $(z).attr(identifiers.globalRegistry), $.object() .pretty() .prop('description', $.literal(schema.description)), @@ -99,18 +99,18 @@ export const irSchemaToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.intersection) .call(...itemSchemas.map((schema) => schema.expression)); } else { ast.expression = itemSchemas[0]!.expression; itemSchemas.slice(1).forEach((schema) => { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.intersection) .call( ast.expression, schema.hasLazyExpression - ? $(z.placeholder) + ? $(z) .attr(identifiers.lazy) .call($.func().do(schema.expression.return())) : schema.expression, @@ -118,7 +118,7 @@ export const irSchemaToAst = ({ }); } } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.union) .call( $.array() @@ -143,21 +143,17 @@ export const irSchemaToAst = ({ if (ast.expression) { if (schema.accessScope === 'read') { - ast.expression = $(z.placeholder) - .attr(identifiers.readonly) - .call(ast.expression); + ast.expression = $(z).attr(identifiers.readonly).call(ast.expression); } if (optional) { - ast.expression = $(z.placeholder) - .attr(identifiers.optional) - .call(ast.expression); + ast.expression = $(z).attr(identifiers.optional).call(ast.expression); ast.typeName = identifiers.ZodMiniOptional; } if (schema.default !== undefined) { const isBigInt = schema.type === 'integer' && schema.format === 'int64'; - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers._default) .call( ast.expression, diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts index c5a04d8bf..6fe307e97 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts @@ -22,7 +22,7 @@ export const arrayToAst = ({ const result: Partial> = {}; - const functionName = $(z.placeholder).attr(identifiers.array); + const functionName = $(z).attr(identifiers.array); if (!schema.items) { result.expression = functionName.call( @@ -66,13 +66,13 @@ export const arrayToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - intersectionExpression = $(z.placeholder) + intersectionExpression = $(z) .attr(identifiers.intersection) .call(...itemExpressions); } else { intersectionExpression = itemExpressions[0]!; for (let i = 1; i < itemExpressions.length; i++) { - intersectionExpression = $(z.placeholder) + intersectionExpression = $(z) .attr(identifiers.intersection) .call(intersectionExpression, itemExpressions[i]); } @@ -80,10 +80,10 @@ export const arrayToAst = ({ result.expression = functionName.call(intersectionExpression); } else { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.array) .call( - $(z.placeholder) + $(z) .attr(identifiers.union) .call($.array(...itemExpressions)), ); @@ -95,24 +95,18 @@ export const arrayToAst = ({ if (schema.minItems === schema.maxItems && schema.minItems !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.length) - .call($.fromValue(schema.minItems)), + $(z).attr(identifiers.length).call($.fromValue(schema.minItems)), ); } else { if (schema.minItems !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.minLength) - .call($.fromValue(schema.minItems)), + $(z).attr(identifiers.minLength).call($.fromValue(schema.minItems)), ); } if (schema.maxItems !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.maxLength) - .call($.fromValue(schema.maxItems)), + $(z).attr(identifiers.maxLength).call($.fromValue(schema.maxItems)), ); } } diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/boolean.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/boolean.ts index 43a4ec176..065f6f7bd 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/boolean.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/boolean.ts @@ -19,14 +19,12 @@ export const booleanToAst = ({ }); if (typeof schema.const === 'boolean') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); result.expression = chain; return result as Omit; } - chain = $(z.placeholder).attr(identifiers.boolean).call(); + chain = $(z).attr(identifiers.boolean).call(); result.expression = chain; return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/enum.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/enum.ts index 49642b944..aabcd77af 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/enum.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/enum.ts @@ -30,24 +30,18 @@ export const enumToAst = ({ if (item.type === 'string' && typeof item.const === 'string') { const literal = $.literal(item.const); enumMembers.push(literal); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if ( (item.type === 'number' || item.type === 'integer') && typeof item.const === 'number' ) { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'boolean' && typeof item.const === 'boolean') { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'null' || item.const === null) { isNullable = true; } @@ -65,22 +59,20 @@ export const enumToAst = ({ // Use z.enum() for pure string enums, z.union() for mixed or non-string types if (allStrings && enumMembers.length > 0) { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.enum) .call($.array(...enumMembers)); } else if (literalMembers.length === 1) { // For single-member unions, use the member directly instead of wrapping in z.union() result.expression = literalMembers[0]!; } else { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.union) .call($.array(...literalMembers)); } if (isNullable) { - result.expression = $(z.placeholder) - .attr(identifiers.nullable) - .call(result.expression); + result.expression = $(z).attr(identifiers.nullable).call(result.expression); } return result as Omit; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/never.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/never.ts index ff41a6249..05bda512f 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/never.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/never.ts @@ -14,6 +14,6 @@ export const neverToAst = ({ resource: 'zod.z', }); const result: Partial> = {}; - result.expression = $(z.placeholder).attr(identifiers.never).call(); + result.expression = $(z).attr(identifiers.never).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/null.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/null.ts index ab3ff037d..52d1a877d 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/null.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/null.ts @@ -14,6 +14,6 @@ export const nullToAst = ({ resource: 'zod.z', }); const result: Partial> = {}; - result.expression = $(z.placeholder).attr(identifiers.null).call(); + result.expression = $(z).attr(identifiers.null).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/number.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/number.ts index 856ab802e..feee19866 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/number.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/number.ts @@ -22,31 +22,31 @@ export const numberToAst = ({ if (typeof schema.const === 'number') { // TODO: parser - handle bigint constants - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.literal) .call($.literal(schema.const)); return result as Omit; } result.expression = isBigInt - ? $(z.placeholder).attr(identifiers.coerce).attr(identifiers.bigint).call() - : $(z.placeholder).attr(identifiers.number).call(); + ? $(z).attr(identifiers.coerce).attr(identifiers.bigint).call() + : $(z).attr(identifiers.number).call(); if (!isBigInt && schema.type === 'integer') { - result.expression = $(z.placeholder).attr(identifiers.int).call(); + result.expression = $(z).attr(identifiers.int).call(); } const checks: Array> = []; if (schema.exclusiveMinimum !== undefined) { checks.push( - $(z.placeholder) + $(z) .attr(identifiers.gt) .call(numberParameter({ isBigInt, value: schema.exclusiveMinimum })), ); } else if (schema.minimum !== undefined) { checks.push( - $(z.placeholder) + $(z) .attr(identifiers.gte) .call(numberParameter({ isBigInt, value: schema.minimum })), ); @@ -54,13 +54,13 @@ export const numberToAst = ({ if (schema.exclusiveMaximum !== undefined) { checks.push( - $(z.placeholder) + $(z) .attr(identifiers.lt) .call(numberParameter({ isBigInt, value: schema.exclusiveMaximum })), ); } else if (schema.maximum !== undefined) { checks.push( - $(z.placeholder) + $(z) .attr(identifiers.lte) .call(numberParameter({ isBigInt, value: schema.maximum })), ); diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts index a86d8639d..da7f10c66 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts @@ -18,12 +18,12 @@ function defaultObjectBaseResolver({ }); if (additional) { - return $(z.placeholder) + return $(z) .attr(identifiers.record) - .call($(z.placeholder).attr(identifiers.string).call(), additional); + .call($(z).attr(identifiers.string).call(), additional); } - return $(z.placeholder).attr(identifiers.object).call(shape); + return $(z).attr(identifiers.object).call(shape); } export const objectToAst = ({ diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/string.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/string.ts index c1ca8c8b3..9f6bd204d 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/string.ts @@ -17,10 +17,7 @@ const defaultFormatResolver = ({ switch (schema.format) { case 'date': - return $(z.placeholder) - .attr(identifiers.iso) - .attr(identifiers.date) - .call(); + return $(z).attr(identifiers.iso).attr(identifiers.date).call(); case 'date-time': { const obj = $.object() .$if(plugin.config.dates.offset, (o) => @@ -29,26 +26,23 @@ const defaultFormatResolver = ({ .$if(plugin.config.dates.local, (o) => o.prop('local', $.literal(true)), ); - return $(z.placeholder) + return $(z) .attr(identifiers.iso) .attr(identifiers.datetime) .call(obj.hasProps() ? obj : undefined); } case 'email': - return $(z.placeholder).attr(identifiers.email).call(); + return $(z).attr(identifiers.email).call(); case 'ipv4': - return $(z.placeholder).attr(identifiers.ipv4).call(); + return $(z).attr(identifiers.ipv4).call(); case 'ipv6': - return $(z.placeholder).attr(identifiers.ipv6).call(); + return $(z).attr(identifiers.ipv6).call(); case 'time': - return $(z.placeholder) - .attr(identifiers.iso) - .attr(identifiers.time) - .call(); + return $(z).attr(identifiers.iso).attr(identifiers.time).call(); case 'uri': - return $(z.placeholder).attr(identifiers.url).call(); + return $(z).attr(identifiers.url).call(); case 'uuid': - return $(z.placeholder).attr(identifiers.uuid).call(); + return $(z).attr(identifiers.uuid).call(); default: return chain; } @@ -69,14 +63,12 @@ export const stringToAst = ({ }); if (typeof schema.const === 'string') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); result.expression = chain; return result as Omit; } - chain = $(z.placeholder).attr(identifiers.string).call(); + chain = $(z).attr(identifiers.string).call(); if (schema.format) { const args: FormatResolverArgs = { $, chain, plugin, schema }; @@ -89,32 +81,24 @@ export const stringToAst = ({ if (schema.minLength === schema.maxLength && schema.minLength !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.length) - .call($.literal(schema.minLength)), + $(z).attr(identifiers.length).call($.literal(schema.minLength)), ); } else { if (schema.minLength !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.minLength) - .call($.literal(schema.minLength)), + $(z).attr(identifiers.minLength).call($.literal(schema.minLength)), ); } if (schema.maxLength !== undefined) { checks.push( - $(z.placeholder) - .attr(identifiers.maxLength) - .call($.literal(schema.maxLength)), + $(z).attr(identifiers.maxLength).call($.literal(schema.maxLength)), ); } } if (schema.pattern) { - checks.push( - $(z.placeholder).attr(identifiers.regex).call($.regexp(schema.pattern)), - ); + checks.push($(z).attr(identifiers.regex).call($.regexp(schema.pattern))); } if (checks.length) { diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts index 922b5592c..35b684fcb 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts @@ -22,9 +22,9 @@ export const tupleToAst = ({ if (schema.const && Array.isArray(schema.const)) { const tupleElements = schema.const.map((value) => - $(z.placeholder).attr(identifiers.literal).call($.fromValue(value)), + $(z).attr(identifiers.literal).call($.fromValue(value)), ); - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); return result as Omit; @@ -49,7 +49,7 @@ export const tupleToAst = ({ }); } - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/undefined.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/undefined.ts index 2648e32f4..f3b2726be 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/undefined.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/undefined.ts @@ -14,6 +14,6 @@ export const undefinedToAst = ({ resource: 'zod.z', }); const result: Partial> = {}; - result.expression = $(z.placeholder).attr(identifiers.undefined).call(); + result.expression = $(z).attr(identifiers.undefined).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/unknown.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/unknown.ts index d620f87d7..a09101768 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/unknown.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/unknown.ts @@ -14,6 +14,6 @@ export const unknownToAst = ({ resource: 'zod.z', }); const result: Partial> = {}; - result.expression = $(z.placeholder).attr(identifiers.unknown).call(); + result.expression = $(z).attr(identifiers.unknown).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/void.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/void.ts index 7fe90947e..cd0ac49ae 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/void.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/void.ts @@ -14,6 +14,6 @@ export const voidToAst = ({ resource: 'zod.z', }); const result: Partial> = {}; - result.expression = $(z.placeholder).attr(identifiers.void).call(); + result.expression = $(z).attr(identifiers.void).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/shared/export.ts b/packages/openapi-ts/src/plugins/zod/shared/export.ts index 4cb903e34..13ea8e5af 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/export.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/export.ts @@ -33,17 +33,13 @@ export const exportAst = ({ ) .$if(ast.typeName, (c, v) => c.type($.type(z).attr(v))) .assign(ast.expression); - plugin.setSymbolValue(symbol, statement); + plugin.addNode(statement); if (typeInferSymbol) { const inferType = $.type .alias(typeInferSymbol) .export() - .type( - $.type(z) - .attr(identifiers.infer) - .generic($(symbol.placeholder).typeofType()), - ); - plugin.setSymbolValue(typeInferSymbol, inferType); + .type($.type(z).attr(identifiers.infer).generic($(symbol).typeofType())); + plugin.addNode(inferType); } }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/api.ts b/packages/openapi-ts/src/plugins/zod/v3/api.ts index 5ce221165..5da1117b5 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/api.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/api.ts @@ -7,11 +7,7 @@ import type { ValidatorResolverArgs } from '../types'; const defaultValidatorResolver = ({ schema, }: ValidatorResolverArgs): ReturnType => - $(schema.placeholder) - .attr(identifiers.parseAsync) - .call('data') - .await() - .return(); + $(schema).attr(identifiers.parseAsync).call('data').await().return(); export const createRequestValidatorV3 = ({ operation, diff --git a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts index 0a94278ee..ab5838c41 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts @@ -48,11 +48,11 @@ export const irSchemaToAst = ({ }; const refSymbol = plugin.referenceSymbol(query); if (plugin.isSymbolRegistered(query)) { - ast.expression = $(refSymbol.placeholder); + ast.expression = $(refSymbol); } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.lazy) - .call($.func().do($(refSymbol.placeholder).return())); + .call($.func().do($(refSymbol).return())); ast.hasLazyExpression = true; state.hasLazyExpression.value = true; } @@ -95,7 +95,7 @@ export const irSchemaToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.intersection) .call(...itemTypes); } else { @@ -105,7 +105,7 @@ export const irSchemaToAst = ({ }); } } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.union) .call( $.array() diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts index 4967128b6..c5a4f2555 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts @@ -22,7 +22,7 @@ export const arrayToAst = ({ resource: 'zod.z', }); - const functionName = $(z.placeholder).attr(identifiers.array); + const functionName = $(z).attr(identifiers.array); let arrayExpression: ReturnType | undefined; let hasLazyExpression = false; @@ -69,7 +69,7 @@ export const arrayToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - intersectionExpression = $(z.placeholder) + intersectionExpression = $(z) .attr(identifiers.intersection) .call(...itemExpressions); } else { @@ -83,10 +83,10 @@ export const arrayToAst = ({ arrayExpression = functionName.call(intersectionExpression); } else { - arrayExpression = $(z.placeholder) + arrayExpression = $(z) .attr(identifiers.array) .call( - $(z.placeholder) + $(z) .attr(identifiers.union) .call($.array(...itemExpressions)), ); diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/boolean.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/boolean.ts index 570672039..10a649541 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/boolean.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/boolean.ts @@ -18,12 +18,10 @@ export const booleanToAst = ({ }); if (typeof schema.const === 'boolean') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); return chain; } - chain = $(z.placeholder).attr(identifiers.boolean).call(); + chain = $(z).attr(identifiers.boolean).call(); return chain; }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/enum.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/enum.ts index 67534af34..76d4dafb9 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/enum.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/enum.ts @@ -28,24 +28,18 @@ export const enumToAst = ({ if (item.type === 'string' && typeof item.const === 'string') { const literal = $.literal(item.const); enumMembers.push(literal); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if ( (item.type === 'number' || item.type === 'integer') && typeof item.const === 'number' ) { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'boolean' && typeof item.const === 'boolean') { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'null' || item.const === null) { isNullable = true; } @@ -64,14 +58,14 @@ export const enumToAst = ({ // Use z.enum() for pure string enums, z.union() for mixed or non-string types let enumExpression: ReturnType; if (allStrings && enumMembers.length > 0) { - enumExpression = $(z.placeholder) + enumExpression = $(z) .attr(identifiers.enum) .call($.array(...enumMembers)); } else if (literalMembers.length === 1) { // For single-member unions, use the member directly instead of wrapping in z.union() enumExpression = literalMembers[0]!; } else { - enumExpression = $(z.placeholder) + enumExpression = $(z) .attr(identifiers.union) .call($.array(...literalMembers)); } diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/never.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/never.ts index 1d9fc68fa..0e71d32f6 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/never.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/never.ts @@ -13,6 +13,6 @@ export const neverToAst = ({ category: 'external', resource: 'zod.z', }); - const expression = $(z.placeholder).attr(identifiers.never).call(); + const expression = $(z).attr(identifiers.never).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/null.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/null.ts index 7a72f476e..91969aebf 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/null.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/null.ts @@ -13,6 +13,6 @@ export const nullToAst = ({ category: 'external', resource: 'zod.z', }); - const expression = $(z.placeholder).attr(identifiers.null).call(); + const expression = $(z).attr(identifiers.null).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/number.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/number.ts index 75ce22ec7..1e9bb5198 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/number.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/number.ts @@ -20,15 +20,15 @@ export const numberToAst = ({ if (typeof schema.const === 'number') { // TODO: parser - handle bigint constants - const expression = $(z.placeholder) + const expression = $(z) .attr(identifiers.literal) .call($.literal(schema.const)); return expression; } let numberExpression = isBigInt - ? $(z.placeholder).attr(identifiers.coerce).attr(identifiers.bigint).call() - : $(z.placeholder).attr(identifiers.number).call(); + ? $(z).attr(identifiers.coerce).attr(identifiers.bigint).call() + : $(z).attr(identifiers.number).call(); if (!isBigInt && schema.type === 'integer') { numberExpression = numberExpression.attr(identifiers.int).call(); diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts index 8d78122e0..8be0fb3e5 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts @@ -18,10 +18,10 @@ function defaultObjectBaseResolver({ }); if (additional) { - return $(z.placeholder).attr(identifiers.record).call(additional); + return $(z).attr(identifiers.record).call(additional); } - return $(z.placeholder).attr(identifiers.object).call(shape); + return $(z).attr(identifiers.object).call(shape); } export const objectToAst = ({ diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/string.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/string.ts index 9ae100e2f..d147b4445 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/string.ts @@ -55,13 +55,11 @@ export const stringToAst = ({ }); if (typeof schema.const === 'string') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); return chain; } - chain = $(z.placeholder).attr(identifiers.string).call(); + chain = $(z).attr(identifiers.string).call(); if (schema.format) { const args: FormatResolverArgs = { $, chain, plugin, schema }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts index 72fdf4e48..b6c185631 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts @@ -24,9 +24,9 @@ export const tupleToAst = ({ if (schema.const && Array.isArray(schema.const)) { const tupleElements = schema.const.map((value) => - $(z.placeholder).attr(identifiers.literal).call($.fromValue(value)), + $(z).attr(identifiers.literal).call($.fromValue(value)), ); - const expression = $(z.placeholder) + const expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); return { @@ -54,7 +54,7 @@ export const tupleToAst = ({ }); } - const expression = $(z.placeholder) + const expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/undefined.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/undefined.ts index 60545a2e0..207ec6d3c 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/undefined.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/undefined.ts @@ -13,6 +13,6 @@ export const undefinedToAst = ({ category: 'external', resource: 'zod.z', }); - const expression = $(z.placeholder).attr(identifiers.undefined).call(); + const expression = $(z).attr(identifiers.undefined).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/unknown.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/unknown.ts index 9afc011c2..8327f2df1 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/unknown.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/unknown.ts @@ -13,6 +13,6 @@ export const unknownToAst = ({ category: 'external', resource: 'zod.z', }); - const expression = $(z.placeholder).attr(identifiers.unknown).call(); + const expression = $(z).attr(identifiers.unknown).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/void.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/void.ts index 79e069cab..9f6d53c80 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/void.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/void.ts @@ -13,6 +13,6 @@ export const voidToAst = ({ category: 'external', resource: 'zod.z', }); - const expression = $(z.placeholder).attr(identifiers.void).call(); + const expression = $(z).attr(identifiers.void).call(); return expression; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/api.ts b/packages/openapi-ts/src/plugins/zod/v4/api.ts index 9991fd0d0..8e82ee81f 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/api.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/api.ts @@ -7,11 +7,7 @@ import type { ValidatorResolverArgs } from '../types'; const defaultValidatorResolver = ({ schema, }: ValidatorResolverArgs): ReturnType => - $(schema.placeholder) - .attr(identifiers.parseAsync) - .call('data') - .await() - .return(); + $(schema).attr(identifiers.parseAsync).call('data').await().return(); export const createRequestValidatorV4 = ({ operation, diff --git a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts index 60e5e2aec..9c0c45e96 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts @@ -48,11 +48,11 @@ export const irSchemaToAst = ({ }; const refSymbol = plugin.referenceSymbol(query); if (plugin.isSymbolRegistered(query)) { - ast.expression = $(refSymbol.placeholder); + ast.expression = $(refSymbol); } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.lazy) - .call($.func().returns('any').do($(refSymbol.placeholder).return())); + .call($.func().returns('any').do($(refSymbol).return())); ast.hasLazyExpression = true; state.hasLazyExpression.value = true; } @@ -69,7 +69,7 @@ export const irSchemaToAst = ({ ast.expression = ast.expression .attr(identifiers.register) .call( - $(z.placeholder).attr(identifiers.globalRegistry), + $(z).attr(identifiers.globalRegistry), $.object() .pretty() .prop('description', $.literal(schema.description)), @@ -99,7 +99,7 @@ export const irSchemaToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.intersection) .call(...itemSchemas.map((schema) => schema.expression)); } else { @@ -109,7 +109,7 @@ export const irSchemaToAst = ({ .expression!.attr(identifiers.and) .call( schema.hasLazyExpression - ? $(z.placeholder) + ? $(z) .attr(identifiers.lazy) .call($.func().do(schema.expression.return())) : schema.expression, @@ -117,7 +117,7 @@ export const irSchemaToAst = ({ }); } } else { - ast.expression = $(z.placeholder) + ast.expression = $(z) .attr(identifiers.union) .call( $.array() @@ -150,9 +150,7 @@ export const irSchemaToAst = ({ } if (optional) { - ast.expression = $(z.placeholder) - .attr(identifiers.optional) - .call(ast.expression); + ast.expression = $(z).attr(identifiers.optional).call(ast.expression); ast.typeName = identifiers.ZodOptional; } diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts index d4652b9a6..c364d7213 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts @@ -22,7 +22,7 @@ export const arrayToAst = ({ resource: 'zod.z', }); - const functionName = $(z.placeholder).attr(identifiers.array); + const functionName = $(z).attr(identifiers.array); if (!schema.items) { result.expression = functionName.call( @@ -66,7 +66,7 @@ export const arrayToAst = ({ firstSchema.logicalOperator === 'or' || (firstSchema.type && firstSchema.type !== 'object') ) { - intersectionExpression = $(z.placeholder) + intersectionExpression = $(z) .attr(identifiers.intersection) .call(...itemExpressions); } else { @@ -80,10 +80,10 @@ export const arrayToAst = ({ result.expression = functionName.call(intersectionExpression); } else { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.array) .call( - $(z.placeholder) + $(z) .attr(identifiers.union) .call($.array(...itemExpressions)), ); diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/boolean.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/boolean.ts index 43a4ec176..065f6f7bd 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/boolean.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/boolean.ts @@ -19,14 +19,12 @@ export const booleanToAst = ({ }); if (typeof schema.const === 'boolean') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); result.expression = chain; return result as Omit; } - chain = $(z.placeholder).attr(identifiers.boolean).call(); + chain = $(z).attr(identifiers.boolean).call(); result.expression = chain; return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/enum.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/enum.ts index 729fb23d0..4abee084a 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/enum.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/enum.ts @@ -30,24 +30,18 @@ export const enumToAst = ({ if (item.type === 'string' && typeof item.const === 'string') { const literal = $.literal(item.const); enumMembers.push(literal); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if ( (item.type === 'number' || item.type === 'integer') && typeof item.const === 'number' ) { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'boolean' && typeof item.const === 'boolean') { allStrings = false; const literal = $.literal(item.const); - literalMembers.push( - $(z.placeholder).attr(identifiers.literal).call(literal), - ); + literalMembers.push($(z).attr(identifiers.literal).call(literal)); } else if (item.type === 'null' || item.const === null) { isNullable = true; } @@ -65,22 +59,20 @@ export const enumToAst = ({ // Use z.enum() for pure string enums, z.union() for mixed or non-string types if (allStrings && enumMembers.length > 0) { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.enum) .call($.array(...enumMembers)); } else if (literalMembers.length === 1) { // For single-member unions, use the member directly instead of wrapping in z.union() result.expression = literalMembers[0]!; } else { - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.union) .call($.array(...literalMembers)); } if (isNullable) { - result.expression = $(z.placeholder) - .attr(identifiers.nullable) - .call(result.expression); + result.expression = $(z).attr(identifiers.nullable).call(result.expression); } return result as Omit; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/never.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/never.ts index 855b2747c..3c684d464 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/never.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/never.ts @@ -14,6 +14,6 @@ export const neverToAst = ({ category: 'external', resource: 'zod.z', }); - result.expression = $(z.placeholder).attr(identifiers.never).call(); + result.expression = $(z).attr(identifiers.never).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/null.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/null.ts index f4f11bec3..79785a5b4 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/null.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/null.ts @@ -14,6 +14,6 @@ export const nullToAst = ({ category: 'external', resource: 'zod.z', }); - result.expression = $(z.placeholder).attr(identifiers.null).call(); + result.expression = $(z).attr(identifiers.null).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/number.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/number.ts index 738e16bb7..0ff204b32 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/number.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/number.ts @@ -22,18 +22,18 @@ export const numberToAst = ({ if (typeof schema.const === 'number') { // TODO: parser - handle bigint constants - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.literal) .call($.literal(schema.const)); return result as Omit; } result.expression = isBigInt - ? $(z.placeholder).attr(identifiers.coerce).attr(identifiers.bigint).call() - : $(z.placeholder).attr(identifiers.number).call(); + ? $(z).attr(identifiers.coerce).attr(identifiers.bigint).call() + : $(z).attr(identifiers.number).call(); if (!isBigInt && schema.type === 'integer') { - result.expression = $(z.placeholder).attr(identifiers.int).call(); + result.expression = $(z).attr(identifiers.int).call(); } if (schema.exclusiveMinimum !== undefined) { diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts index 58bf30b08..1290d4fd6 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts @@ -18,12 +18,12 @@ function defaultObjectBaseResolver({ }); if (additional) { - return $(z.placeholder) + return $(z) .attr(identifiers.record) - .call($(z.placeholder).attr(identifiers.string).call(), additional); + .call($(z).attr(identifiers.string).call(), additional); } - return $(z.placeholder).attr(identifiers.object).call(shape); + return $(z).attr(identifiers.object).call(shape); } export const objectToAst = ({ diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/string.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/string.ts index 525a44034..84eda4bc1 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/string.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/string.ts @@ -17,10 +17,7 @@ const defaultFormatResolver = ({ switch (schema.format) { case 'date': - return $(z.placeholder) - .attr(identifiers.iso) - .attr(identifiers.date) - .call(); + return $(z).attr(identifiers.iso).attr(identifiers.date).call(); case 'date-time': { const obj = $.object() .$if(plugin.config.dates.offset, (o) => @@ -29,26 +26,23 @@ const defaultFormatResolver = ({ .$if(plugin.config.dates.local, (o) => o.prop('local', $.literal(true)), ); - return $(z.placeholder) + return $(z) .attr(identifiers.iso) .attr(identifiers.datetime) .call(obj.hasProps() ? obj : undefined); } case 'email': - return $(z.placeholder).attr(identifiers.email).call(); + return $(z).attr(identifiers.email).call(); case 'ipv4': - return $(z.placeholder).attr(identifiers.ipv4).call(); + return $(z).attr(identifiers.ipv4).call(); case 'ipv6': - return $(z.placeholder).attr(identifiers.ipv6).call(); + return $(z).attr(identifiers.ipv6).call(); case 'time': - return $(z.placeholder) - .attr(identifiers.iso) - .attr(identifiers.time) - .call(); + return $(z).attr(identifiers.iso).attr(identifiers.time).call(); case 'uri': - return $(z.placeholder).attr(identifiers.url).call(); + return $(z).attr(identifiers.url).call(); case 'uuid': - return $(z.placeholder).attr(identifiers.uuid).call(); + return $(z).attr(identifiers.uuid).call(); default: return chain; } @@ -69,14 +63,12 @@ export const stringToAst = ({ }); if (typeof schema.const === 'string') { - chain = $(z.placeholder) - .attr(identifiers.literal) - .call($.literal(schema.const)); + chain = $(z).attr(identifiers.literal).call($.literal(schema.const)); result.expression = chain; return result as Omit; } - chain = $(z.placeholder).attr(identifiers.string).call(); + chain = $(z).attr(identifiers.string).call(); if (schema.format) { const args: FormatResolverArgs = { $, chain, plugin, schema }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts index b65341106..732db6e02 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts @@ -22,9 +22,9 @@ export const tupleToAst = ({ if (schema.const && Array.isArray(schema.const)) { const tupleElements = schema.const.map((value) => - $(z.placeholder).attr(identifiers.literal).call($.fromValue(value)), + $(z).attr(identifiers.literal).call($.fromValue(value)), ); - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); return result as Omit; @@ -49,7 +49,7 @@ export const tupleToAst = ({ }); } - result.expression = $(z.placeholder) + result.expression = $(z) .attr(identifiers.tuple) .call($.array(...tupleElements)); diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/undefined.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/undefined.ts index a64c94b3c..aa5e63b40 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/undefined.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/undefined.ts @@ -14,6 +14,6 @@ export const undefinedToAst = ({ category: 'external', resource: 'zod.z', }); - result.expression = $(z.placeholder).attr(identifiers.undefined).call(); + result.expression = $(z).attr(identifiers.undefined).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/unknown.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/unknown.ts index d4491f70b..a0294359c 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/unknown.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/unknown.ts @@ -14,6 +14,6 @@ export const unknownToAst = ({ category: 'external', resource: 'zod.z', }); - result.expression = $(z.placeholder).attr(identifiers.unknown).call(); + result.expression = $(z).attr(identifiers.unknown).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/void.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/void.ts index fce6b07ec..5ee35e976 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/void.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/void.ts @@ -14,6 +14,6 @@ export const voidToAst = ({ category: 'external', resource: 'zod.z', }); - result.expression = $(z.placeholder).attr(identifiers.void).call(); + result.expression = $(z).attr(identifiers.void).call(); return result as Omit; }; diff --git a/packages/openapi-ts/src/ts-dsl/base.ts b/packages/openapi-ts/src/ts-dsl/base.ts index cb3e51a12..e25c269e3 100644 --- a/packages/openapi-ts/src/ts-dsl/base.ts +++ b/packages/openapi-ts/src/ts-dsl/base.ts @@ -1,26 +1,26 @@ // TODO: symbol should be protected, but needs to be public to satisfy types -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; +import { Symbol } from '@hey-api/codegen-core'; import { debug } from '@hey-api/codegen-core'; import ts from 'typescript'; export type MaybeArray = T | ReadonlyArray; -export interface ITsDsl extends SyntaxNode { +export interface ITsDsl extends Node { /** Render this node into a concrete TypeScript AST. */ $render(): T; } -// @deprecated -export type Constructor = new (...args: ReadonlyArray) => T; +export const tsDslBrand = globalThis.Symbol('ts-dsl'); export abstract class TsDsl implements ITsDsl { /** Render this node into a concrete TypeScript AST. */ protected abstract _render(): T; - /** Parent node in the constructed syntax tree. */ - protected parent?: TsDsl; + readonly '~brand': symbol = tsDslBrand; + + parent?: Node; - /** The codegen symbol associated with this node. */ symbol?: Symbol; /** Conditionally applies a callback to this builder. */ @@ -106,46 +106,11 @@ export abstract class TsDsl implements ITsDsl { return this._render(); } - /** Returns all symbols referenced by this node (directly or through children). */ // eslint-disable-next-line @typescript-eslint/no-unused-vars - collectSymbols(_out: Set): void { + analyze(_: AnalysisContext): void { // noop } - /** Returns all locally declared names within this node. */ - getLocalNames(): Iterable { - return []; - } - - /** Rewrites internal identifier nodes after final name resolution. */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - rewriteIdentifiers(_map: Map): void { - // noop - } - - /** Assigns the parent node, enforcing a single-parent invariant. */ - setParent(parent: TsDsl): this { - if (this.parent && this.parent !== parent) { - const message = `${this.constructor.name} already had a parent (${this.parent.constructor.name}), new parent attempted: ${parent.constructor.name}`; - debug(message, 'dsl'); - throw new Error(message); - } - - if (this.symbol) { - const message = `${this.constructor.name} has BOTH a symbol and a parent. This violates DSL invariants.`; - debug(message, 'dsl'); - throw new Error(message); - } - - this.parent = parent; - return this; - } - - /** Walk this node and its children with a visitor. */ - traverse(visitor: (node: SyntaxNode) => void): void { - visitor(this); - } - protected $maybeId( expr: T, ): T extends string ? ts.Identifier : T { @@ -158,8 +123,11 @@ export abstract class TsDsl implements ITsDsl { if (value === undefined) { return undefined as NodeOfMaybe; } + if (value instanceof Symbol) { + return this.$maybeId(value.finalName) as NodeOfMaybe; + } if (typeof value === 'string') { - return ts.factory.createIdentifier(value) as NodeOfMaybe; + return this.$maybeId(value) as NodeOfMaybe; } if (value instanceof Array) { return value.map((item) => this.unwrap(item)) as NodeOfMaybe; @@ -174,6 +142,12 @@ export abstract class TsDsl implements ITsDsl { if (value === undefined) { return undefined as TypeOfMaybe; } + if (value instanceof Symbol) { + return ts.factory.createTypeReferenceNode( + value.finalName, + args, + ) as TypeOfMaybe; + } if (typeof value === 'string') { return ts.factory.createTypeReferenceNode(value, args) as TypeOfMaybe; } @@ -194,62 +168,22 @@ export abstract class TsDsl implements ITsDsl { return this.unwrap(value as any) as TypeOfMaybe; } - /** Returns the root symbol associated with this DSL subtree. */ - protected getRootSymbol(): Symbol { - if (!this.parent && !this.symbol) { - const message = `${this.constructor.name} has neither a parent nor a symbol — root symbol resolution failed.`; - debug(message, 'dsl'); - throw new Error(message); - } - return this.parent ? this.parent.getRootSymbol() : this.symbol!.canonical; - } - /** Unwraps nested nodes into raw TypeScript AST. */ protected unwrap(value: I): I extends TsDsl ? N : I { - return ( - value instanceof TsDsl ? value._render() : value - ) as I extends TsDsl ? N : I; + return (isTsDsl(value) ? value._render() : value) as I extends TsDsl< + infer N + > + ? N + : I; } - /** Validate DSL invariants. */ + /** Validate invariants. */ protected _validate(): void { - if (!this.parent && !this.symbol) { - const message = - `${this.constructor.name}: node has neither a parent nor a symbol — ` + - `this likely means the node was never attached to a parent or is incorrectly ` + - `being treated as a root-level construct.`; - debug(message, 'dsl'); - // TODO: enable later - // throw new Error(message); - } - - if (this.parent && this.symbol) { - const message = `${this.constructor.name}: non-top-level node must not have a symbol`; - debug(message, 'dsl'); - throw new Error(message); - } - - if (this.parent === undefined && this.symbol === undefined) { - const message = `${this.constructor.name}: non-root node is missing a parent`; - debug(message, 'dsl'); - // TODO: enable later - // throw new Error(message); - } - if (this.symbol && this.symbol.canonical !== this.symbol) { const message = `${this.constructor.name}: node is holding a non-canonical (stub) symbol`; debug(message, 'dsl'); throw new Error(message); } - - this.traverse((node) => { - const dsl = node as TsDsl; - if (dsl !== this && !dsl.parent) { - const message = `${dsl.constructor.name}: child node has missing parent`; - debug(message, 'dsl'); - throw new Error(message); - } - }); } } @@ -300,3 +234,9 @@ type TypeOf = : I extends ts.TypeNode ? I : never; + +export function isTsDsl(value: unknown): value is TsDsl { + if (!value || typeof value !== 'object' || Array.isArray(value)) return false; + const obj = value as { '~brand'?: unknown }; + return obj['~brand'] === tsDslBrand && Object.hasOwn(obj, '~brand'); +} diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index 8dc610d77..a20b717c0 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -1,8 +1,9 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { NewlineTsDsl } from '../layout/newline'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; @@ -12,6 +13,10 @@ import { FieldTsDsl } from './field'; import { InitTsDsl } from './init'; import { MethodTsDsl } from './method'; +type Base = Symbol | string; +type Name = Symbol | string; +type Body = Array>; + const Mixed = AbstractMixin( DecoratorMixin( DefaultMixin( @@ -21,65 +26,57 @@ const Mixed = AbstractMixin( ); export class ClassTsDsl extends Mixed { - protected baseClass?: Symbol | string; - protected body: Array> = []; - protected name: Symbol | string; + protected baseClass?: Base; + protected body: Body = []; + protected name: Name; - constructor(name: Symbol | string) { + constructor(name: Name) { super(); - if (typeof name === 'string') { - this.name = name; - return; - } this.name = name; - this.symbol = name; - this.symbol.setKind('class'); - this.symbol.setRootNode(this); + if (isSymbol(name)) { + name.setKind('class'); + name.setNode(this); + } } - override collectSymbols(out: Set): void { - console.log(out); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.baseClass)) ctx.addDependency(this.baseClass); + if (isSymbol(this.name)) ctx.addDependency(this.name); + for (const item of this.body) { + if (isTsDsl(item)) item.analyze(ctx); + } } /** Adds one or more class members (fields, methods, etc.). */ - do(...items: ReadonlyArray>): this { - for (const item of items) { - if (item instanceof TsDsl) { - item.setParent(this); - } - // @ts-expect-error --- IGNORE --- - this.body.push(item); - } + do(...items: Body): this { + this.body.push(...items); return this; } - /** Records a base class to extend from without rendering early. */ - extends(base?: Symbol | string): this { - if (!base) return this; + /** Records a base class to extend from. */ + extends(base?: Base): this { this.baseClass = base; - if (typeof base !== 'string') { - this.getRootSymbol().addDependency(base); - } return this; } /** Adds a class field. */ field(name: string, fn?: (f: FieldTsDsl) => void): this { - const f = new FieldTsDsl(name, fn).setParent(this); + const f = new FieldTsDsl(name, fn); this.body.push(f); return this; } /** Adds a class constructor. */ init(fn?: (i: InitTsDsl) => void): this { - const i = new InitTsDsl(fn).setParent(this); + const i = new InitTsDsl(fn); this.body.push(i); return this; } /** Adds a class method. */ method(name: string, fn?: (m: MethodTsDsl) => void): this { - const m = new MethodTsDsl(name, fn).setParent(this); + const m = new MethodTsDsl(name, fn); this.body.push(m); return this; } @@ -90,17 +87,12 @@ export class ClassTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { const body = this.$node(this.body) as ReadonlyArray; - const name = - typeof this.name === 'string' ? this.name : this.name.finalName; return ts.factory.createClassDeclaration( [...this.$decorators(), ...this.modifiers], - name, + // @ts-expect-error need to improve types + this.$node(this.name), this.$generics(), this._renderHeritage(), body, @@ -110,13 +102,12 @@ export class ClassTsDsl extends Mixed { /** Builds heritage clauses (extends). */ private _renderHeritage(): ReadonlyArray { if (!this.baseClass) return []; - const id = - typeof this.baseClass === 'string' - ? this.$maybeId(this.baseClass) - : this.$maybeId(this.baseClass.finalName); return [ ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [ - ts.factory.createExpressionWithTypeArguments(id, undefined), + ts.factory.createExpressionWithTypeArguments( + this.$node(this.baseClass), + undefined, + ), ]), ]; } diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index 780634e24..be0c1390a 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -1,42 +1,38 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; +export type DecoratorName = Symbol | string | MaybeTsDsl; + const Mixed = ArgsMixin(TsDsl); export class DecoratorTsDsl extends Mixed { - protected name: Symbol | string | MaybeTsDsl; + protected name: DecoratorName; constructor( - name: Symbol | string | MaybeTsDsl, + name: DecoratorName, ...args: ReadonlyArray> ) { super(); this.name = name; - if (name instanceof Symbol) { - this.getRootSymbol().addDependency(name); - } this.args(...args); } - override collectSymbols(out: Set): void { - console.log(out); - } - - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.name)) { + ctx.addDependency(this.name); + } else if (isTsDsl(this.name)) { + this.name.analyze(ctx); + } } protected override _render() { - const target = - this.name instanceof Symbol - ? this.$maybeId(this.name.finalName) - : this.$node(this.name); - + const target = this.$node(this.name); const args = this.$args(); return ts.factory.createDecorator( args.length diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index 416c357c2..69661bc02 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -1,4 +1,5 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -7,6 +8,7 @@ import { DocMixin } from '../mixins/doc'; import { ConstMixin, ExportMixin } from '../mixins/modifiers'; import { EnumMemberTsDsl } from './member'; +export type EnumName = Symbol | string; type Value = string | number | MaybeTsDsl; type ValueFn = Value | ((m: EnumMemberTsDsl) => void); @@ -14,21 +16,26 @@ const Mixed = ConstMixin(DocMixin(ExportMixin(TsDsl))); export class EnumTsDsl extends Mixed { private _members: Array = []; - private _name: string | ts.Identifier; + private _name: EnumName; - constructor(name: Symbol | string, fn?: (e: EnumTsDsl) => void) { + constructor(name: EnumName, fn?: (e: EnumTsDsl) => void) { super(); - if (typeof name === 'string') { - this._name = name; - } else { - this._name = name.finalName; - this.symbol = name; - this.symbol.setKind('enum'); - this.symbol.setRootNode(this); + this._name = name; + if (isSymbol(name)) { + name.setKind('enum'); + name.setNode(this); } fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._name)) ctx.addDependency(this._name); + for (const member of this._members) { + member.analyze(ctx); + } + } + /** Adds an enum member. */ member(name: string, value?: ValueFn): this { const m = new EnumMemberTsDsl(name, value); @@ -42,14 +49,11 @@ export class EnumTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createEnumDeclaration( this.modifiers, - this._name, + // @ts-expect-error need to improve types + this.$node(this._name), this.$node(this._members), ); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/field.ts b/packages/openapi-ts/src/ts-dsl/decl/field.ts index 0b08b6779..6c81f393f 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/field.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/field.ts @@ -1,7 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TsDsl, TypeTsDsl } from '../base'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; import { @@ -12,8 +13,11 @@ import { StaticMixin, } from '../mixins/modifiers'; import { ValueMixin } from '../mixins/value'; +import type { TypeExprName } from '../type/expr'; import { TypeExprTsDsl } from '../type/expr'; +export type FieldType = TypeExprName | TypeTsDsl; + const Mixed = DecoratorMixin( DocMixin( PrivateMixin( @@ -36,16 +40,21 @@ export class FieldTsDsl extends Mixed { fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._type)) { + ctx.addDependency(this._type); + } else if (isTsDsl(this._type)) { + this._type.analyze(ctx); + } + } + /** Sets the field type. */ - type(type: string | TypeTsDsl): this { + type(type: FieldType): this { this._type = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createPropertyDeclaration( [...this.$decorators(), ...this.modifiers], diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index f6d8794d3..300233cd3 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -1,4 +1,5 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -18,7 +19,8 @@ import { ParamMixin } from '../mixins/param'; import { TypeParamsMixin } from '../mixins/type-params'; import { TypeExprTsDsl } from '../type/expr'; -type FuncMode = 'arrow' | 'decl' | 'expr'; +export type FuncMode = 'arrow' | 'decl' | 'expr'; +export type FuncName = Symbol | string; const Mixed = AbstractMixin( AsMixin( @@ -44,35 +46,38 @@ const Mixed = AbstractMixin( class ImplFuncTsDsl extends Mixed { protected mode?: FuncMode; - protected name?: string; + protected name?: FuncName; protected _returns?: TypeTsDsl; constructor(); constructor(fn: (f: ImplFuncTsDsl<'arrow'>) => void); - constructor(name: Symbol | string); - constructor(name: Symbol | string, fn: (f: ImplFuncTsDsl<'decl'>) => void); + constructor(name: FuncName); + constructor(name: FuncName, fn: (f: ImplFuncTsDsl<'decl'>) => void); constructor( - nameOrFn?: Symbol | string | ((f: ImplFuncTsDsl<'arrow'>) => void), + name?: FuncName | ((f: ImplFuncTsDsl<'arrow'>) => void), fn?: (f: ImplFuncTsDsl<'decl'>) => void, ) { super(); - if (typeof nameOrFn === 'function') { + if (typeof name === 'function') { this.mode = 'arrow'; - nameOrFn(this as unknown as FuncTsDsl<'arrow'>); - } else if (nameOrFn) { + name(this as unknown as FuncTsDsl<'arrow'>); + } else if (name) { this.mode = 'decl'; - if (typeof nameOrFn === 'string') { - this.name = nameOrFn; - } else { - this.name = nameOrFn.finalName; - this.symbol = nameOrFn; - this.symbol.setKind('function'); - this.symbol.setRootNode(this); + this.name = name; + if (isSymbol(name)) { + name.setKind('function'); + name.setNode(this); } fn?.(this as unknown as FuncTsDsl<'decl'>); } } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.name)) ctx.addDependency(this.name); + this._returns?.analyze(ctx); + } + /** Switches the function to an arrow function form. */ arrow(): FuncTsDsl<'arrow'> { this.mode = 'arrow'; @@ -97,10 +102,6 @@ class ImplFuncTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - // @ts-expect-error --- need to fix types --- protected override _render(): M extends 'decl' ? ts.FunctionDeclaration @@ -112,7 +113,8 @@ class ImplFuncTsDsl extends Mixed { return ts.factory.createFunctionDeclaration( [...this.$decorators(), ...this.modifiers], undefined, - this.name, + // @ts-expect-error need to improve types + this.$node(this.name), this.$generics(), this.$params(), this.$type(this._returns), @@ -124,7 +126,8 @@ class ImplFuncTsDsl extends Mixed { return ts.factory.createFunctionExpression( this.modifiers, undefined, - this.name, + // @ts-expect-error need to improve types + this.$node(this.name), this.$generics(), this.$params(), this.$type(this._returns), diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 5efccc83c..8edf951eb 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -42,8 +42,8 @@ export class GetterTsDsl extends Mixed { fn?.(this); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index d731e5a46..435881412 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -26,8 +26,8 @@ export class InitTsDsl extends Mixed { fn?.(this); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/decl/member.ts b/packages/openapi-ts/src/ts-dsl/decl/member.ts index dca59b394..3fa06adec 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/member.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/member.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { safeMemberName } from '../utils/prop'; @@ -25,8 +25,9 @@ export class EnumMemberTsDsl extends Mixed { } } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._value)) this._value.analyze(ctx); } /** Sets the enum member value. */ diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index cc997b04d..723b62190 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -51,16 +51,17 @@ export class MethodTsDsl extends Mixed { fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + this._returns?.analyze(ctx); + } + /** Sets the return type. */ returns(type: string | TypeTsDsl): this { this._returns = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createMethodDeclaration( [...this.$decorators(), ...this.modifiers], diff --git a/packages/openapi-ts/src/ts-dsl/decl/param.ts b/packages/openapi-ts/src/ts-dsl/decl/param.ts index 9717445b5..78376211a 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/param.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/param.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -30,8 +30,9 @@ export class ParamTsDsl extends Mixed { } } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + this._type?.analyze(ctx); } /** Sets the parameter type. */ diff --git a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts index 088c9ecd5..f24596f94 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -17,6 +17,10 @@ export class PatternTsDsl extends Mixed { | { kind: 'object'; values: Record }; protected _spread?: string; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + /** Defines an array pattern (e.g. `[a, b, c]`). */ array(...props: ReadonlyArray | [ReadonlyArray]): this { const values = @@ -47,10 +51,6 @@ export class PatternTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this.pattern) { throw new Error('PatternTsDsl requires object() or array() pattern'); diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index d54645f21..f7647aa60 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -42,8 +42,8 @@ export class SetterTsDsl extends Mixed { fn?.(this); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/array.ts b/packages/openapi-ts/src/ts-dsl/expr/array.ts index 4b0a9ece5..b96a58ffa 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/array.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/array.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { LayoutMixin } from '../mixins/layout'; import { LiteralTsDsl } from './literal'; @@ -22,6 +22,13 @@ export class ArrayTsDsl extends Mixed { this.elements(...exprs); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const item of this._elements) { + if (isTsDsl(item.expr)) item.expr.analyze(ctx); + } + } + /** Adds a single array element. */ element(expr: string | number | boolean | MaybeTsDsl): this { const node = @@ -50,10 +57,6 @@ export class ArrayTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { const elements = this._elements.map((item) => { const node = this.$node(item.expr); diff --git a/packages/openapi-ts/src/ts-dsl/expr/as.ts b/packages/openapi-ts/src/ts-dsl/expr/as.ts index 8c3f76674..13765267d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/as.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/as.ts @@ -1,28 +1,40 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { TsDsl } from '../base'; -import { AsMixin, registerLazyAccessAsFactory } from '../mixins/as'; +import { isTsDsl, TsDsl } from '../base'; +import { AsMixin, setAsFactory } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; +export type AsExpr = Symbol | string | MaybeTsDsl; +export type AsType = Symbol | string | TypeTsDsl; +export type AsCtor = (expr: AsExpr, type: AsType) => AsTsDsl; + const Mixed = AsMixin(ExprMixin(TsDsl)); export class AsTsDsl extends Mixed { - protected expr: string | MaybeTsDsl; - protected type: string | TypeTsDsl; + protected expr: AsExpr; + protected type: AsType; - constructor( - expr: string | MaybeTsDsl, - type: string | TypeTsDsl, - ) { + constructor(expr: AsExpr, type: AsType) { super(); this.expr = expr; this.type = type; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.expr)) { + ctx.addDependency(this.expr); + } else if (isTsDsl(this.expr)) { + this.expr.analyze(ctx); + } + if (isSymbol(this.type)) { + ctx.addDependency(this.type); + } else if (isTsDsl(this.type)) { + this.type.analyze(ctx); + } } protected override _render() { @@ -33,4 +45,4 @@ export class AsTsDsl extends Mixed { } } -registerLazyAccessAsFactory((...args) => new AsTsDsl(...args)); +setAsFactory((...args) => new AsTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index 9cfcd3d18..6dfce2267 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -1,17 +1,22 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import { validTypescriptIdentifierRegExp } from '~/utils/regexp'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; -import { ExprMixin, registerLazyAccessAttrFactory } from '../mixins/expr'; +import { ExprMixin, setAttrFactory } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; import { LiteralTsDsl } from './literal'; +export type AttrLeft = Symbol | string | MaybeTsDsl; +export type AttrRight = Symbol | string | ts.MemberName | number; +export type AttrCtor = (left: AttrLeft, right: AttrRight) => AttrTsDsl; + const Mixed = AsMixin( ExprMixin( OperatorMixin( @@ -23,20 +28,23 @@ const Mixed = AsMixin( ); export class AttrTsDsl extends Mixed { - protected left: string | MaybeTsDsl; - protected right: string | ts.MemberName | number; + protected left: AttrLeft; + protected right: AttrRight; - constructor( - left: string | MaybeTsDsl, - right: string | ts.MemberName | number, - ) { + constructor(left: AttrLeft, right: AttrRight) { super(); this.left = left; this.right = right; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.left)) { + ctx.addDependency(this.left); + } else if (isTsDsl(this.left)) { + this.left.analyze(ctx); + } + if (isSymbol(this.right)) ctx.addDependency(this.right); } protected override _render() { @@ -63,14 +71,16 @@ export class AttrTsDsl extends Mixed { return ts.factory.createPropertyAccessChain( leftNode, this.$node(new TokenTsDsl().questionDot()), - this.$maybeId(this.right), + // @ts-expect-error ts.MemberName is not properly recognized here + this.$node(this.right), ); } return ts.factory.createPropertyAccessExpression( leftNode, - this.$maybeId(this.right), + // @ts-expect-error ts.MemberName is not properly recognized here + this.$node(this.right), ); } } -registerLazyAccessAttrFactory((...args) => new AttrTsDsl(...args)); +setAttrFactory((...args) => new AttrTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/await.ts b/packages/openapi-ts/src/ts-dsl/expr/await.ts index 5b6942a19..0841077f6 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/await.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/await.ts @@ -1,22 +1,31 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; -import { ExprMixin, registerLazyAccessAwaitFactory } from '../mixins/expr'; +import { isTsDsl, TsDsl } from '../base'; +import { ExprMixin, setAwaitFactory } from '../mixins/expr'; + +export type AwaitExpr = Symbol | string | MaybeTsDsl; +export type AwaitCtor = (expr: AwaitExpr) => AwaitTsDsl; const Mixed = ExprMixin(TsDsl); export class AwaitTsDsl extends Mixed { - protected _awaitExpr: string | MaybeTsDsl; + protected _awaitExpr: AwaitExpr; - constructor(expr: string | MaybeTsDsl) { + constructor(expr: AwaitExpr) { super(); this._awaitExpr = expr; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._awaitExpr)) { + ctx.addDependency(this._awaitExpr); + } else if (isTsDsl(this._awaitExpr)) { + this._awaitExpr.analyze(ctx); + } } protected override _render() { @@ -24,4 +33,4 @@ export class AwaitTsDsl extends Mixed { } } -registerLazyAccessAwaitFactory((...args) => new AwaitTsDsl(...args)); +setAwaitFactory((...args) => new AwaitTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/binary.ts b/packages/openapi-ts/src/ts-dsl/expr/binary.ts index 10f3a8985..e366c5697 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/binary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/binary.ts @@ -1,12 +1,13 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; -type Expr = string | MaybeTsDsl; +type Expr = Symbol | string | MaybeTsDsl; type Op = Operator | ts.BinaryOperator; type Operator = | '!=' @@ -40,6 +41,20 @@ export class BinaryTsDsl extends Mixed { this._expr = expr; } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._base)) { + ctx.addDependency(this._base); + } else if (isTsDsl(this._base)) { + this._base.analyze(ctx); + } + if (isSymbol(this._expr)) { + ctx.addDependency(this._expr); + } else if (isTsDsl(this._expr)) { + this._expr.analyze(ctx); + } + } + /** Logical AND — `this && expr` */ and(expr: Expr): this { return this.opAndExpr('&&', expr); @@ -120,10 +135,6 @@ export class BinaryTsDsl extends Mixed { return this.opAndExpr('*', expr); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this._op) { throw new Error('BinaryTsDsl: missing operator'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/call.ts b/packages/openapi-ts/src/ts-dsl/expr/call.ts index 2820bc5d8..49282bb9e 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/call.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/call.ts @@ -1,33 +1,34 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; import { AsMixin } from '../mixins/as'; -import { ExprMixin, registerLazyAccessCallFactory } from '../mixins/expr'; +import { ExprMixin, setCallFactory } from '../mixins/expr'; import { TypeArgsMixin } from '../mixins/type-args'; +export type CallCallee = string | MaybeTsDsl; +export type CallArg = Symbol | string | MaybeTsDsl; +export type CallArgs = ReadonlyArray; +export type CallCtor = (callee: CallCallee, ...args: CallArgs) => CallTsDsl; + const Mixed = ArgsMixin( AsMixin(ExprMixin(TypeArgsMixin(TsDsl))), ); export class CallTsDsl extends Mixed { - protected _callee: string | MaybeTsDsl; + protected _callee: CallCallee; - constructor( - callee: string | MaybeTsDsl, - ...args: ReadonlyArray | undefined> - ) { + constructor(callee: CallCallee, ...args: CallArgs) { super(); this._callee = callee; - this.args( - ...args.filter((a): a is NonNullable => a !== undefined), - ); + this.args(...args); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._callee)) this._callee.analyze(ctx); } protected override _render() { @@ -39,4 +40,4 @@ export class CallTsDsl extends Mixed { } } -registerLazyAccessCallFactory((expr, args) => new CallTsDsl(expr, ...args)); +setCallFactory((...args) => new CallTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/expr/expr.ts b/packages/openapi-ts/src/ts-dsl/expr/expr.ts index c8d9671dc..fd5d6cade 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/expr.ts @@ -1,27 +1,35 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; import { TypeExprMixin } from '../mixins/type-expr'; +type Id = Symbol | string | MaybeTsDsl; + const Mixed = AsMixin( ExprMixin(OperatorMixin(TypeExprMixin(TsDsl))), ); export class ExprTsDsl extends Mixed { - protected _exprInput: string | MaybeTsDsl; + protected _exprInput: Id; - constructor(id: string | MaybeTsDsl) { + constructor(id: Id) { super(); this._exprInput = id; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._exprInput)) { + ctx.addDependency(this._exprInput); + } else if (isTsDsl(this._exprInput)) { + this._exprInput.analyze(ctx); + } } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts b/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts index 90269e84f..4aca12a6d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts @@ -1,6 +1,7 @@ import type ts from 'typescript'; -import { TsDsl } from '../base'; +import type { TsDsl } from '../base'; +import { isTsDsl } from '../base'; import { ArrayTsDsl } from './array'; import { LiteralTsDsl } from './literal'; import { ObjectTsDsl } from './object'; @@ -11,8 +12,8 @@ export const fromValue = ( layout?: 'pretty'; }, ): TsDsl => { - if (input instanceof TsDsl) { - return input; + if (isTsDsl(input)) { + return input as TsDsl; } if (input === null) { diff --git a/packages/openapi-ts/src/ts-dsl/expr/id.ts b/packages/openapi-ts/src/ts-dsl/expr/id.ts index b1e030439..09d848b6f 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/id.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/id.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -13,8 +13,8 @@ export class IdTsDsl extends Mixed { this.name = name; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/literal.ts b/packages/openapi-ts/src/ts-dsl/expr/literal.ts index 1811c87e0..9620d0792 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/literal.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -15,8 +15,8 @@ export class LiteralTsDsl extends Mixed { this.value = value; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/new.ts b/packages/openapi-ts/src/ts-dsl/expr/new.ts index ef05b7c05..ebfdc400c 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/new.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/new.ts @@ -1,28 +1,33 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; import { ExprMixin } from '../mixins/expr'; import { TypeArgsMixin } from '../mixins/type-args'; +export type NewExpr = Symbol | string | MaybeTsDsl; + const Mixed = ArgsMixin(ExprMixin(TypeArgsMixin(TsDsl))); export class NewTsDsl extends Mixed { - protected classExpr: string | MaybeTsDsl; + protected classExpr: NewExpr; - constructor( - classExpr: string | MaybeTsDsl, - ...args: ReadonlyArray> - ) { + constructor(classExpr: NewExpr, ...args: ReadonlyArray) { super(); this.classExpr = classExpr; this.args(...args); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.classExpr)) { + ctx.addDependency(this.classExpr); + } else if (isTsDsl(this.classExpr)) { + this.classExpr.analyze(ctx); + } } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/object.ts b/packages/openapi-ts/src/ts-dsl/expr/object.ts index 394ac31c6..cd16a1d37 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/object.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/object.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; @@ -9,8 +9,8 @@ import { HintMixin } from '../mixins/hint'; import { LayoutMixin } from '../mixins/layout'; import { ObjectPropTsDsl } from './prop'; -type Expr = string | MaybeTsDsl; -type Stmt = string | MaybeTsDsl; +type Expr = Symbol | string | MaybeTsDsl; +type Stmt = Symbol | string | MaybeTsDsl; type ExprFn = Expr | ((p: ObjectPropTsDsl) => void); type StmtFn = Stmt | ((p: ObjectPropTsDsl) => void); @@ -26,6 +26,13 @@ export class ObjectTsDsl extends Mixed { this.props(...props); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const prop of this._props) { + prop.analyze(ctx); + } + } + /** Adds a computed property (e.g. `{ [expr]: value }`). */ computed(name: string, expr: ExprFn): this { this._props.push( @@ -74,10 +81,6 @@ export class ObjectTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createObjectLiteralExpression( this.$node(this._props), diff --git a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts index 65b66960f..b6d886a44 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; const Mixed = TsDsl; @@ -19,6 +19,11 @@ export class PrefixTsDsl extends Mixed { this._op = op; } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._expr)) this._expr.analyze(ctx); + } + /** Sets the operand (the expression being prefixed). */ expr(expr: string | MaybeTsDsl): this { this._expr = expr; @@ -43,10 +48,6 @@ export class PrefixTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this._expr) { throw new Error('Missing expression for prefix unary expression'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/prop.ts b/packages/openapi-ts/src/ts-dsl/expr/prop.ts index 114bcc83e..5cfc59926 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prop.ts @@ -1,16 +1,17 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { GetterTsDsl } from '../decl/getter'; import { SetterTsDsl } from '../decl/setter'; import { DocMixin } from '../mixins/doc'; import { safePropName } from '../utils/prop'; import { IdTsDsl } from './id'; -type Expr = string | MaybeTsDsl; -type Stmt = string | MaybeTsDsl; +type Expr = Symbol | string | MaybeTsDsl; +type Stmt = Symbol | string | MaybeTsDsl; type Kind = 'computed' | 'getter' | 'prop' | 'setter' | 'spread'; type Meta = @@ -31,15 +32,20 @@ export class ObjectPropTsDsl extends Mixed { this.meta = meta; } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._value)) { + ctx.addDependency(this._value); + } else if (isTsDsl(this._value)) { + this._value.analyze(ctx); + } + } + /** Returns true when all required builder calls are present. */ get isValid(): boolean { return this.missingRequiredCalls().length === 0; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - value(value: Expr | Stmt | ((p: ObjectPropTsDsl) => void)) { if (typeof value === 'function') { value(this); diff --git a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts index 32c70a736..ee3ce5292 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl } from '../base'; @@ -23,8 +23,8 @@ export class RegExpTsDsl extends Mixed { this.flags = flags; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/expr/template.ts b/packages/openapi-ts/src/ts-dsl/expr/template.ts index 3cea764cd..847381d41 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/template.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/template.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; const Mixed = TsDsl; @@ -14,15 +14,18 @@ export class TemplateTsDsl extends Mixed { if (value !== undefined) this.add(value); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const part of this.parts) { + if (isTsDsl(part)) part.analyze(ctx); + } + } + add(value: string | MaybeTsDsl): this { this.parts.push(value); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { const parts = this.$node(this.parts); diff --git a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts index cbe6b8e3e..b189ab491 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; const Mixed = TsDsl; @@ -16,6 +16,13 @@ export class TernaryTsDsl extends Mixed { if (condition) this.condition(condition); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._condition)) this._condition.analyze(ctx); + if (isTsDsl(this._then)) this._then.analyze(ctx); + if (isTsDsl(this._else)) this._else.analyze(ctx); + } + condition(condition: string | MaybeTsDsl) { this._condition = condition; return this; @@ -31,10 +38,6 @@ export class TernaryTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this._condition) throw new Error('Missing condition in ternary'); if (!this._then) throw new Error('Missing then expression in ternary'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index af5c8a401..ac9034eaa 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { OperatorMixin } from '../mixins/operator'; import { registerLazyAccessTypeOfExprFactory } from '../mixins/type-expr'; @@ -16,8 +16,9 @@ export class TypeOfExprTsDsl extends Mixed { this._expr = expr; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._expr)) this._expr.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/index.ts b/packages/openapi-ts/src/ts-dsl/index.ts index 23df6a92e..86233117a 100644 --- a/packages/openapi-ts/src/ts-dsl/index.ts +++ b/packages/openapi-ts/src/ts-dsl/index.ts @@ -338,4 +338,4 @@ export type DollarTsDsl = { }; export type { MaybeTsDsl, TypeTsDsl } from './base'; -export { TsDsl } from './base'; +export { isTsDsl, TsDsl, tsDslBrand } from './base'; diff --git a/packages/openapi-ts/src/ts-dsl/layout/doc.ts b/packages/openapi-ts/src/ts-dsl/layout/doc.ts index 9336ea781..cf60ebff7 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/doc.ts @@ -1,3 +1,4 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -19,6 +20,10 @@ export class DocTsDsl extends TsDsl { fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + add(...lines: ReadonlyArray): this { this._lines.push(...lines); return this; diff --git a/packages/openapi-ts/src/ts-dsl/layout/hint.ts b/packages/openapi-ts/src/ts-dsl/layout/hint.ts index c8452f8eb..dae222150 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/hint.ts @@ -1,3 +1,4 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -19,6 +20,10 @@ export class HintTsDsl extends TsDsl { fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + add(...lines: ReadonlyArray): this { this._lines.push(...lines); return this; diff --git a/packages/openapi-ts/src/ts-dsl/layout/newline.ts b/packages/openapi-ts/src/ts-dsl/layout/newline.ts index fe8d791d8..fe859d9fa 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/newline.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/newline.ts @@ -1,9 +1,14 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; import type ts from 'typescript'; import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NewlineTsDsl extends TsDsl { + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected override _render(): ts.Identifier { return this.$node(new IdTsDsl('\n')); } diff --git a/packages/openapi-ts/src/ts-dsl/layout/note.ts b/packages/openapi-ts/src/ts-dsl/layout/note.ts index b38fe39bc..68cf554d1 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/note.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/note.ts @@ -1,3 +1,4 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeArray } from '../base'; @@ -19,6 +20,10 @@ export class NoteTsDsl extends TsDsl { fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + add(...lines: ReadonlyArray): this { this._lines.push(...lines); return this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/args.ts b/packages/openapi-ts/src/ts-dsl/mixins/args.ts index 7c53ba244..44bd0eac0 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/args.ts @@ -1,16 +1,19 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface ArgsMethods extends SyntaxNode { +type Arg = Symbol | string | MaybeTsDsl; + +export interface ArgsMethods extends Node { /** Renders the arguments into an array of `Expression`s. */ $args(): ReadonlyArray; /** Adds a single expression argument. */ - arg(arg: string | MaybeTsDsl): this; + arg(arg: Arg | undefined): this; /** Adds one or more expression arguments. */ - args(...args: ReadonlyArray>): this; + args(...args: ReadonlyArray): this; } /** @@ -20,22 +23,33 @@ export function ArgsMixin>( Base: TBase, ) { abstract class Args extends Base { - protected _args: Array> = []; + protected _args: Array = []; + + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const arg of this._args) { + if (isSymbol(arg)) { + ctx.addDependency(arg); + } else if (isTsDsl(arg)) { + arg.analyze(ctx); + } + } + } - protected arg(arg: string | MaybeTsDsl): this { - this._args.push(arg); + protected arg(arg: Arg | undefined): this { + if (arg !== undefined) this._args.push(arg); return this; } - protected args( - ...args: ReadonlyArray> - ): this { - this._args.push(...args); + protected args(...args: ReadonlyArray): this { + this._args.push( + ...args.filter((a): a is NonNullable => a !== undefined), + ); return this; } protected $args(): ReadonlyArray { - return this.$node(this._args).map((arg) => this.$maybeId(arg)); + return this.$node(this._args).map((arg) => this.$node(arg)); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/as.ts b/packages/openapi-ts/src/ts-dsl/mixins/as.ts index 7cecfadca..d52911314 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/as.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/as.ts @@ -1,35 +1,30 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import type { AsTsDsl } from '../expr/as'; +import type { AsCtor, AsTsDsl, AsType } from '../expr/as'; import type { BaseCtor, MixinCtor } from './types'; -type AsFactory = ( - expr: string | MaybeTsDsl, - type: string | TypeTsDsl, -) => AsTsDsl; -let asFactory: AsFactory | undefined; -/** Registers the As DSL factory after its module has finished evaluating. */ -export function registerLazyAccessAsFactory(factory: AsFactory): void { +let asFactory: AsCtor | undefined; +/** Lazy register the factory to avoid circular imports. */ +export function setAsFactory(factory: AsCtor): void { asFactory = factory; } -export interface AsMethods extends SyntaxNode { +export interface AsMethods extends Node { /** Creates an `as` type assertion expression (e.g. `value as Type`). */ - as(type: string | TypeTsDsl): AsTsDsl; + as(type: AsType): AsTsDsl; } export function AsMixin>( Base: TBase, ) { abstract class As extends Base { - protected as(type: string | TypeTsDsl): AsTsDsl { - return asFactory!(this, type); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + protected as(type: AsType): AsTsDsl { + return asFactory!(this, type); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts index cc8e46eab..ce5a5ba36 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts @@ -1,11 +1,11 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import { DecoratorTsDsl } from '../decl/decorator'; import type { BaseCtor, MixinCtor } from './types'; -export interface DecoratorMethods extends SyntaxNode { +export interface DecoratorMethods extends Node { /** Renders the decorators into an array of `ts.Decorator`s. */ $decorators(): ReadonlyArray; /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */ @@ -21,11 +21,18 @@ export function DecoratorMixin>( abstract class Decorator extends Base { protected decorators: Array = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const decorator of this.decorators) { + if (isTsDsl(decorator)) decorator.analyze(ctx); + } + } + protected decorator( name: Symbol | string | MaybeTsDsl, ...args: ReadonlyArray> ): this { - this.decorators.push(new DecoratorTsDsl(name, ...args).setParent(this)); + this.decorators.push(new DecoratorTsDsl(name, ...args)); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/do.ts b/packages/openapi-ts/src/ts-dsl/mixins/do.ts index 868072c8d..67e8e3c28 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/do.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/do.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import { StmtTsDsl } from '../stmt/stmt'; import type { BaseCtor, MixinCtor } from './types'; -export interface DoMethods extends SyntaxNode { +export interface DoMethods extends Node { /** Renders the collected `.do()` calls into an array of `Statement` nodes. */ $do(): ReadonlyArray; /** Adds one or more expressions/statements to the body. */ @@ -21,6 +21,13 @@ export function DoMixin>( abstract class Do extends Base { protected _do: Array> = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const item of this._do) { + if (isTsDsl(item)) item.analyze(ctx); + } + } + protected do( ...items: ReadonlyArray> ): this { diff --git a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts index 0f5bcc2a9..080b30bb6 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { DocTsDsl } from '../layout/doc'; import type { BaseCtor, MixinCtor } from './types'; -export interface DocMethods extends SyntaxNode { +export interface DocMethods extends Node { doc(lines?: MaybeArray, fn?: (d: DocTsDsl) => void): this; } @@ -15,6 +15,10 @@ export function DocMixin>( abstract class Doc extends Base { protected _doc?: DocTsDsl; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected doc( lines?: MaybeArray, fn?: (d: DocTsDsl) => void, diff --git a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts index 39ce2d7fc..469a11544 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/expr.ts @@ -1,56 +1,43 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; -import type { AttrTsDsl } from '../expr/attr'; -import type { AwaitTsDsl } from '../expr/await'; -import type { CallTsDsl } from '../expr/call'; -import type { ReturnTsDsl } from '../stmt/return'; +import type { AttrCtor, AttrRight, AttrTsDsl } from '../expr/attr'; +import type { AwaitCtor, AwaitTsDsl } from '../expr/await'; +import type { CallArgs, CallCtor, CallTsDsl } from '../expr/call'; +import type { ReturnCtor, ReturnTsDsl } from '../stmt/return'; import type { BaseCtor, MixinCtor } from './types'; -type AttrFactory = ( - expr: MaybeTsDsl, - name: string | ts.MemberName | number, -) => AttrTsDsl; -let attrFactory: AttrFactory | undefined; -/** Registers the Attr DSL factory after its module has finished evaluating. */ -export function registerLazyAccessAttrFactory(factory: AttrFactory): void { - attrFactory = factory; +let attrFactory: AttrCtor | undefined; +/** Lazy register the factory to avoid circular imports. */ +export function setAttrFactory(fn: AttrCtor): void { + attrFactory = fn; } -type AwaitFactory = (expr: MaybeTsDsl) => AwaitTsDsl; -let awaitFactory: AwaitFactory | undefined; -/** Registers the Await DSL factory after its module has finished evaluating. */ -export function registerLazyAccessAwaitFactory(factory: AwaitFactory): void { - awaitFactory = factory; +let awaitFactory: AwaitCtor | undefined; +/** Lazy register the factory to avoid circular imports. */ +export function setAwaitFactory(fn: AwaitCtor): void { + awaitFactory = fn; } -type CallFactory = ( - expr: MaybeTsDsl, - args: ReadonlyArray | undefined>, -) => CallTsDsl; -let callFactory: CallFactory | undefined; -/** Registers the Call DSL factory after its module has finished evaluating. */ -export function registerLazyAccessCallFactory(factory: CallFactory): void { - callFactory = factory; +let callFactory: CallCtor | undefined; +/** Lazy register the factory to avoid circular imports. */ +export function setCallFactory(fn: CallCtor): void { + callFactory = fn; } -type ReturnFactory = (expr: MaybeTsDsl) => ReturnTsDsl; -let returnFactory: ReturnFactory | undefined; -/** Registers the Return DSL factory after its module has finished evaluating. */ -export function registerLazyAccessReturnFactory(factory: ReturnFactory): void { - returnFactory = factory; +let returnFactory: ReturnCtor | undefined; +/** Lazy register the factory to avoid circular imports. */ +export function setReturnFactory(fn: ReturnCtor): void { + returnFactory = fn; } -export interface ExprMethods extends SyntaxNode { +export interface ExprMethods extends Node { /** Accesses a property on the current expression (e.g. `this.foo`). */ - attr(name: string | ts.MemberName | number): AttrTsDsl; + attr(name: AttrRight): AttrTsDsl; /** Awaits the current expression (e.g. `await expr`). */ await(): AwaitTsDsl; /** Calls the current expression (e.g. `fn(arg1, arg2)`). */ - call( - ...args: ReadonlyArray | undefined> - ): CallTsDsl; + call(...args: CallArgs): CallTsDsl; /** Produces a `return` statement returning the current expression. */ return(): ReturnTsDsl; } @@ -59,7 +46,11 @@ export function ExprMixin>( Base: TBase, ) { abstract class Expr extends Base { - protected attr(name: string | ts.MemberName | number): AttrTsDsl { + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + + protected attr(name: AttrRight): AttrTsDsl { return attrFactory!(this, name); } @@ -67,10 +58,8 @@ export function ExprMixin>( return awaitFactory!(this); } - protected call( - ...args: ReadonlyArray | undefined> - ): CallTsDsl { - return callFactory!(this, args); + protected call(...args: CallArgs): CallTsDsl { + return callFactory!(this, ...args); } protected return(): ReturnTsDsl { diff --git a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts index 0a64d5caf..214504f68 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { HintTsDsl } from '../layout/hint'; import type { BaseCtor, MixinCtor } from './types'; -export interface HintMethods extends SyntaxNode { +export interface HintMethods extends Node { hint(lines?: MaybeArray, fn?: (h: HintTsDsl) => void): this; } @@ -15,6 +15,10 @@ export function HintMixin>( abstract class Hint extends Base { protected _hint?: HintTsDsl; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected hint( lines?: MaybeArray, fn?: (h: HintTsDsl) => void, diff --git a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts index 0aa5c256b..8da34667a 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts @@ -1,9 +1,9 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { BaseCtor, MixinCtor } from './types'; -export interface LayoutMethods extends SyntaxNode { +export interface LayoutMethods extends Node { /** Computes whether output should be multiline based on layout setting and element count. */ $multiline(count: number): boolean; /** Sets automatic line output with optional threshold (default: 3). */ @@ -21,6 +21,10 @@ export function LayoutMixin>( protected static readonly DEFAULT_THRESHOLD = 3; protected layout: boolean | number | undefined; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected auto(threshold: number = Layout.DEFAULT_THRESHOLD): this { this.layout = threshold; return this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts index 497359632..bd008c7d5 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts @@ -1,3 +1,4 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { BaseCtor, MixinCtor } from './types'; @@ -23,6 +24,10 @@ function ModifiersMixin>( abstract class Modifiers extends Base { protected modifiers: Array = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected _m(kind: ts.ModifierSyntaxKind, condition: boolean): this { if (condition) this.modifiers.push(ts.factory.createModifier(kind)); return this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/note.ts b/packages/openapi-ts/src/ts-dsl/mixins/note.ts index 4a4dd99e2..c9dfe971e 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/note.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/note.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeArray } from '../base'; import { NoteTsDsl } from '../layout/note'; import type { BaseCtor, MixinCtor } from './types'; -export interface NoteMethods extends SyntaxNode { +export interface NoteMethods extends Node { note(lines?: MaybeArray, fn?: (h: NoteTsDsl) => void): this; } @@ -15,6 +15,10 @@ export function NoteMixin>( abstract class Note extends Base { protected _note?: NoteTsDsl; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected note( lines?: MaybeArray, fn?: (h: NoteTsDsl) => void, diff --git a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts index 7d00deed1..2bc7de200 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/operator.ts @@ -1,13 +1,13 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { BinaryTsDsl } from '../expr/binary'; import type { BaseCtor, MixinCtor } from './types'; -type Expr = string | MaybeTsDsl; +type Expr = Symbol | string | MaybeTsDsl; -export interface OperatorMethods extends SyntaxNode { +export interface OperatorMethods extends Node { /** Logical AND — `this && expr` */ and(expr: Expr): BinaryTsDsl; /** Creates an assignment expression (e.g. `this = expr`). */ @@ -47,6 +47,10 @@ export function OperatorMixin< TBase extends BaseCtor, >(Base: TBase) { abstract class Operator extends Base { + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected and(expr: Expr): BinaryTsDsl { return new BinaryTsDsl(this).and(expr); } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts index 1109f0127..3a89c3acd 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/optional.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/optional.ts @@ -1,9 +1,9 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { BaseCtor, MixinCtor } from './types'; -export interface OptionalMethods extends SyntaxNode { +export interface OptionalMethods extends Node { _optional?: boolean; /** Marks the node as optional when the condition is true. */ optional(condition?: boolean): this; @@ -17,6 +17,10 @@ export function OptionalMixin>( abstract class Optional extends Base { protected _optional?: boolean; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected optional(condition?: boolean): this { this._optional = arguments.length === 0 ? true : Boolean(condition); return this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/param.ts b/packages/openapi-ts/src/ts-dsl/mixins/param.ts index 2ffc74f62..f50e89b14 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/param.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/param.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import { ParamTsDsl } from '../decl/param'; import type { BaseCtor, MixinCtor } from './types'; -export interface ParamMethods extends SyntaxNode { +export interface ParamMethods extends Node { /** Renders the parameters into an array of `ParameterDeclaration`s. */ $params(): ReadonlyArray; /** Adds a parameter. */ @@ -23,6 +23,13 @@ export function ParamMixin>( abstract class Param extends Base { protected _params: Array> = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const p of this._params) { + if (isTsDsl(p)) p.analyze(ctx); + } + } + protected param( name: string | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void, diff --git a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts index 9bd68477d..408a69d36 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts @@ -1,11 +1,11 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeArray } from '../base'; +import { isTsDsl, type MaybeArray } from '../base'; import { PatternTsDsl } from '../decl/pattern'; import type { BaseCtor, MixinCtor } from './types'; -export interface PatternMethods extends SyntaxNode { +export interface PatternMethods extends Node { /** Renders the pattern into a `BindingName`. */ $pattern(): ts.BindingName | undefined; /** Defines an array binding pattern. */ @@ -27,6 +27,11 @@ export function PatternMixin>( abstract class Pattern extends Base { protected pattern?: PatternTsDsl; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this.pattern)) this.pattern.analyze(ctx); + } + protected array( ...props: ReadonlyArray | [ReadonlyArray] ): this { diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts index 191cade55..e2ae62ea6 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts @@ -1,58 +1,52 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface TypeArgsMethods extends SyntaxNode { +type Arg = Symbol | string | MaybeTsDsl; + +export interface TypeArgsMethods extends Node { /** Returns the type arguments as an array of ts.TypeNode nodes. */ $generics(): ReadonlyArray | undefined; /** Adds a single type argument (e.g. `string` in `Foo`). */ - generic(arg: string | MaybeTsDsl): this; + generic(arg: Arg): this; /** Adds type arguments (e.g. `Map`). */ - generics(...args: ReadonlyArray>): this; + generics(...args: ReadonlyArray): this; } export function TypeArgsMixin>( Base: TBase, ) { abstract class TypeArgs extends Base { - protected _generics: Array> = []; + protected _generics: Array = []; - protected generic(arg: string | MaybeTsDsl): this { - if (arg instanceof TsDsl) arg.setParent(this); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const g of this._generics) { + if (isSymbol(g)) { + ctx.addDependency(g); + } else if (isTsDsl(g)) { + g.analyze(ctx); + } + } + } + + protected generic(arg: Arg): this { this._generics.push(arg); return this; } - protected generics( - ...args: ReadonlyArray> - ): this { - for (const arg of args) { - if (arg instanceof TsDsl) arg.setParent(this); - this._generics.push(arg); - } + protected generics(...args: ReadonlyArray): this { + this._generics.push(...args); return this; } protected $generics(): ReadonlyArray | undefined { return this.$type(this._generics); } - - override collectSymbols(out: Set): void { - super.collectSymbols(out); - for (const g of this._generics) { - if (g instanceof TsDsl) g.collectSymbols(out); - } - } - - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - for (const g of this._generics) { - if (g instanceof TsDsl) g.traverse(visitor); - } - } } return TypeArgs as unknown as MixinCtor; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts index 8d2f3fc1c..8f5d558fd 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts @@ -1,8 +1,8 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import ts from 'typescript'; -import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import type { MaybeTsDsl, TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl } from '../base'; import type { TypeOfExprTsDsl } from '../expr/typeof'; import type { TypeExprTsDsl } from '../type/expr'; import type { TypeIdxTsDsl } from '../type/idx'; @@ -65,7 +65,7 @@ export function registerLazyAccessTypeQueryFactory( typeQueryFactory = factory; } -export interface TypeExprMethods extends SyntaxNode { +export interface TypeExprMethods extends Node { /** Creates an indexed-access type (e.g. `Foo[K]`). */ idx( this: MaybeTsDsl, @@ -104,6 +104,10 @@ export function TypeExprMixin>( Base: TBase, ) { abstract class TypeExpr extends Base { + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + } + protected idx( this: TypeTsDsl, index: string | number | MaybeTsDsl, @@ -120,9 +124,7 @@ export function TypeExprMixin>( } protected returnType(this: TsDsl): TypeExprTsDsl { - const node = typeExprFactory!('ReturnType'); - node.setParent(this); - return node.generic(typeQueryFactory!(this)); + return typeExprFactory!('ReturnType').generic(typeQueryFactory!(this)); } protected typeofExpr(this: TsDsl): TypeOfExprTsDsl { @@ -142,10 +144,11 @@ export function TypeExprMixin>( : T extends TypeTsDsl ? TypeQueryTsDsl : TypeQueryTsDsl | TypeOfExprTsDsl { - if (this instanceof TsDsl) { + if (isTsDsl(this)) { // @ts-expect-error + const node = this._render(); return ( - ts.isExpression(this._render()) + ts.isExpression(node) ? typeOfExprFactory!(this as any) : typeQueryFactory!(this) ) as any; @@ -161,14 +164,6 @@ export function TypeExprMixin>( protected unique(this: TypeTsDsl): TypeOperatorTsDsl { return typeOperatorFactory!().unique(this); } - - override collectSymbols(out: Set): void { - super.collectSymbols(out); - } - - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } } return TypeExpr as unknown as MixinCtor; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts index b60bc6ee0..afec41f65 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts @@ -1,13 +1,12 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import { TypeParamTsDsl } from '../type/param'; import type { BaseCtor, MixinCtor } from './types'; -export interface TypeParamsMethods extends SyntaxNode { +export interface TypeParamsMethods extends Node { /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */ $generics(): ReadonlyArray | undefined; /** Adds a single type parameter (e.g. `T` in `Array`). */ @@ -24,10 +23,17 @@ export function TypeParamsMixin>( abstract class TypeParams extends Base { protected _generics: Array> = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const g of this._generics) { + if (isTsDsl(g)) g.analyze(ctx); + } + } + protected generic( ...args: ConstructorParameters ): this { - const g = new TypeParamTsDsl(...args).setParent(this); + const g = new TypeParamTsDsl(...args); this._generics.push(g); return this; } @@ -36,12 +42,9 @@ export function TypeParamsMixin>( ...args: ReadonlyArray> ): this { for (let arg of args) { - if (typeof arg === 'string' || arg instanceof Symbol) { + if (typeof arg === 'string' || isSymbol(arg)) { arg = new TypeParamTsDsl(arg); } - if (arg instanceof TsDsl) { - arg.setParent(this); - } this._generics.push(arg); } return this; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/value.ts b/packages/openapi-ts/src/ts-dsl/mixins/value.ts index 2c2def448..06e0a7caa 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/value.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/value.ts @@ -1,22 +1,29 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import type { MaybeTsDsl } from '../base'; +import { isTsDsl, type MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; -export interface ValueMethods extends SyntaxNode { +export type ValueExpr = string | MaybeTsDsl; + +export interface ValueMethods extends Node { $value(): ts.Expression | undefined; /** Sets the initializer expression (e.g. `= expr`). */ - assign(expr: string | MaybeTsDsl): this; + assign(expr: ValueExpr): this; } export function ValueMixin>( Base: TBase, ) { abstract class Value extends Base { - protected value?: string | MaybeTsDsl; + protected value?: ValueExpr; + + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this.value)) this.value.analyze(ctx); + } - protected assign(expr: string | MaybeTsDsl): this { + protected assign(expr: ValueExpr): this { this.value = expr; return this; } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index bdbc7f92c..857da8bd8 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { DoMixin } from '../mixins/do'; const Mixed = DoMixin(TsDsl); @@ -16,6 +16,16 @@ export class IfTsDsl extends Mixed { if (condition) this.condition(condition); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._condition)) this._condition.analyze(ctx); + if (this._else) { + for (const stmt of this._else) { + if (isTsDsl(stmt)) stmt.analyze(ctx); + } + } + } + condition(condition: string | MaybeTsDsl): this { this._condition = condition; return this; @@ -26,10 +36,6 @@ export class IfTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this._condition) throw new Error('Missing condition in if'); diff --git a/packages/openapi-ts/src/ts-dsl/stmt/return.ts b/packages/openapi-ts/src/ts-dsl/stmt/return.ts index 8d1804135..1d4e96049 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/return.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/return.ts @@ -1,22 +1,31 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; -import { registerLazyAccessReturnFactory } from '../mixins/expr'; +import { isTsDsl, TsDsl } from '../base'; +import { setReturnFactory } from '../mixins/expr'; + +export type ReturnExpr = Symbol | string | MaybeTsDsl; +export type ReturnCtor = (expr?: ReturnExpr) => ReturnTsDsl; const Mixed = TsDsl; export class ReturnTsDsl extends Mixed { - protected _returnExpr?: string | MaybeTsDsl; + protected _returnExpr?: ReturnExpr; - constructor(expr?: string | MaybeTsDsl) { + constructor(expr?: ReturnExpr) { super(); this._returnExpr = expr; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._returnExpr)) { + ctx.addDependency(this._returnExpr); + } else if (isTsDsl(this._returnExpr)) { + this._returnExpr.analyze(ctx); + } } protected override _render() { @@ -24,4 +33,4 @@ export class ReturnTsDsl extends Mixed { } } -registerLazyAccessReturnFactory((...args) => new ReturnTsDsl(...args)); +setReturnFactory((...args) => new ReturnTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts index 41d543fde..c61995f59 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts @@ -1,7 +1,7 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; const Mixed = TsDsl; @@ -13,8 +13,9 @@ export class StmtTsDsl extends Mixed { this._inner = inner; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._inner)) this._inner.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts index 1a3abc6ea..51df159c9 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { LiteralTsDsl } from '../expr/literal'; const Mixed = TsDsl; @@ -18,15 +18,17 @@ export class ThrowTsDsl extends Mixed { this.useNew = useNew; } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this.error)) this.error.analyze(ctx); + if (isTsDsl(this.msg)) this.msg.analyze(ctx); + } + message(value: string | MaybeTsDsl): this { this.msg = value; return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { const errorNode = this.$node(this.error); const messageNode = this.$node(this.msg ? [this.msg] : []).map((expr) => diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index caa900ae2..f49767e17 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -1,4 +1,5 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -9,6 +10,8 @@ import { PatternMixin } from '../mixins/pattern'; import { ValueMixin } from '../mixins/value'; import { TypeExprTsDsl } from '../type/expr'; +export type VarName = Symbol | string; + const Mixed = DefaultMixin( DocMixin( ExportMixin( @@ -19,23 +22,24 @@ const Mixed = DefaultMixin( export class VarTsDsl extends Mixed { protected kind: ts.NodeFlags = ts.NodeFlags.None; - protected name?: string; + protected name?: VarName; protected _type?: TypeTsDsl; - constructor(name?: Symbol | string) { + constructor(name?: VarName) { super(); - if (name) { - if (typeof name === 'string') { - this.name = name; - } else { - this.name = name.finalName; - this.symbol = name; - this.symbol.setKind('var'); - this.symbol.setRootNode(this); - } + this.name = name; + if (isSymbol(name)) { + name.setKind('var'); + name.setNode(this); } } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.name)) ctx.addDependency(this.name); + this._type?.analyze(ctx); + } + const(): this { this.kind = ts.NodeFlags.Const; return this; @@ -46,10 +50,6 @@ export class VarTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - /** Sets the variable type. */ type(type: string | TypeTsDsl): this { this._type = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); @@ -62,7 +62,7 @@ export class VarTsDsl extends Mixed { } protected override _render() { - const name = this.$pattern() ?? this.name; + const name = this.$pattern() ?? this.$node(this.name); if (!name) throw new Error('Var must have either a name or a destructuring pattern'); return ts.factory.createVariableStatement( @@ -70,6 +70,7 @@ export class VarTsDsl extends Mixed { ts.factory.createVariableDeclarationList( [ ts.factory.createVariableDeclaration( + // @ts-expect-error need to improve types name, undefined, this.$type(this._type), diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index fd1cd5741..cad322667 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -1,9 +1,9 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl } from '../base'; +import { isTsDsl, TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; @@ -21,48 +21,33 @@ export class TypeAliasTsDsl extends Mixed { constructor(name: Name, fn?: (t: TypeAliasTsDsl) => void) { super(); - if (typeof name === 'string') { - this.name = name; - } else { - this.name = name; - this.symbol = name; - this.symbol.setKind('type'); - this.symbol.setRootNode(this); + this.name = name; + if (isSymbol(name)) { + name.setKind('type'); + name.setNode(this); } fn?.(this); } - override collectSymbols(out: Set): void { - super.collectSymbols(out); - if (this.name instanceof Symbol) { - out.add(this.name); - } - if (this.value instanceof TsDsl) { - this.value.collectSymbols(out); - } - } - - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - if (this.value instanceof TsDsl) { - this.value.traverse(visitor); - } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.name)) ctx.addDependency(this.name); + if (isTsDsl(this.value)) this.value.analyze(ctx); } /** Sets the type expression on the right-hand side of `= ...`. */ type(node: Value): this { this.value = node; - if (this.value instanceof TsDsl) this.value.setParent(this); return this; } protected override _render() { if (!this.value) throw new Error(`Type alias '${this.name}' is missing a type definition`); - const name = this.name instanceof Symbol ? this.name.finalName : this.name; return ts.factory.createTypeAliasDeclaration( this.modifiers, - name, + // @ts-expect-error need to improve types + this.$node(this.name), this.$generics(), this.$type(this.value), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/and.ts b/packages/openapi-ts/src/ts-dsl/type/and.ts index 7a973b692..59fe23fad 100644 --- a/packages/openapi-ts/src/ts-dsl/type/and.ts +++ b/packages/openapi-ts/src/ts-dsl/type/and.ts @@ -1,23 +1,33 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; + +type Type = Symbol | string | ts.TypeNode | TypeTsDsl; const Mixed = TypeTsDsl; export class TypeAndTsDsl extends Mixed { - protected _types: Array = []; + protected _types: Array = []; - constructor(...nodes: Array) { + constructor(...nodes: Array) { super(); this.types(...nodes); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const t of this._types) { + if (isSymbol(t)) { + ctx.addDependency(t); + } else if (isTsDsl(t)) { + t.analyze(ctx); + } + } } - types(...nodes: Array): this { + types(...nodes: Array): this { this._types.push(...nodes); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/type/attr.ts b/packages/openapi-ts/src/ts-dsl/type/attr.ts index 01fd1c6e8..671fe388c 100644 --- a/packages/openapi-ts/src/ts-dsl/type/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/attr.ts @@ -1,9 +1,9 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { TypeExprMixin } from '../mixins/type-expr'; type Base = Symbol | string | MaybeTsDsl; @@ -28,9 +28,18 @@ export class TypeAttrTsDsl extends Mixed { } } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._base)) { + ctx.addDependency(this._base); + } else if (isTsDsl(this._base)) { + this._base.analyze(ctx); + } + if (isSymbol(this._right)) ctx.addDependency(this._right); + } + base(base?: Base): this { this._base = base; - if (this._base instanceof TsDsl) this._base.setParent(this); return this; } @@ -39,42 +48,18 @@ export class TypeAttrTsDsl extends Mixed { return this; } - override collectSymbols(out: Set): void { - super.collectSymbols(out); - if (this._base) { - if (this._base instanceof Symbol) { - out.add(this._base); - } else if (this._base instanceof TsDsl) { - this._base.collectSymbols(out); - } - } - if (this._right instanceof Symbol) { - out.add(this._right); - } - } - - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - if (this._base instanceof TsDsl) { - this._base.traverse(visitor); - } - } - protected override _render() { if (!this._base) { throw new Error('TypeAttrTsDsl: missing base for qualified name'); } - const left = - this._base instanceof Symbol - ? this.$node(this._base.finalName) - : this.$node(this._base); + const left = this.$node(this._base); if (!ts.isEntityName(left)) { throw new Error('TypeAttrTsDsl: base must be an EntityName'); } - const right = - this._right instanceof Symbol - ? this.$maybeId(this._right.finalName) - : this.$maybeId(this._right); - return ts.factory.createQualifiedName(left, right); + return ts.factory.createQualifiedName( + left, + // @ts-expect-error need to improve types + this.$node(this._right), + ); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index 0ce8d87f9..7aa03d9a9 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { TypeArgsMixin } from '../mixins/type-args'; import { registerLazyAccessTypeExprFactory, @@ -10,17 +10,20 @@ import { } from '../mixins/type-expr'; import { TypeAttrTsDsl } from './attr'; +export type TypeExprName = Symbol | string; +export type TypeExprExpr = TypeExprName | TypeAttrTsDsl; + const Mixed = TypeArgsMixin(TypeExprMixin(TypeTsDsl)); export class TypeExprTsDsl extends Mixed { - protected _exprInput?: Symbol | string | TypeAttrTsDsl; + protected _exprInput?: TypeExprExpr; constructor(); constructor(fn: (t: TypeExprTsDsl) => void); - constructor(name: Symbol | string); - constructor(name: Symbol | string, fn?: (t: TypeExprTsDsl) => void); + constructor(name: TypeExprName); + constructor(name: TypeExprName, fn?: (t: TypeExprTsDsl) => void); constructor( - name?: Symbol | string | ((t: TypeExprTsDsl) => void), + name?: TypeExprName | ((t: TypeExprTsDsl) => void), fn?: (t: TypeExprTsDsl) => void, ) { super(); @@ -32,44 +35,28 @@ export class TypeExprTsDsl extends Mixed { } } - /** Accesses a nested type (e.g. `Foo.Bar`). */ - attr(right: string | ts.Identifier | TypeAttrTsDsl): this { - this._exprInput = - right instanceof TypeAttrTsDsl - ? right.base(this._exprInput) - : new TypeAttrTsDsl(this._exprInput!, right); - this._exprInput.setParent(this); - return this; - } - - override collectSymbols(out: Set): void { - super.collectSymbols(out); - if (this._exprInput && typeof this._exprInput !== 'string') { - if (this._exprInput instanceof Symbol) { - out.add(this._exprInput); - } else { - this._exprInput.collectSymbols(out); - } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._exprInput)) { + ctx.addDependency(this._exprInput); + } else if (isTsDsl(this._exprInput)) { + this._exprInput.analyze(ctx); } } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - if (this._exprInput instanceof TsDsl) { - this._exprInput.traverse(visitor); - } + /** Accesses a nested type (e.g. `Foo.Bar`). */ + attr(right: string | ts.Identifier | TypeAttrTsDsl): this { + this._exprInput = isTsDsl(right) + ? right.base(this._exprInput) + : new TypeAttrTsDsl(this._exprInput!, right); + return this; } protected override _render() { if (!this._exprInput) throw new Error('TypeExpr must have an expression'); - const typeName = - typeof this._exprInput === 'string' || - this._exprInput instanceof TypeAttrTsDsl - ? this.$type(this._exprInput) - : this._exprInput.finalName; return ts.factory.createTypeReferenceNode( // @ts-expect-error --- need to fix types - typeName, + this.$type(this._exprInput), this.$generics(), ); } diff --git a/packages/openapi-ts/src/ts-dsl/type/fromValue.ts b/packages/openapi-ts/src/ts-dsl/type/fromValue.ts index 3d8a0a5b8..d0b46cafe 100644 --- a/packages/openapi-ts/src/ts-dsl/type/fromValue.ts +++ b/packages/openapi-ts/src/ts-dsl/type/fromValue.ts @@ -1,13 +1,14 @@ import type ts from 'typescript'; -import { TsDsl } from '../base'; +import type { TsDsl } from '../base'; +import { isTsDsl } from '../base'; import { TypeLiteralTsDsl } from './literal'; import { TypeObjectTsDsl } from './object'; import { TypeTupleTsDsl } from './tuple'; export const fromValue = (input: unknown): TsDsl => { - if (input instanceof TsDsl) { - return input; + if (isTsDsl(input)) { + return input as TsDsl; } if (input === null) { diff --git a/packages/openapi-ts/src/ts-dsl/type/func.ts b/packages/openapi-ts/src/ts-dsl/type/func.ts index cb3b066eb..5daf11262 100644 --- a/packages/openapi-ts/src/ts-dsl/type/func.ts +++ b/packages/openapi-ts/src/ts-dsl/type/func.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -14,16 +14,17 @@ const Mixed = DocMixin( export class TypeFuncTsDsl extends Mixed { protected _returns?: TypeTsDsl; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + this._returns?.analyze(ctx); + } + /** Sets the return type. */ returns(type: string | TypeTsDsl): this { this._returns = type instanceof TypeTsDsl ? type : new TypeExprTsDsl(type); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (this._returns === undefined) { throw new Error('Missing return type in function type DSL'); diff --git a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts index 1967d4d82..05ed93f14 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts @@ -1,43 +1,46 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ReadonlyMixin } from '../mixins/modifiers'; -type Type = string | MaybeTsDsl; +export type TypeIdxSigName = string; +export type TypeIdxSigType = string | MaybeTsDsl; const Mixed = DocMixin(ReadonlyMixin(TypeTsDsl)); export class TypeIdxSigTsDsl extends Mixed { - protected _key?: Type; - protected _name: string; - protected _type?: Type; + protected _key?: TypeIdxSigType; + protected _name: TypeIdxSigName; + protected _type?: TypeIdxSigType; - constructor(name: string, fn?: (i: TypeIdxSigTsDsl) => void) { + constructor(name: TypeIdxSigName, fn?: (i: TypeIdxSigTsDsl) => void) { super(); this._name = name; fn?.(this); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._key)) this._key.analyze(ctx); + if (isTsDsl(this._type)) this._type.analyze(ctx); + } + /** Returns true when all required builder calls are present. */ get isValid(): boolean { return this.missingRequiredCalls().length === 0; } /** Sets the key type: `[name: T]` */ - key(type: Type): this { + key(type: TypeIdxSigType): this { this._key = type; return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - /** Sets the property type. */ - type(type: Type): this { + type(type: TypeIdxSigType): this { this._type = type; return this; } @@ -60,9 +63,9 @@ export class TypeIdxSigTsDsl extends Mixed { } $validate(): asserts this is this & { - _key: Type; - _name: string; - _type: Type; + _key: TypeIdxSigType; + _name: TypeIdxSigName; + _type: TypeIdxSigType; } { const missing = this.missingRequiredCalls(); if (missing.length === 0) return; diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index 30441d470..7720bd175 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { registerLazyAccessTypeIdxFactory, TypeExprMixin, @@ -23,28 +23,22 @@ export class TypeIdxTsDsl extends Mixed { this.index(index); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._base)) this._base.analyze(ctx); + if (isTsDsl(this._index)) this._index.analyze(ctx); + } + base(base: Base): this { this._base = base; - if (this._base instanceof TsDsl) this._base.setParent(this); return this; } index(index: Index): this { this._index = index; - if (this._index instanceof TsDsl) this._index.setParent(this); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - if (this._base instanceof TsDsl) { - this._base.traverse(visitor); - } - if (this._index instanceof TsDsl) { - this._index.traverse(visitor); - } - } - protected override _render() { return ts.factory.createIndexedAccessTypeNode( this.$type(this._base), diff --git a/packages/openapi-ts/src/ts-dsl/type/literal.ts b/packages/openapi-ts/src/ts-dsl/type/literal.ts index 33085953e..d85b7458e 100644 --- a/packages/openapi-ts/src/ts-dsl/type/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/type/literal.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -14,8 +14,8 @@ export class TypeLiteralTsDsl extends Mixed { this.value = value; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/mapped.ts b/packages/openapi-ts/src/ts-dsl/type/mapped.ts index 2957228e8..3f448df81 100644 --- a/packages/openapi-ts/src/ts-dsl/type/mapped.ts +++ b/packages/openapi-ts/src/ts-dsl/type/mapped.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { TokenTsDsl } from '../token'; const Mixed = TypeTsDsl; @@ -27,6 +27,14 @@ export class TypeMappedTsDsl extends Mixed { this.name(name); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + this.questionToken?.analyze(ctx); + this.readonlyToken?.analyze(ctx); + if (isTsDsl(this._key)) this._key.analyze(ctx); + if (isTsDsl(this._type)) this._type.analyze(ctx); + } + /** Returns true when all required builder calls are present. */ get isValid(): boolean { return this.missingRequiredCalls().length === 0; @@ -68,10 +76,6 @@ export class TypeMappedTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - /** Sets the mapped value type: `[K in X]: ValueType` */ type(type: string | MaybeTsDsl): this { this._type = type; diff --git a/packages/openapi-ts/src/ts-dsl/type/object.ts b/packages/openapi-ts/src/ts-dsl/type/object.ts index 09f8dde9b..5190bef6a 100644 --- a/packages/openapi-ts/src/ts-dsl/type/object.ts +++ b/packages/openapi-ts/src/ts-dsl/type/object.ts @@ -1,4 +1,4 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TypeTsDsl } from '../base'; @@ -10,6 +10,13 @@ const Mixed = TypeTsDsl; export class TypeObjectTsDsl extends Mixed { protected props: Array = []; + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const prop of this.props) { + prop.analyze(ctx); + } + } + /** Returns true if object has at least one property or spread. */ hasProps(): boolean { return this.props.length > 0; @@ -34,10 +41,6 @@ export class TypeObjectTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createTypeLiteralNode(this.$node(this.props)); } diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index 97d5b8fbf..b7bc6da05 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -1,8 +1,8 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { registerLazyAccessTypeOperatorFactory } from '../mixins/type-expr'; type Op = @@ -29,8 +29,9 @@ export class TypeOperatorTsDsl extends Mixed { protected _op?: Op; protected _type?: Type; - override collectSymbols(out: Set): void { - super.collectSymbols(out); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._type)) this._type.analyze(ctx); } /** Shorthand: builds `keyof T`. */ @@ -53,17 +54,9 @@ export class TypeOperatorTsDsl extends Mixed { return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - if (this._type instanceof TsDsl) { - this._type.traverse(visitor); - } - } - /** Sets the target type of the operator. */ type(type: Type): this { this._type = type; - if (this._type instanceof TsDsl) this._type.setParent(this); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/type/or.ts b/packages/openapi-ts/src/ts-dsl/type/or.ts index 6933837af..a9afad2fe 100644 --- a/packages/openapi-ts/src/ts-dsl/type/or.ts +++ b/packages/openapi-ts/src/ts-dsl/type/or.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TsDsl, TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; type Type = Symbol | string | ts.TypeNode | TypeTsDsl; @@ -16,20 +16,19 @@ export class TypeOrTsDsl extends Mixed { this.types(...nodes); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - for (const node of this._types) { - if (node instanceof TsDsl) { - node.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const t of this._types) { + if (isSymbol(t)) { + ctx.addDependency(t); + } else if (isTsDsl(t)) { + t.analyze(ctx); } } } types(...nodes: Array): this { - for (const node of nodes) { - if (node instanceof TsDsl) node.setParent(this); - this._types.push(node); - } + this._types.push(...nodes); return this; } @@ -37,8 +36,7 @@ export class TypeOrTsDsl extends Mixed { const flat: Array = []; for (const node of this._types) { - const value = node instanceof Symbol ? node.finalName : node; - const type = this.$type(value); + const type = this.$type(node); if (ts.isUnionTypeNode(type)) { flat.push(...type.types); } else { diff --git a/packages/openapi-ts/src/ts-dsl/type/param.ts b/packages/openapi-ts/src/ts-dsl/type/param.ts index 31db589d6..55ea62b0b 100644 --- a/packages/openapi-ts/src/ts-dsl/type/param.ts +++ b/packages/openapi-ts/src/ts-dsl/type/param.ts @@ -1,50 +1,57 @@ -import type { Symbol, SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; + +export type TypeParamName = Symbol | string; +export type TypeParamExpr = Symbol | string | boolean | MaybeTsDsl; const Mixed = TypeTsDsl; export class TypeParamTsDsl extends Mixed { - protected name?: Symbol | string; - protected constraint?: string | MaybeTsDsl | boolean; - protected defaultValue?: string | MaybeTsDsl | boolean; + protected name?: TypeParamName; + protected constraint?: TypeParamExpr; + protected defaultValue?: TypeParamExpr; - constructor(name?: Symbol | string, fn?: (name: TypeParamTsDsl) => void) { + constructor(name?: TypeParamName, fn?: (name: TypeParamTsDsl) => void) { super(); this.name = name; - if (name && typeof name !== 'string') { - this.getRootSymbol().addDependency(name); - } fn?.(this); } - override collectSymbols(out: Set): void { - console.log(out); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this.name)) ctx.addDependency(this.name); + if (isSymbol(this.constraint)) { + ctx.addDependency(this.constraint); + } else if (isTsDsl(this.constraint)) { + this.constraint.analyze(ctx); + } + if (isSymbol(this.defaultValue)) { + ctx.addDependency(this.defaultValue); + } else if (isTsDsl(this.defaultValue)) { + this.defaultValue.analyze(ctx); + } } - default(value: string | MaybeTsDsl | boolean): this { + default(value: TypeParamExpr): this { this.defaultValue = value; return this; } - extends(constraint: string | MaybeTsDsl | boolean): this { + extends(constraint: TypeParamExpr): this { this.constraint = constraint; return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { if (!this.name) throw new Error('Missing type name'); - const name = - typeof this.name === 'string' ? this.name : this.name.finalName; return ts.factory.createTypeParameterDeclaration( undefined, - this.$maybeId(name), + // @ts-expect-error need to improve types + this.$node(this.name), this.$type(this.constraint), this.$type(this.defaultValue), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/prop.ts b/packages/openapi-ts/src/ts-dsl/type/prop.ts index 7e6ad5b61..e8519ea0b 100644 --- a/packages/openapi-ts/src/ts-dsl/type/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/type/prop.ts @@ -1,32 +1,41 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ReadonlyMixin } from '../mixins/modifiers'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; import { safePropName } from '../utils/prop'; +export type TypePropName = string; +export type TypePropType = Symbol | string | MaybeTsDsl; + const Mixed = DocMixin(OptionalMixin(ReadonlyMixin(TypeTsDsl))); export class TypePropTsDsl extends Mixed { - protected name: string; - protected _type?: string | MaybeTsDsl; + protected name: TypePropName; + protected _type?: TypePropType; - constructor(name: string, fn: (p: TypePropTsDsl) => void) { + constructor(name: TypePropName, fn: (p: TypePropTsDsl) => void) { super(); this.name = name; fn(this); } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isSymbol(this._type)) { + ctx.addDependency(this._type); + } else if (isTsDsl(this._type)) { + this._type.analyze(ctx); + } } /** Sets the property type. */ - type(type: string | MaybeTsDsl): this { + type(type: TypePropType): this { this._type = type; return this; } diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index 7c93e226a..1c2e1f801 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; import { registerLazyAccessTypeQueryFactory, TypeExprMixin, @@ -18,8 +18,9 @@ export class TypeQueryTsDsl extends Mixed { this._expr = expr; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + if (isTsDsl(this._expr)) this._expr.analyze(ctx); } protected override _render() { diff --git a/packages/openapi-ts/src/ts-dsl/type/template.ts b/packages/openapi-ts/src/ts-dsl/type/template.ts index 90c0cf583..2f171e5d0 100644 --- a/packages/openapi-ts/src/ts-dsl/type/template.ts +++ b/packages/openapi-ts/src/ts-dsl/type/template.ts @@ -1,8 +1,8 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; const Mixed = TypeTsDsl; @@ -14,16 +14,19 @@ export class TypeTemplateTsDsl extends Mixed { if (value !== undefined) this.add(value); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const part of this.parts) { + if (isTsDsl(part)) part.analyze(ctx); + } + } + /** Adds a raw string segment or embedded type expression. */ add(part: string | MaybeTsDsl): this { this.parts.push(part); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { const parts = this.$node(this.parts); diff --git a/packages/openapi-ts/src/ts-dsl/type/tuple.ts b/packages/openapi-ts/src/ts-dsl/type/tuple.ts index e365c4306..fb8b09d34 100644 --- a/packages/openapi-ts/src/ts-dsl/type/tuple.ts +++ b/packages/openapi-ts/src/ts-dsl/type/tuple.ts @@ -1,7 +1,7 @@ -import type { SyntaxNode } from '@hey-api/codegen-core'; +import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { TypeTsDsl } from '../base'; +import { isTsDsl, TypeTsDsl } from '../base'; const Mixed = TypeTsDsl; @@ -13,15 +13,18 @@ export class TypeTupleTsDsl extends Mixed { this.elements(...nodes); } + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + for (const t of this._elements) { + if (isTsDsl(t)) t.analyze(ctx); + } + } + elements(...types: Array): this { this._elements.push(...types); return this; } - override traverse(visitor: (node: SyntaxNode) => void): void { - super.traverse(visitor); - } - protected override _render() { return ts.factory.createTupleTypeNode( this._elements.map((t) => this.$type(t)), diff --git a/specs/3.1.x/openai.yaml b/specs/3.1.x/openai.yaml index 788c4eb55..e0d0260f9 100644 --- a/specs/3.1.x/openai.yaml +++ b/specs/3.1.x/openai.yaml @@ -4113,7 +4113,7 @@ paths: } description: > **Starting a new project?** We recommend trying - [Responses](https://platform.openai.com/docs/api-reference/responses) + [Responses](https://platform.openai.com/docs/api-reference/responses) to take advantage of the latest OpenAI platform features. Compare @@ -4136,9 +4136,9 @@ paths: response, particularly for newer reasoning models. Parameters that are only - supported for reasoning models are noted below. For the current state of + supported for reasoning models are noted below. For the current state of - unsupported parameters in reasoning models, + unsupported parameters in reasoning models, [refer to the reasoning guide](https://platform.openai.com/docs/guides/reasoning). /chat/completions/{completion_id}: @@ -14566,7 +14566,7 @@ paths: ], } description: | - Deactivate certificates at the project level. You can atomically and + Deactivate certificates at the project level. You can atomically and idempotently deactivate up to 10 certificates at a time. /organization/projects/{project_id}/rate_limits: get: @@ -16592,7 +16592,7 @@ paths: "speed": 1.1, "tracing": "auto", "client_secret": { - "value": "ek_abc123", + "value": "ek_abc123", "expires_at": 1234567890 } } @@ -16739,7 +16739,7 @@ paths: } description: | Create an ephemeral API token for use in client-side applications with the - Realtime API specifically for realtime transcriptions. + Realtime API specifically for realtime transcriptions. Can be configured with the same session parameters as the `transcription_session.update` client event. It responds with a session object, plus a `client_secret` key which contains @@ -18885,7 +18885,7 @@ paths: puts(response) description: | Cancels a model response with the given ID. Only responses created with - the `background` parameter set to `true` can be cancelled. + the `background` parameter set to `true` can be cancelled. [Learn more](https://platform.openai.com/docs/guides/background). /responses/{response_id}/input_items: get: @@ -23170,9 +23170,9 @@ paths: File object. - For certain `purpose` values, the correct `mime_type` must be specified. + For certain `purpose` values, the correct `mime_type` must be specified. - Please refer to documentation for the + Please refer to documentation for the [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files). @@ -23433,7 +23433,7 @@ paths: puts(upload) description: > - Completes the [Upload](https://platform.openai.com/docs/api-reference/uploads/object). + Completes the [Upload](https://platform.openai.com/docs/api-reference/uploads/object). Within the returned Upload object, there is a nested @@ -23575,7 +23575,7 @@ paths: description: > Adds a [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object. A Part represents a - chunk of bytes from the file you are trying to upload. + chunk of bytes from the file you are trying to upload. Each Part can be at most 64 MB, and you can add Parts until you hit the Upload maximum of 8 GB. @@ -25849,7 +25849,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. batch_completed: post: @@ -25862,7 +25862,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. batch_expired: post: @@ -25875,7 +25875,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. batch_failed: post: @@ -25888,7 +25888,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. eval_run_canceled: post: @@ -25901,7 +25901,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. eval_run_failed: post: @@ -25914,7 +25914,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. eval_run_succeeded: post: @@ -25927,7 +25927,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. fine_tuning_job_cancelled: post: @@ -25940,7 +25940,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. fine_tuning_job_failed: post: @@ -25953,7 +25953,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. fine_tuning_job_succeeded: post: @@ -25966,7 +25966,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. response_cancelled: post: @@ -25979,7 +25979,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. response_completed: post: @@ -25992,7 +25992,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. response_failed: post: @@ -26005,7 +26005,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. response_incomplete: post: @@ -26018,7 +26018,7 @@ webhooks: responses: '200': description: | - Return a 200 status code to acknowledge receipt of the event. Non-200 + Return a 200 status code to acknowledge receipt of the event. Non-200 status codes will be retried. components: schemas: @@ -27592,7 +27592,7 @@ components: nullable: true description: > If a content parts array was provided, this is an array of `text` and `image_url` - parts. + parts. Otherwise, null. items: @@ -27822,7 +27822,7 @@ components: type: object nullable: true description: | - Data about a previous audio response from the model. + Data about a previous audio response from the model. [Learn more](https://platform.openai.com/docs/guides/audio). required: - id @@ -27986,12 +27986,12 @@ components: filename: type: string description: | - The name of the file, used when passing the file to the model as a + The name of the file, used when passing the file to the model as a string. file_data: type: string description: | - The base64 encoded file data, used when passing the file to the model + The base64 encoded file data, used when passing the file to the model as a string. file_id: type: string @@ -28528,7 +28528,7 @@ components: - click default: click description: | - Specifies the event type. For a click action, this property is + Specifies the event type. For a click action, this property is always set to `click`. x-stainless-const: true button: @@ -28740,7 +28740,7 @@ components: propertyName: type nullable: true description: | - The outputs generated by the code interpreter, such as logs or images. + The outputs generated by the code interpreter, such as logs or images. Can be null if no outputs are available. required: - type @@ -28915,7 +28915,7 @@ components: - computer_screenshot default: computer_screenshot description: | - Specifies the event type. For a computer screenshot, this property is + Specifies the event type. For a computer screenshot, this property is always set to `computer_screenshot`. x-stainless-const: true image_url: @@ -28930,7 +28930,7 @@ components: type: object title: Computer tool call description: | - A tool call to a computer use tool. See the + A tool call to a computer use tool. See the [computer use guide](https://platform.openai.com/docs/guides/tools-computer-use) for more information. properties: type: @@ -28995,7 +28995,7 @@ components: acknowledged_safety_checks: type: array description: | - The safety checks reported by the API that have been acknowledged by the + The safety checks reported by the API that have been acknowledged by the developer. items: $ref: '#/components/schemas/ComputerToolCallSafetyCheck' @@ -29916,7 +29916,7 @@ components: type: object description: | Represents a streamed chunk of a chat completion response returned - by the model, based on the provided input. + by the model, based on the provided input. [Learn more](https://platform.openai.com/docs/guides/streaming-responses). properties: id: @@ -31354,10 +31354,10 @@ components: description: | The image(s) to edit. Must be a supported image file or an array of images. - For `gpt-image-1`, each image should be a `png`, `webp`, or `jpg` file less + For `gpt-image-1`, each image should be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16 images. - For `dall-e-2`, you can only provide one image, and it should be a square + For `dall-e-2`, you can only provide one image, and it should be a square `png` file less than 4MB. x-oaiMeta: exampleFilePath: otter.png @@ -31386,12 +31386,12 @@ components: example: transparent nullable: true description: | - Allows to set transparency for the background of the generated image(s). - This parameter is only supported for `gpt-image-1`. Must be one of - `transparent`, `opaque` or `auto` (default value). When `auto` is used, the + Allows to set transparency for the background of the generated image(s). + This parameter is only supported for `gpt-image-1`. Must be one of + `transparent`, `opaque` or `auto` (default value). When `auto` is used, the model will automatically determine the best background for the image. - If `transparent`, the output format needs to support transparency, so it + If `transparent`, the output format needs to support transparency, so it should be set to either `png` (default value) or `webp`. model: anyOf: @@ -31461,8 +31461,8 @@ components: example: 100 nullable: true description: | - The compression level (0-100%) for the generated images. This parameter - is only supported for `gpt-image-1` with the `webp` or `jpeg` output + The compression level (0-100%) for the generated images. This parameter + is only supported for `gpt-image-1` with the `webp` or `jpeg` output formats, and defaults to 100. user: type: string @@ -31478,7 +31478,7 @@ components: example: false nullable: true description: > - Edit the image in streaming mode. Defaults to `false`. See the + Edit the image in streaming mode. Defaults to `false`. See the [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information. @@ -31547,7 +31547,7 @@ components: example: medium nullable: true description: | - The quality of the image that will be generated. + The quality of the image that will be generated. - `auto` (default value) will automatically select the best quality for the given model. - `high`, `medium` and `low` are supported for `gpt-image-1`. @@ -31591,7 +31591,7 @@ components: example: false nullable: true description: > - Generate the image in streaming mode. Defaults to `false`. See the + Generate the image in streaming mode. Defaults to `false`. See the [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information. @@ -31638,12 +31638,12 @@ components: example: transparent nullable: true description: | - Allows to set transparency for the background of the generated image(s). - This parameter is only supported for `gpt-image-1`. Must be one of - `transparent`, `opaque` or `auto` (default value). When `auto` is used, the + Allows to set transparency for the background of the generated image(s). + This parameter is only supported for `gpt-image-1`. Must be one of + `transparent`, `opaque` or `auto` (default value). When `auto` is used, the model will automatically determine the best background for the image. - If `transparent`, the output format needs to support transparency, so it + If `transparent`, the output format needs to support transparency, so it should be set to either `png` (default value) or `webp`. style: type: string @@ -32664,7 +32664,7 @@ components: CreateThreadRequest: type: object description: | - Options to create a new thread. If no thread is provided when running a + Options to create a new thread. If no thread is provided when running a request, an empty thread will be created. additionalProperties: false properties: @@ -32853,7 +32853,7 @@ components: If set to true, the model response data will be streamed to the client as it is generated using [server-sent - events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format). + events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format). See the [Streaming section of the Speech-to-Text guide](https://platform.openai.com/docs/guides/speech-to-text?lang=curl#streaming-transcriptions) @@ -32883,10 +32883,10 @@ components: - segment include: description: | - Additional information to include in the transcription response. - `logprobs` will return the log probabilities of the tokens in the - response to understand the model's confidence in the transcription. - `logprobs` only works with response_format set to `json` and only with + Additional information to include in the transcription response. + `logprobs` will return the log probabilities of the tokens in the + response to understand the model's confidence in the transcription. + `logprobs` only works with response_format set to `json` and only with the models `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. type: array items: @@ -33573,7 +33573,7 @@ components: - double_click default: double_click description: | - Specifies the event type. For a double click action, this property is + Specifies the event type. For a double click action, this property is always set to `double_click`. x-stainless-const: true x: @@ -33600,7 +33600,7 @@ components: - drag default: drag description: | - Specifies the event type. For a drag action, this property is + Specifies the event type. For a drag action, this property is always set to `drag`. x-stainless-const: true path: @@ -35189,7 +35189,7 @@ components: type: object title: File search tool call description: | - The results of a file search tool call. See the + The results of a file search tool call. See the [file search guide](https://platform.openai.com/docs/guides/tools-file-search) for more information. properties: id: @@ -35206,7 +35206,7 @@ components: status: type: string description: | - The status of the file search tool call. One of `in_progress`, + The status of the file search tool call. One of `in_progress`, `searching`, `incomplete` or `failed`, enum: - in_progress @@ -36146,7 +36146,7 @@ components: description: >- The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema - reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. + reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting `parameters` defines a function with an empty parameter list. @@ -36155,7 +36155,7 @@ components: type: object title: Function tool call description: > - A tool call to run a function. See the + A tool call to run a function. See the [function calling guide](https://platform.openai.com/docs/guides/function-calling) for more information. @@ -36578,8 +36578,8 @@ components: - rouge_5 - rouge_l description: | - The evaluation metric to use. One of `cosine`, `fuzzy_match`, `bleu`, - `gleu`, `meteor`, `rouge_1`, `rouge_2`, `rouge_3`, `rouge_4`, `rouge_5`, + The evaluation metric to use. One of `cosine`, `fuzzy_match`, `bleu`, + `gleu`, `meteor`, `rouge_1`, `rouge_2`, `rouge_3`, `rouge_4`, `rouge_5`, or `rouge_l`. required: - type @@ -36991,7 +36991,7 @@ components: - high - auto description: | - The quality of the generated image. One of `low`, `medium`, `high`, + The quality of the generated image. One of `low`, `medium`, `high`, or `auto`. Default: `auto`. default: auto size: @@ -37002,7 +37002,7 @@ components: - 1536x1024 - auto description: | - The size of the generated image. One of `1024x1024`, `1024x1536`, + The size of the generated image. One of `1024x1024`, `1024x1536`, `1536x1024`, or `auto`. Default: `auto`. default: auto output_format: @@ -37012,7 +37012,7 @@ components: - webp - jpeg description: | - The output format of the generated image. One of `png`, `webp`, or + The output format of the generated image. One of `png`, `webp`, or `jpeg`. Default: `png`. default: png output_compression: @@ -37037,7 +37037,7 @@ components: - opaque - auto description: | - Background type for the generated image. One of `transparent`, + Background type for the generated image. One of `transparent`, `opaque`, or `auto`. Default: `auto`. default: auto input_fidelity: @@ -37045,7 +37045,7 @@ components: input_image_mask: type: object description: | - Optional mask for inpainting. Contains `image_url` + Optional mask for inpainting. Contains `image_url` (string, optional) and `file_id` (string, optional). properties: image_url: @@ -37284,7 +37284,7 @@ components: - type: object title: Item description: | - An item representing part of the context for the response to be + An item representing part of the context for the response to be generated by the model. Can contain text, images, and audio inputs, as well as previous assistant responses and tool call outputs. $ref: '#/components/schemas/Item' @@ -37330,7 +37330,7 @@ components: type: array title: Input item content list description: | - A list of one or many input items to the model, containing different content + A list of one or many input items to the model, containing different content types. items: $ref: '#/components/schemas/InputContent' @@ -37563,7 +37563,7 @@ components: - keypress default: keypress description: | - Specifies the event type. For a keypress action, this property is + Specifies the event type. For a keypress action, this property is always set to `keypress`. x-stainless-const: true keys: @@ -38307,7 +38307,7 @@ components: type: object title: MCP tool description: | - Give the model access to additional tools via remote Model Context Protocol + Give the model access to additional tools via remote Model Context Protocol (MCP) servers. [Learn more about MCP](https://platform.openai.com/docs/guides/tools-remote-mcp). properties: type: @@ -38390,8 +38390,8 @@ components: - type: string title: MCP tool approval setting description: | - Specify a single approval policy for all tools. One of `always` or - `never`. When set to `always`, all tools will require approval. When + Specify a single approval policy for all tools. One of `always` or + `never`. When set to `always`, all tools will require approval. When set to `never`, all tools will not require approval. enum: - always @@ -39116,7 +39116,7 @@ components: description: | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured - format, and querying for objects via API or the dashboard. + format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. @@ -39230,7 +39230,7 @@ components: This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations. - A stable identifier for your end-users. + A stable identifier for your end-users. Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn @@ -39240,7 +39240,7 @@ components: example: safety-identifier-1234 description: > A stable identifier used to help detect users of your application that may be violating OpenAI's - usage policies. + usage policies. The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn @@ -39427,7 +39427,7 @@ components: - move default: move description: | - Specifies the event type. For a move action, this property is + Specifies the event type. For a move action, this property is always set to `move`. x-stainless-const: true x: @@ -39646,7 +39646,7 @@ components: streaming responses that return partial images. Value must be between 0 and 3. When set to 0, the response will be a single image sent in one streaming event. - Note that the final image may be sent before the full number of partial images + Note that the final image may be sent before the full number of partial images are generated if the full image is generated more quickly. PredictionContent: type: object @@ -40230,7 +40230,7 @@ components: type: object nullable: true description: | - Reference to a prompt template and its variables. + Reference to a prompt template and its variables. [Learn more](https://platform.openai.com/docs/guides/text?api-mode=responses#reusable-prompts). required: - id @@ -40265,12 +40265,12 @@ components: RealtimeClientEventConversationItemCreate: type: object description: | - Add a new Item to the Conversation's context, including messages, function - calls, and function call responses. This event can be used both to populate a - "history" of the conversation and to add new items mid-stream, but has the + Add a new Item to the Conversation's context, including messages, function + calls, and function call responses. This event can be used both to populate a + "history" of the conversation and to add new items mid-stream, but has the current limitation that it cannot populate assistant audio messages. - If successful, the server will respond with a `conversation.item.created` + If successful, the server will respond with a `conversation.item.created` event, otherwise an `error` event will be sent. properties: event_id: @@ -40283,7 +40283,7 @@ components: previous_item_id: type: string description: | - The ID of the preceding item after which the new item will be inserted. + The ID of the preceding item after which the new item will be inserted. If not set, the new item will be appended to the end of the conversation. If set to `root`, the new item will be added to the beginning of the conversation. If set to an existing ID, it allows an item to be inserted mid-conversation. If the @@ -40316,9 +40316,9 @@ components: RealtimeClientEventConversationItemDelete: type: object description: | - Send this event when you want to remove any item from the conversation - history. The server will respond with a `conversation.item.deleted` event, - unless the item does not exist in the conversation history, in which case the + Send this event when you want to remove any item from the conversation + history. The server will respond with a `conversation.item.deleted` event, + unless the item does not exist in the conversation history, in which case the server will respond with an error. properties: event_id: @@ -40350,9 +40350,9 @@ components: conversation history. This is useful, for example, to inspect user audio after noise cancellation and VAD. - The server will respond with a `conversation.item.retrieved` event, + The server will respond with a `conversation.item.retrieved` event, - unless the item does not exist in the conversation history, in which case the + unless the item does not exist in the conversation history, in which case the server will respond with an error. properties: @@ -40381,16 +40381,16 @@ components: RealtimeClientEventConversationItemTruncate: type: object description: | - Send this event to truncate a previous assistant message’s audio. The server - will produce audio faster than realtime, so this event is useful when the user - interrupts to truncate audio that has already been sent to the client but not - yet played. This will synchronize the server's understanding of the audio with + Send this event to truncate a previous assistant message’s audio. The server + will produce audio faster than realtime, so this event is useful when the user + interrupts to truncate audio that has already been sent to the client but not + yet played. This will synchronize the server's understanding of the audio with the client's playback. - Truncating audio will delete the server-side text transcript to ensure there + Truncating audio will delete the server-side text transcript to ensure there is not text in the context that hasn't been heard by the user. - If successful, the server will respond with a `conversation.item.truncated` + If successful, the server will respond with a `conversation.item.truncated` event. properties: event_id: @@ -40403,7 +40403,7 @@ components: item_id: type: string description: | - The ID of the assistant message item to truncate. Only assistant message + The ID of the assistant message item to truncate. Only assistant message items can be truncated. content_index: type: integer @@ -40411,8 +40411,8 @@ components: audio_end_ms: type: integer description: | - Inclusive duration up to which audio is truncated, in milliseconds. If - the audio_end_ms is greater than the actual audio duration, the server + Inclusive duration up to which audio is truncated, in milliseconds. If + the audio_end_ms is greater than the actual audio duration, the server will respond with an error. required: - type @@ -40433,15 +40433,15 @@ components: RealtimeClientEventInputAudioBufferAppend: type: object description: | - Send this event to append audio bytes to the input audio buffer. The audio - buffer is temporary storage you can write to and later commit. In Server VAD - mode, the audio buffer is used to detect speech and the server will decide + Send this event to append audio bytes to the input audio buffer. The audio + buffer is temporary storage you can write to and later commit. In Server VAD + mode, the audio buffer is used to detect speech and the server will decide when to commit. When Server VAD is disabled, you must commit the audio buffer manually. - The client may choose how much audio to place in each event up to a maximum - of 15 MiB, for example streaming smaller chunks from the client may allow the - VAD to be more responsive. Unlike made other client events, the server will + The client may choose how much audio to place in each event up to a maximum + of 15 MiB, for example streaming smaller chunks from the client may allow the + VAD to be more responsive. Unlike made other client events, the server will not send a confirmation response to this event. properties: event_id: @@ -40454,7 +40454,7 @@ components: audio: type: string description: | - Base64-encoded audio bytes. This must be in the format specified by the + Base64-encoded audio bytes. This must be in the format specified by the `input_audio_format` field in the session configuration. required: - type @@ -40471,7 +40471,7 @@ components: RealtimeClientEventInputAudioBufferClear: type: object description: | - Send this event to clear the audio bytes in the buffer. The server will + Send this event to clear the audio bytes in the buffer. The server will respond with an `input_audio_buffer.cleared` event. properties: event_id: @@ -40494,15 +40494,15 @@ components: RealtimeClientEventInputAudioBufferCommit: type: object description: | - Send this event to commit the user input audio buffer, which will create a - new user message item in the conversation. This event will produce an error - if the input audio buffer is empty. When in Server VAD mode, the client does - not need to send this event, the server will commit the audio buffer + Send this event to commit the user input audio buffer, which will create a + new user message item in the conversation. This event will produce an error + if the input audio buffer is empty. When in Server VAD mode, the client does + not need to send this event, the server will commit the audio buffer automatically. - Committing the input audio buffer will trigger input audio transcription - (if enabled in session configuration), but it will not create a response - from the model. The server will respond with an `input_audio_buffer.committed` + Committing the input audio buffer will trigger input audio transcription + (if enabled in session configuration), but it will not create a response + from the model. The server will respond with an `input_audio_buffer.committed` event. properties: event_id: @@ -40527,9 +40527,9 @@ components: description: > **WebRTC Only:** Emit to cut off the current audio response. This will trigger the server to - stop generating audio and emit a `output_audio_buffer.cleared` event. This + stop generating audio and emit a `output_audio_buffer.cleared` event. This - event should be preceded by a `response.cancel` client event to stop the + event should be preceded by a `response.cancel` client event to stop the generation of the current response. @@ -40556,8 +40556,8 @@ components: RealtimeClientEventResponseCancel: type: object description: | - Send this event to cancel an in-progress response. The server will respond - with a `response.done` event with a status of `response.status=cancelled`. If + Send this event to cancel an in-progress response. The server will respond + with a `response.done` event with a status of `response.status=cancelled`. If there is no response to cancel, the server will respond with an error. properties: event_id: @@ -40570,7 +40570,7 @@ components: response_id: type: string description: | - A specific response ID to cancel - if not provided, will cancel an + A specific response ID to cancel - if not provided, will cancel an in-progress response in the default conversation. required: - type @@ -40585,20 +40585,20 @@ components: RealtimeClientEventResponseCreate: type: object description: | - This event instructs the server to create a Response, which means triggering - model inference. When in Server VAD mode, the server will create Responses + This event instructs the server to create a Response, which means triggering + model inference. When in Server VAD mode, the server will create Responses automatically. - A Response will include at least one Item, and may have two, in which case - the second will be a function call. These Items will be appended to the + A Response will include at least one Item, and may have two, in which case + the second will be a function call. These Items will be appended to the conversation history. - The server will respond with a `response.created` event, events for Items - and content created, and finally a `response.done` event to indicate the + The server will respond with a `response.created` event, events for Items + and content created, and finally a `response.done` event to indicate the Response is complete. - The `response.create` event includes inference configuration like - `instructions`, and `temperature`. These fields will override the Session's + The `response.create` event includes inference configuration like + `instructions`, and `temperature`. These fields will override the Session's configuration for this Response only. properties: event_id: @@ -40766,8 +40766,8 @@ components: id: type: string description: | - The unique ID of the item, this can be generated by the client to help - manage server-side context, but is not required because the server will + The unique ID of the item, this can be generated by the client to help + manage server-side context, but is not required because the server will generate one if not provided. type: type: string @@ -40791,8 +40791,8 @@ components: - incomplete - in_progress description: | - The status of the item (`completed`, `incomplete`, `in_progress`). These have no effect - on the conversation, but are accepted for consistency with the + The status of the item (`completed`, `incomplete`, `in_progress`). These have no effect + on the conversation, but are accepted for consistency with the `conversation.item.created` event. role: type: string @@ -40801,14 +40801,14 @@ components: - assistant - system description: | - The role of the message sender (`user`, `assistant`, `system`), only + The role of the message sender (`user`, `assistant`, `system`), only applicable for `message` items. content: type: array description: | - The content of the message, applicable for `message` items. + The content of the message, applicable for `message` items. - Message items of role `system` support only `input_text` content - - Message items of role `user` support `input_text` and `input_audio` + - Message items of role `user` support `input_text` and `input_audio` content - Message items of role `assistant` support `text` content. items: @@ -40816,9 +40816,9 @@ components: call_id: type: string description: | - The ID of the function call (for `function_call` and - `function_call_output` items). If passed on a `function_call_output` - item, the server will check that a `function_call` item with the same + The ID of the function call (for `function_call` and + `function_call_output` items). If passed on a `function_call_output` + item, the server will check that a `function_call` item with the same ID exists in the conversation history. name: type: string @@ -40868,8 +40868,8 @@ components: - incomplete - in_progress description: | - The status of the item (`completed`, `incomplete`, `in_progress`). These have no effect - on the conversation, but are accepted for consistency with the + The status of the item (`completed`, `incomplete`, `in_progress`). These have no effect + on the conversation, but are accepted for consistency with the `conversation.item.created` event. role: type: string @@ -40878,14 +40878,14 @@ components: - assistant - system description: | - The role of the message sender (`user`, `assistant`, `system`), only + The role of the message sender (`user`, `assistant`, `system`), only applicable for `message` items. content: type: array description: | - The content of the message, applicable for `message` items. + The content of the message, applicable for `message` items. - Message items of role `system` support only `input_text` content - - Message items of role `user` support `input_text` and `input_audio` + - Message items of role `user` support `input_text` and `input_audio` content - Message items of role `assistant` support `text` content. items: @@ -40921,9 +40921,9 @@ components: call_id: type: string description: | - The ID of the function call (for `function_call` and - `function_call_output` items). If passed on a `function_call_output` - item, the server will check that a `function_call` item with the same + The ID of the function call (for `function_call` and + `function_call_output` items). If passed on a `function_call_output` + item, the server will check that a `function_call` item with the same ID exists in the conversation history. name: type: string @@ -40957,7 +40957,7 @@ components: - incomplete - in_progress description: | - The final status of the response (`completed`, `cancelled`, `failed`, or + The final status of the response (`completed`, `cancelled`, `failed`, or `incomplete`, `in_progress`). status_details: type: object @@ -40971,8 +40971,8 @@ components: - incomplete - failed description: | - The type of error that caused the response to fail, corresponding - with the `status` field (`completed`, `cancelled`, `incomplete`, + The type of error that caused the response to fail, corresponding + with the `status` field (`completed`, `cancelled`, `incomplete`, `failed`). reason: type: string @@ -40982,15 +40982,15 @@ components: - max_output_tokens - content_filter description: | - The reason the Response did not complete. For a `cancelled` Response, - one of `turn_detected` (the server VAD detected a new start of speech) - or `client_cancelled` (the client sent a cancel event). For an - `incomplete` Response, one of `max_output_tokens` or `content_filter` + The reason the Response did not complete. For a `cancelled` Response, + one of `turn_detected` (the server VAD detected a new start of speech) + or `client_cancelled` (the client sent a cancel event). For an + `incomplete` Response, one of `max_output_tokens` or `content_filter` (the server-side safety filter activated and cut off the response). error: type: object description: | - A description of the error that caused the response to fail, + A description of the error that caused the response to fail, populated when the `status` is `failed`. properties: type: @@ -41009,25 +41009,25 @@ components: usage: type: object description: | - Usage statistics for the Response, this will correspond to billing. A - Realtime API session will maintain a conversation context and append new - Items to the Conversation, thus output from previous turns (text and + Usage statistics for the Response, this will correspond to billing. A + Realtime API session will maintain a conversation context and append new + Items to the Conversation, thus output from previous turns (text and audio tokens) will become the input for later turns. properties: total_tokens: type: integer description: | - The total number of tokens in the Response including input and output + The total number of tokens in the Response including input and output text and audio tokens. input_tokens: type: integer description: | - The number of input tokens used in the Response, including text and + The number of input tokens used in the Response, including text and audio tokens. output_tokens: type: integer description: | - The number of output tokens sent in the Response, including text and + The number of output tokens sent in the Response, including text and audio tokens. input_token_details: type: object @@ -41118,23 +41118,23 @@ components: instructions: type: string description: | - The default system instructions (i.e. system message) prepended to model - calls. This field allows the client to guide the model on desired - responses. The model can be instructed on response content and format, - (e.g. "be extremely succinct", "act friendly", "here are examples of good - responses") and on audio behavior (e.g. "talk quickly", "inject emotion - into your voice", "laugh frequently"). The instructions are not guaranteed - to be followed by the model, but they provide guidance to the model on the + The default system instructions (i.e. system message) prepended to model + calls. This field allows the client to guide the model on desired + responses. The model can be instructed on response content and format, + (e.g. "be extremely succinct", "act friendly", "here are examples of good + responses") and on audio behavior (e.g. "talk quickly", "inject emotion + into your voice", "laugh frequently"). The instructions are not guaranteed + to be followed by the model, but they provide guidance to the model on the desired behavior. - Note that the server sets default instructions which will be used if this - field is not set and are visible in the `session.created` event at the + Note that the server sets default instructions which will be used if this + field is not set and are visible in the `session.created` event at the start of the session. voice: $ref: '#/components/schemas/VoiceIdsShared' description: | - The voice the model uses to respond. Voice cannot be changed during the - session once the model has responded with audio at least once. Current + The voice the model uses to respond. Voice cannot be changed during the + session once the model has responded with audio at least once. Current voice options are `alloy`, `ash`, `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`. output_audio_format: @@ -41163,8 +41163,8 @@ components: description: type: string description: | - The description of the function, including guidance on when and how - to call it, and guidance about what to tell the user when calling + The description of the function, including guidance on when and how + to call it, and guidance about what to tell the user when calling (if anything). parameters: type: object @@ -41172,7 +41172,7 @@ components: tool_choice: type: string description: | - How the model chooses tools. Options are `auto`, `none`, `required`, or + How the model chooses tools. Options are `auto`, `none`, `required`, or specify a function, like `{"type": "function", "function": {"name": "my_function"}}`. temperature: type: number @@ -41195,7 +41195,7 @@ components: Controls which conversation the response is added to. Currently supports `auto` and `none`, with `auto` as the default value. The `auto` value means that the contents of the response will be added to the default - conversation. Set this to `none` to create an out-of-band response which + conversation. Set this to `none` to create an out-of-band response which will not add items to default conversation. anyOf: - type: string @@ -41297,13 +41297,13 @@ components: type: object description: | Returned when a conversation item is created. There are several scenarios that produce this event: - - The server is generating a Response, which if successful will produce - either one or two Items, which will be of type `message` + - The server is generating a Response, which if successful will produce + either one or two Items, which will be of type `message` (role `assistant`) or type `function_call`. - - The input audio buffer has been committed, either by the client or the - server (in `server_vad` mode). The server will take the content of the + - The input audio buffer has been committed, either by the client or the + server (in `server_vad` mode). The server will take the content of the input audio buffer and add it to a new user message Item. - - The client has sent a `conversation.item.create` event to add a new Item + - The client has sent a `conversation.item.create` event to add a new Item to the Conversation. properties: event_id: @@ -41317,8 +41317,8 @@ components: type: string nullable: true description: | - The ID of the preceding item in the Conversation context, allows the - client to understand the order of the conversation. Can be `null` if the + The ID of the preceding item in the Conversation context, allows the + client to understand the order of the conversation. Can be `null` if the item has no predecessor. item: $ref: '#/components/schemas/RealtimeConversationItem' @@ -41346,8 +41346,8 @@ components: RealtimeServerEventConversationItemDeleted: type: object description: | - Returned when an item in the conversation is deleted by the client with a - `conversation.item.delete` event. This event is used to synchronize the + Returned when an item in the conversation is deleted by the client with a + `conversation.item.delete` event. This event is used to synchronize the server's understanding of the conversation history with the client's view. properties: event_id: @@ -41494,8 +41494,8 @@ components: RealtimeServerEventConversationItemInputAudioTranscriptionFailed: type: object description: | - Returned when input audio transcription is configured, and a transcription - request for a user message failed. These events are separate from other + Returned when input audio transcription is configured, and a transcription + request for a user message failed. These events are separate from other `error` events so that the client can identify the related Item. properties: event_id: @@ -41597,11 +41597,11 @@ components: RealtimeServerEventConversationItemTruncated: type: object description: | - Returned when an earlier assistant audio message item is truncated by the - client with a `conversation.item.truncate` event. This event is used to + Returned when an earlier assistant audio message item is truncated by the + client with a `conversation.item.truncate` event. This event is used to synchronize the server's understanding of the audio with the client's playback. - This action will truncate the audio and remove the server-side text transcript + This action will truncate the audio and remove the server-side text transcript to ensure there is no text in the context that hasn't been heard by the user. properties: event_id: @@ -41641,8 +41641,8 @@ components: RealtimeServerEventError: type: object description: | - Returned when an error occurs, which could be a client problem or a server - problem. Most errors are recoverable and the session will stay open, we + Returned when an error occurs, which could be a client problem or a server + problem. Most errors are recoverable and the session will stay open, we recommend to implementors to monitor and log error messages by default. properties: event_id: @@ -41701,7 +41701,7 @@ components: RealtimeServerEventInputAudioBufferCleared: type: object description: | - Returned when the input audio buffer is cleared by the client with a + Returned when the input audio buffer is cleared by the client with a `input_audio_buffer.clear` event. properties: event_id: @@ -41725,9 +41725,9 @@ components: RealtimeServerEventInputAudioBufferCommitted: type: object description: | - Returned when an input audio buffer is committed, either by the client or + Returned when an input audio buffer is committed, either by the client or automatically in server VAD mode. The `item_id` property is the ID of the user - message item that will be created, thus a `conversation.item.created` event + message item that will be created, thus a `conversation.item.created` event will also be sent to the client. properties: event_id: @@ -41763,15 +41763,15 @@ components: RealtimeServerEventInputAudioBufferSpeechStarted: type: object description: | - Sent by the server when in `server_vad` mode to indicate that speech has been - detected in the audio buffer. This can happen any time audio is added to the - buffer (unless speech is already detected). The client may want to use this - event to interrupt audio playback or provide visual feedback to the user. + Sent by the server when in `server_vad` mode to indicate that speech has been + detected in the audio buffer. This can happen any time audio is added to the + buffer (unless speech is already detected). The client may want to use this + event to interrupt audio playback or provide visual feedback to the user. - The client should expect to receive a `input_audio_buffer.speech_stopped` event - when speech stops. The `item_id` property is the ID of the user message item - that will be created when speech stops and will also be included in the - `input_audio_buffer.speech_stopped` event (unless the client manually commits + The client should expect to receive a `input_audio_buffer.speech_stopped` event + when speech stops. The `item_id` property is the ID of the user message item + that will be created when speech stops and will also be included in the + `input_audio_buffer.speech_stopped` event (unless the client manually commits the audio buffer during VAD activation). properties: event_id: @@ -41784,9 +41784,9 @@ components: audio_start_ms: type: integer description: | - Milliseconds from the start of all audio written to the buffer during the - session when speech was first detected. This will correspond to the - beginning of audio sent to the model, and thus includes the + Milliseconds from the start of all audio written to the buffer during the + session when speech was first detected. This will correspond to the + beginning of audio sent to the model, and thus includes the `prefix_padding_ms` configured in the Session. item_id: type: string @@ -41810,8 +41810,8 @@ components: RealtimeServerEventInputAudioBufferSpeechStopped: type: object description: | - Returned in `server_vad` mode when the server detects the end of speech in - the audio buffer. The server will also send an `conversation.item.created` + Returned in `server_vad` mode when the server detects the end of speech in + the audio buffer. The server will also send an `conversation.item.created` event with the user message item that is created from the audio buffer. properties: event_id: @@ -41824,8 +41824,8 @@ components: audio_end_ms: type: integer description: | - Milliseconds since the session started when speech stopped. This will - correspond to the end of audio sent to the model, and thus includes the + Milliseconds since the session started when speech stopped. This will + correspond to the end of audio sent to the model, and thus includes the `min_silence_duration_ms` configured in the Session. item_id: type: string @@ -41955,9 +41955,9 @@ components: RealtimeServerEventRateLimitsUpdated: type: object description: | - Emitted at the beginning of a Response to indicate the updated rate limits. - When a Response is created some tokens will be "reserved" for the output - tokens, the rate limits shown here reflect that reservation, which is then + Emitted at the beginning of a Response to indicate the updated rate limits. + When a Response is created some tokens will be "reserved" for the output + tokens, the rate limits shown here reflect that reservation, which is then adjusted accordingly once the Response is completed. properties: event_id: @@ -42378,8 +42378,8 @@ components: RealtimeServerEventResponseDone: type: object description: | - Returned when a Response is done streaming. Always emitted, no matter the - final state. The Response object included in the `response.done` event will + Returned when a Response is done streaming. Always emitted, no matter the + final state. The Response object included in the `response.done` event will include all output Items in the Response but will omit the raw audio data. properties: event_id: @@ -42587,7 +42587,7 @@ components: RealtimeServerEventResponseOutputItemDone: type: object description: | - Returned when an Item is done streaming. Also emitted when a Response is + Returned when an Item is done streaming. Also emitted when a Response is interrupted, incomplete, or cancelled. properties: event_id: @@ -42733,8 +42733,8 @@ components: RealtimeServerEventSessionCreated: type: object description: | - Returned when a Session is created. Emitted automatically when a new - connection is established as the first server event. This event will contain + Returned when a Session is created. Emitted automatically when a new + connection is established as the first server event. This event will contain the default Session configuration. properties: event_id: @@ -42784,7 +42784,7 @@ components: RealtimeServerEventSessionUpdated: type: object description: | - Returned when a session is updated with a `session.update` event, unless + Returned when a session is updated with a `session.update` event, unless there is an error. properties: event_id: @@ -42831,7 +42831,7 @@ components: RealtimeServerEventTranscriptionSessionUpdated: type: object description: | - Returned when a transcription session is updated with a `transcription_session.update` event, unless + Returned when a transcription session is updated with a `transcription_session.update` event, unless there is an error. properties: event_id: @@ -43880,7 +43880,7 @@ components: A new Realtime transcription session configuration. When a session is created on the server via REST API, the session object - also contains an ephemeral key. Default TTL for keys is 10 minutes. This + also contains an ephemeral key. Default TTL for keys is 10 minutes. This property is not present when a session is updated via the WebSocket API. properties: client_secret: @@ -43948,8 +43948,8 @@ components: turn_detection: type: object description: | - Configuration for turn detection. Can be set to `null` to turn off. Server - VAD means that the model will detect the start and end of speech based on + Configuration for turn detection. Can be set to `null` to turn off. Server + VAD means that the model will detect the start and end of speech based on audio volume and respond at the end of user speech. properties: type: @@ -43959,19 +43959,19 @@ components: threshold: type: number description: | - Activation threshold for VAD (0.0 to 1.0), this defaults to 0.5. A - higher threshold will require louder audio to activate the model, and + Activation threshold for VAD (0.0 to 1.0), this defaults to 0.5. A + higher threshold will require louder audio to activate the model, and thus might perform better in noisy environments. prefix_padding_ms: type: integer description: | - Amount of audio to include before the VAD detected speech (in + Amount of audio to include before the VAD detected speech (in milliseconds). Defaults to 300ms. silence_duration_ms: type: integer description: | - Duration of silence to detect speech stop (in milliseconds). Defaults - to 500ms. With shorter values the model will respond more quickly, + Duration of silence to detect speech stop (in milliseconds). Defaults + to 500ms. With shorter values the model will respond more quickly, but may jump in on short pauses from the user. required: - client_secret @@ -44044,7 +44044,7 @@ components: default: medium nullable: true description: | - Constrains effort on reasoning for + Constrains effort on reasoning for [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning effort can result in faster responses and fewer tokens used @@ -44054,7 +44054,7 @@ components: description: | A description of the chain of thought used by a reasoning model while generating a response. Be sure to include these items in your `input` to the Responses API - for subsequent turns of a conversation if you are manually + for subsequent turns of a conversation if you are manually [managing context](https://platform.openai.com/docs/guides/conversation-state). title: Reasoning properties: @@ -44151,7 +44151,7 @@ components: status: type: string description: | - The status of the response generation. One of `completed`, `failed`, + The status of the response generation. One of `completed`, `failed`, `in_progress`, `cancelled`, `queued`, or `incomplete`. enum: - completed @@ -44185,7 +44185,7 @@ components: - The length and order of items in the `output` array is dependent on the model's response. - - Rather than accessing the first item in the `output` array and + - Rather than accessing the first item in the `output` array and assuming it's an `assistant` message with the content generated by the model, you might consider using the `output_text` property where supported in SDKs. @@ -44202,12 +44202,12 @@ components: anyOf: - type: string description: | - A text input to the model, equivalent to a text input with the + A text input to the model, equivalent to a text input with the `developer` role. - type: array title: Input item list description: | - A list of one or many input items to the model, containing + A list of one or many input items to the model, containing different content types. items: $ref: '#/components/schemas/InputItem' @@ -44215,8 +44215,8 @@ components: type: string nullable: true description: | - SDK-only convenience property that contains the aggregated text output - from all `output_text` items in the `output` array, if any are present. + SDK-only convenience property that contains the aggregated text output + from all `output_text` items in the `output` array, if any are present. Supported in the Python and JavaScript SDKs. x-oaiSupportedSDKs: - python @@ -45577,7 +45577,7 @@ components: "object": "response", "created_at": 1740855869, "status": "incomplete", - "error": null, + "error": null, "incomplete_details": { "reason": "max_tokens" }, @@ -45658,8 +45658,8 @@ components: ResponseLogProb: type: object description: | - A logprob is the logarithmic probability that the model assigns to producing - a particular token at a given position in the sequence. Less-negative (higher) + A logprob is the logarithmic probability that the model assigns to producing + a particular token at a given position in the sequence. Less-negative (higher) logprob values indicate greater model confidence in that token choice. properties: token: @@ -45994,8 +45994,8 @@ components: `["text"]` - The `gpt-4o-audio-preview` model can also be used to - [generate audio](https://platform.openai.com/docs/guides/audio). To request that this model generate + The `gpt-4o-audio-preview` model can also be used to + [generate audio](https://platform.openai.com/docs/guides/audio). To request that this model generate both text and audio responses, you can use: `["text", "audio"]` @@ -46946,7 +46946,7 @@ components: cached_tokens: type: integer description: | - The number of tokens that were retrieved from the cache. + The number of tokens that were retrieved from the cache. [More on prompt caching](https://platform.openai.com/docs/guides/prompt-caching). required: - cached_tokens @@ -47120,19 +47120,19 @@ components: item: type: object description: > - The dataset item provided to the grader. This will be used to populate + The dataset item provided to the grader. This will be used to populate the `item` namespace. See [the guide](https://platform.openai.com/docs/guides/graders) for more details. model_sample: type: string description: > - The model sample to be evaluated. This value will be used to populate + The model sample to be evaluated. This value will be used to populate the `sample` namespace. See [the guide](https://platform.openai.com/docs/guides/graders) for more details. - The `output_json` variable will be populated if the model sample is a + The `output_json` variable will be populated if the model sample is a valid JSON string. @@ -48425,7 +48425,7 @@ components: - screenshot default: screenshot description: | - Specifies the event type. For a screenshot action, this property is + Specifies the event type. For a screenshot action, this property is always set to `screenshot`. x-stainless-const: true required: @@ -48442,7 +48442,7 @@ components: - scroll default: scroll description: | - Specifies the event type. For a scroll action, this property is + Specifies the event type. For a scroll action, this property is always set to `scroll`. x-stainless-const: true x: @@ -48657,8 +48657,8 @@ components: description: | An object specifying the format that the model must output. - Configuring `{ "type": "json_schema" }` enables Structured Outputs, - which ensures the model will match your supplied JSON schema. Learn more in the + Configuring `{ "type": "json_schema" }` enables Structured Outputs, + which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs). The default format is `{ "type": "text" }` with no additional options. @@ -49281,7 +49281,7 @@ components: - type default: type description: | - Specifies the event type. For a type action, this property is + Specifies the event type. For a type action, this property is always set to `type`. x-stainless-const: true text: @@ -49978,21 +49978,21 @@ components: type: integer default: 300 description: | - Amount of audio to include before the VAD detected speech (in + Amount of audio to include before the VAD detected speech (in milliseconds). silence_duration_ms: type: integer default: 200 description: | Duration of silence to detect speech stop (in milliseconds). - With shorter values the model will respond more quickly, + With shorter values the model will respond more quickly, but may jump in on short pauses from the user. threshold: type: number default: 0.5 description: | - Sensitivity threshold (0.0 to 1.0) for voice activity detection. A - higher threshold will require louder audio to activate the model, and + Sensitivity threshold (0.0 to 1.0) for voice activity detection. A + higher threshold will require louder audio to activate the model, and thus might perform better in noisy environments. ValidateGraderRequest: type: object @@ -50044,10 +50044,10 @@ components: VectorStoreFileAttributes: type: object description: | - Set of 16 key-value pairs that can be attached to an object. This can be - useful for storing additional information about the object in a structured - format, and querying for objects via API or the dashboard. Keys are strings - with a maximum length of 64 characters. Values are strings with a maximum + Set of 16 key-value pairs that can be attached to an object. This can be + useful for storing additional information about the object in a structured + format, and querying for objects via API or the dashboard. Keys are strings + with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. maxProperties: 16 propertyNames: @@ -50532,7 +50532,7 @@ components: - wait default: wait description: | - Specifies the event type. For a wait action, this property is + Specifies the event type. For a wait action, this property is always set to `wait`. x-stainless-const: true required: @@ -50607,7 +50607,7 @@ components: WebSearchContextSize: type: string description: | - High level guidance for the amount of context window space to use for the + High level guidance for the amount of context window space to use for the search. One of `low`, `medium`, or `high`. `medium` is the default. enum: - low @@ -50622,7 +50622,7 @@ components: country: type: string description: | - The two-letter + The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of the user, e.g. `US`. region: @@ -50636,13 +50636,13 @@ components: timezone: type: string description: | - The [IANA timezone](https://timeapi.io/documentation/iana-timezones) + The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the user, e.g. `America/Los_Angeles`. WebSearchToolCall: type: object title: Web search tool call description: | - The results of a web search tool call. See the + The results of a web search tool call. See the [web search guide](https://platform.openai.com/docs/guides/tools-web-search) for more information. properties: id: @@ -52116,7 +52116,7 @@ components: transcript: type: string description: | - The transcript of the audio, used for `input_audio` and `audio` + The transcript of the audio, used for `input_audio` and `audio` content types. RealtimeConnectParams: type: object @@ -52893,7 +52893,7 @@ x-oaiMeta: title: Webhook Events description: | Webhooks are HTTP requests sent by OpenAI to a URL you specify when certain - events happen during the course of API usage. + events happen during the course of API usage. [Learn more about webhooks](https://platform.openai.com/docs/guides/webhooks). navigationGroup: webhooks From 2ecc70c1c58809f8877288b47fdb6cfe90acccf7 Mon Sep 17 00:00:00 2001 From: Lubos Date: Sat, 29 Nov 2025 04:01:57 +0800 Subject: [PATCH 06/15] chore: clean up --- dev/openapi-ts.config.ts | 86 +- .../src/client/index.ts | 131 +- .../src/client/types.gen.ts | 8 +- .../openapi-ts-angular/src/client/index.ts | 85 +- .../src/client/types.gen.ts | 8 +- examples/openapi-ts-axios/src/client/index.ts | 106 +- .../openapi-ts-axios/src/client/types.gen.ts | 8 +- .../openapi-ts-fastify/src/client/index.ts | 23 +- .../src/client/types.gen.ts | 8 +- examples/openapi-ts-fetch/src/client/index.ts | 106 +- .../openapi-ts-fetch/src/client/types.gen.ts | 8 +- examples/openapi-ts-ky/src/client/index.ts | 106 +- .../openapi-ts-ky/src/client/types.gen.ts | 8 +- examples/openapi-ts-next/src/client/index.ts | 106 +- .../openapi-ts-next/src/client/types.gen.ts | 8 +- .../openapi-ts-ofetch/src/client/index.ts | 106 +- .../openapi-ts-ofetch/src/client/types.gen.ts | 8 +- .../openapi-ts-openai/src/client/index.ts | 1156 +++++++++++++- .../openapi-ts-openai/src/client/types.gen.ts | 162 +- .../src/client/@pinia/colada.gen.ts | 44 +- .../src/client/index.ts | 129 +- .../src/client/types.gen.ts | 8 +- .../src/client/index.ts | 106 +- .../src/client/types.gen.ts | 8 +- .../src/client/index.ts | 85 +- .../src/client/types.gen.ts | 8 +- .../src/client/index.ts | 106 +- .../src/client/types.gen.ts | 8 +- .../src/client/index.ts | 106 +- .../src/client/types.gen.ts | 8 +- packages/codegen-core/.gitignore | 1 + .../codegen-core/src/__tests__/bimap.test.ts | 67 - .../src/__tests__/bindings.test.ts | 230 --- .../src/__tests__/exports.test.ts | 36 +- .../codegen-core/src/__tests__/files.test.ts | 202 +-- .../src/__tests__/project.test.ts | 116 +- .../codegen-core/src/__tests__/refs.test.ts | 93 ++ .../src/__tests__/renderer.test.ts | 49 - .../src/__tests__/symbols.test.ts | 373 +---- packages/codegen-core/src/bimap/bimap.ts | 78 - packages/codegen-core/src/bimap/types.d.ts | 74 - packages/codegen-core/src/bindings.d.ts | 57 + packages/codegen-core/src/bindings/plan.d.ts | 76 - packages/codegen-core/src/bindings/types.d.ts | 59 - packages/codegen-core/src/bindings/utils.ts | 91 -- packages/codegen-core/src/brands.ts | 3 + packages/codegen-core/src/debug.ts | 1 + packages/codegen-core/src/files/file.ts | 217 +++ packages/codegen-core/src/files/registry.ts | 142 +- packages/codegen-core/src/files/rules.d.ts | 1 + packages/codegen-core/src/files/types.d.ts | 97 +- packages/codegen-core/src/guards.ts | 26 + packages/codegen-core/src/index.ts | 40 +- .../codegen-core/src/languages/extensions.ts | 31 + .../codegen-core/src/languages/resolvers.ts | 8 + .../codegen-core/src/languages/types.d.ts | 37 + packages/codegen-core/src/nodes/node.d.ts | 22 +- packages/codegen-core/src/nodes/registry.ts | 4 +- packages/codegen-core/src/nodes/types.d.ts | 2 +- packages/codegen-core/src/planner/analyzer.ts | 109 ++ packages/codegen-core/src/planner/planner.ts | 430 +++++ .../codegen-core/src/planner/resolvers.ts | 11 + packages/codegen-core/src/planner/types.d.ts | 54 + packages/codegen-core/src/project/project.ts | 290 +--- packages/codegen-core/src/project/types.d.ts | 23 +- packages/codegen-core/src/refs/refs.ts | 76 + packages/codegen-core/src/refs/types.d.ts | 50 + packages/codegen-core/src/renderer.d.ts | 25 + packages/codegen-core/src/renderer/types.d.ts | 42 - packages/codegen-core/src/renderer/utils.ts | 38 - packages/codegen-core/src/symbols/analyzer.ts | 61 - packages/codegen-core/src/symbols/registry.ts | 97 +- packages/codegen-core/src/symbols/symbol.ts | 128 +- packages/codegen-core/src/symbols/types.d.ts | 33 +- .../additional-properties-false/index.ts | 2 +- .../additional-properties-false/types.gen.ts | 8 +- .../2.0.x/additional-properties-true/index.ts | 2 +- .../additional-properties-true/types.gen.ts | 8 +- .../2.0.x/body-response-text-plain/index.ts | 4 +- .../body-response-text-plain/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../2.0.x/enum-names-values/index.ts | 2 +- .../2.0.x/enum-names-values/types.gen.ts | 8 +- .../2.0.x/exclude-deprecated/index.ts | 2 +- .../2.0.x/exclude-deprecated/types.gen.ts | 8 +- .../__snapshots__/2.0.x/external/index.ts | 2 +- .../__snapshots__/2.0.x/external/types.gen.ts | 8 +- .../__snapshots__/2.0.x/form-data/index.ts | 4 +- .../2.0.x/form-data/types.gen.ts | 8 +- .../default-class/@angular/common.gen.ts | 866 ++++------- .../@angular/common/default-class/index.ts | 4 +- .../common/default-class/types.gen.ts | 8 +- .../common/default/@angular/common.gen.ts | 170 +- .../plugins/@angular/common/default/index.ts | 4 +- .../@angular/common/default/types.gen.ts | 8 +- .../sdk-nested-classes-instance/index.ts | 4 +- .../sdk-nested-classes-instance/sdk.gen.ts | 59 +- .../sdk-nested-classes-instance/types.gen.ts | 8 +- .../client-fetch/sdk-nested-classes/index.ts | 4 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../sdk-nested-classes/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/default/index.ts | 4 +- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/instance/index.ts | 4 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 57 +- .../@hey-api/sdk/instance/types.gen.ts | 8 +- .../@hey-api/sdk/throwOnError/index.ts | 4 +- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +- .../transformers/type-format-valibot/index.ts | 4 +- .../type-format-valibot/sdk.gen.ts | 2 - .../type-format-valibot/transformers.gen.ts | 12 +- .../type-format-valibot/types.gen.ts | 8 +- .../transformers/type-format-zod/index.ts | 4 +- .../transformers/type-format-zod/sdk.gen.ts | 2 - .../type-format-zod/transformers.gen.ts | 12 +- .../transformers/type-format-zod/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../transforms-read-write-ignore/index.ts | 2 +- .../transforms-read-write-ignore/types.gen.ts | 8 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/index.ts | 4 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/asClass/types.gen.ts | 8 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 416 ++--- .../plugins/@pinia/colada/fetch/index.ts | 4 +- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../asClass/index.ts | 4 +- .../asClass/sdk.gen.ts | 24 +- .../asClass/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 606 +++----- .../angular-query-experimental/axios/index.ts | 4 +- .../axios/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 606 +++----- .../angular-query-experimental/fetch/index.ts | 4 +- .../fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../name-builder/index.ts | 4 +- .../name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/index.ts | 4 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../react-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/react-query.gen.ts | 606 +++----- .../@tanstack/react-query/axios/index.ts | 4 +- .../@tanstack/react-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/react-query.gen.ts | 606 +++----- .../@tanstack/react-query/fetch/index.ts | 4 +- .../@tanstack/react-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../react-query/name-builder/index.ts | 4 +- .../react-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/index.ts | 4 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../solid-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/solid-query.gen.ts | 606 +++----- .../@tanstack/solid-query/axios/index.ts | 4 +- .../@tanstack/solid-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/solid-query.gen.ts | 606 +++----- .../@tanstack/solid-query/fetch/index.ts | 4 +- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../solid-query/name-builder/index.ts | 4 +- .../solid-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/index.ts | 4 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../svelte-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/svelte-query.gen.ts | 606 +++----- .../@tanstack/svelte-query/axios/index.ts | 4 +- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/svelte-query.gen.ts | 606 +++----- .../@tanstack/svelte-query/fetch/index.ts | 4 +- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +- .../@tanstack/svelte-query.gen.ts | 110 +- .../svelte-query/name-builder/index.ts | 4 +- .../svelte-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/index.ts | 4 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/vue-query.gen.ts | 606 +++----- .../@tanstack/vue-query/axios/index.ts | 4 +- .../@tanstack/vue-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/vue-query.gen.ts | 606 +++----- .../@tanstack/vue-query/fetch/index.ts | 4 +- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/name-builder/index.ts | 4 +- .../vue-query/name-builder/types.gen.ts | 8 +- .../2.0.x/plugins/fastify/default/index.ts | 2 +- .../plugins/fastify/default/types.gen.ts | 8 +- .../plugins/valibot/default/valibot.gen.ts | 2 +- .../2.0.x/schema-unknown/index.ts | 4 +- .../2.0.x/schema-unknown/types.gen.ts | 8 +- .../2.0.x/security-api-key/index.ts | 4 +- .../2.0.x/security-api-key/types.gen.ts | 8 +- .../2.0.x/security-basic/index.ts | 4 +- .../2.0.x/security-basic/types.gen.ts | 8 +- .../2.0.x/security-false/index.ts | 4 +- .../2.0.x/security-false/types.gen.ts | 8 +- .../2.0.x/security-oauth2/index.ts | 4 +- .../2.0.x/security-oauth2/types.gen.ts | 8 +- .../2.0.x/servers-base-path/index.ts | 2 +- .../2.0.x/servers-base-path/types.gen.ts | 8 +- .../__snapshots__/2.0.x/servers-host/index.ts | 2 +- .../2.0.x/servers-host/types.gen.ts | 8 +- .../test/__snapshots__/2.0.x/servers/index.ts | 2 +- .../__snapshots__/2.0.x/servers/types.gen.ts | 8 +- .../2.0.x/transforms-read-write/index.ts | 2 +- .../2.0.x/transforms-read-write/types.gen.ts | 8 +- .../additional-properties-false/index.ts | 2 +- .../additional-properties-false/types.gen.ts | 8 +- .../3.0.x/additional-properties-true/index.ts | 2 +- .../additional-properties-true/types.gen.ts | 8 +- .../additional-properties-undefined/index.ts | 2 +- .../types.gen.ts | 8 +- .../array-items-one-of-length-1/index.ts | 2 +- .../array-items-one-of-length-1/types.gen.ts | 8 +- .../3.0.x/array-nested-one-of/index.ts | 2 +- .../3.0.x/array-nested-one-of/types.gen.ts | 8 +- .../3.0.x/body-response-text-plain/index.ts | 4 +- .../body-response-text-plain/types.gen.ts | 8 +- .../3.0.x/case-PascalCase/index.ts | 2 +- .../3.0.x/case-PascalCase/types.gen.ts | 8 +- .../3.0.x/case-camelCase/index.ts | 2 +- .../3.0.x/case-camelCase/types.gen.ts | 8 +- .../3.0.x/case-preserve/index.ts | 2 +- .../3.0.x/case-preserve/types.gen.ts | 8 +- .../3.0.x/case-snake_case/index.ts | 2 +- .../3.0.x/case-snake_case/types.gen.ts | 8 +- .../3.0.x/components-request-bodies/index.ts | 2 +- .../components-request-bodies/types.gen.ts | 8 +- .../3.0.x/content-binary/index.ts | 2 +- .../3.0.x/content-binary/types.gen.ts | 8 +- .../3.0.x/content-types/index.ts | 4 +- .../3.0.x/content-types/types.gen.ts | 8 +- .../3.0.x/discriminator-all-of/index.ts | 2 +- .../3.0.x/discriminator-all-of/types.gen.ts | 8 +- .../3.0.x/discriminator-any-of/index.ts | 2 +- .../3.0.x/discriminator-any-of/types.gen.ts | 8 +- .../3.0.x/discriminator-mapped-many/index.ts | 2 +- .../discriminator-mapped-many/types.gen.ts | 8 +- .../3.0.x/discriminator-one-of/index.ts | 2 +- .../3.0.x/discriminator-one-of/types.gen.ts | 8 +- .../__snapshots__/3.0.x/enum-escape/index.ts | 2 +- .../3.0.x/enum-escape/types.gen.ts | 8 +- .../3.0.x/enum-inline-javascript/index.ts | 2 +- .../3.0.x/enum-inline-javascript/types.gen.ts | 8 +- .../3.0.x/enum-inline-typescript/index.ts | 2 +- .../3.0.x/enum-inline-typescript/types.gen.ts | 8 +- .../__snapshots__/3.0.x/enum-inline/index.ts | 2 +- .../3.0.x/enum-inline/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../3.0.x/enum-names-values/index.ts | 2 +- .../3.0.x/enum-names-values/types.gen.ts | 8 +- .../__snapshots__/3.0.x/enum-null/index.ts | 2 +- .../3.0.x/enum-null/types.gen.ts | 8 +- .../3.0.x/exclude-deprecated/index.ts | 2 +- .../3.0.x/exclude-deprecated/types.gen.ts | 8 +- .../__snapshots__/3.0.x/external/index.ts | 2 +- .../__snapshots__/3.0.x/external/types.gen.ts | 8 +- .../@tanstack/react-query.gen.ts | 55 +- .../3.0.x/internal-name-conflict/index.ts | 4 +- .../3.0.x/internal-name-conflict/types.gen.ts | 8 +- .../3.0.x/operation-204/index.ts | 2 +- .../3.0.x/operation-204/types.gen.ts | 8 +- .../parameter-explode-false-axios/index.ts | 4 +- .../types.gen.ts | 8 +- .../3.0.x/parameter-explode-false/index.ts | 4 +- .../parameter-explode-false/types.gen.ts | 8 +- .../default-class/@angular/common.gen.ts | 1186 +++++--------- .../@angular/common/default-class/index.ts | 4 +- .../common/default-class/types.gen.ts | 8 +- .../common/default/@angular/common.gen.ts | 240 +-- .../plugins/@angular/common/default/index.ts | 4 +- .../@angular/common/default/types.gen.ts | 8 +- .../sdk-nested-classes-instance/index.ts | 4 +- .../sdk-nested-classes-instance/sdk.gen.ts | 59 +- .../sdk-nested-classes-instance/types.gen.ts | 8 +- .../client-fetch/sdk-nested-classes/index.ts | 4 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../sdk-nested-classes/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/default/index.ts | 4 +- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/instance/index.ts | 4 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 57 +- .../@hey-api/sdk/instance/types.gen.ts | 8 +- .../@hey-api/sdk/throwOnError/index.ts | 4 +- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +- .../transformers/type-format-valibot/index.ts | 4 +- .../type-format-valibot/sdk.gen.ts | 2 - .../type-format-valibot/transformers.gen.ts | 12 +- .../type-format-valibot/types.gen.ts | 8 +- .../transformers/type-format-zod/index.ts | 4 +- .../transformers/type-format-zod/sdk.gen.ts | 2 - .../type-format-zod/transformers.gen.ts | 12 +- .../transformers/type-format-zod/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../transforms-read-write-ignore/index.ts | 2 +- .../transforms-read-write-ignore/types.gen.ts | 8 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/index.ts | 4 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/asClass/types.gen.ts | 8 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 598 +++---- .../plugins/@pinia/colada/fetch/index.ts | 4 +- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../asClass/index.ts | 4 +- .../asClass/sdk.gen.ts | 24 +- .../asClass/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 871 ++++------- .../angular-query-experimental/axios/index.ts | 4 +- .../axios/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 871 ++++------- .../angular-query-experimental/fetch/index.ts | 4 +- .../fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../name-builder/index.ts | 4 +- .../name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/index.ts | 4 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../react-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/react-query.gen.ts | 871 ++++------- .../@tanstack/react-query/axios/index.ts | 4 +- .../@tanstack/react-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/react-query.gen.ts | 871 ++++------- .../@tanstack/react-query/fetch/index.ts | 4 +- .../@tanstack/react-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../react-query/name-builder/index.ts | 4 +- .../react-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/index.ts | 4 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../solid-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/solid-query.gen.ts | 871 ++++------- .../@tanstack/solid-query/axios/index.ts | 4 +- .../@tanstack/solid-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/solid-query.gen.ts | 871 ++++------- .../@tanstack/solid-query/fetch/index.ts | 4 +- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../solid-query/name-builder/index.ts | 4 +- .../solid-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/index.ts | 4 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../svelte-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/svelte-query.gen.ts | 871 ++++------- .../@tanstack/svelte-query/axios/index.ts | 4 +- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/svelte-query.gen.ts | 871 ++++------- .../@tanstack/svelte-query/fetch/index.ts | 4 +- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +- .../@tanstack/svelte-query.gen.ts | 110 +- .../svelte-query/name-builder/index.ts | 4 +- .../svelte-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/index.ts | 4 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/vue-query.gen.ts | 871 ++++------- .../@tanstack/vue-query/axios/index.ts | 4 +- .../@tanstack/vue-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/vue-query.gen.ts | 871 ++++------- .../@tanstack/vue-query/fetch/index.ts | 4 +- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/name-builder/index.ts | 4 +- .../vue-query/name-builder/types.gen.ts | 8 +- .../3.0.x/plugins/fastify/default/index.ts | 2 +- .../plugins/fastify/default/types.gen.ts | 8 +- .../plugins/valibot/default/valibot.gen.ts | 2 +- .../3.0.x/security-api-key/index.ts | 4 +- .../3.0.x/security-api-key/types.gen.ts | 8 +- .../3.0.x/security-false/index.ts | 4 +- .../3.0.x/security-false/types.gen.ts | 8 +- .../3.0.x/security-http-bearer/index.ts | 4 +- .../3.0.x/security-http-bearer/types.gen.ts | 8 +- .../3.0.x/security-oauth2/index.ts | 4 +- .../3.0.x/security-oauth2/types.gen.ts | 8 +- .../3.0.x/security-open-id-connect/index.ts | 4 +- .../security-open-id-connect/types.gen.ts | 8 +- .../test/__snapshots__/3.0.x/servers/index.ts | 2 +- .../__snapshots__/3.0.x/servers/types.gen.ts | 8 +- .../3.0.x/transformers-all-of/index.ts | 2 +- .../transformers-all-of/transformers.gen.ts | 32 +- .../3.0.x/transformers-all-of/types.gen.ts | 8 +- .../3.0.x/transformers-any-of-null/index.ts | 2 +- .../transformers.gen.ts | 7 - .../transformers-any-of-null/types.gen.ts | 8 +- .../3.0.x/transformers-array/index.ts | 2 +- .../transformers-array/transformers.gen.ts | 8 +- .../3.0.x/transformers-array/types.gen.ts | 8 +- .../3.0.x/transformers-recursive/index.ts | 2 +- .../transformers.gen.ts | 7 - .../3.0.x/transformers-recursive/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../3.0.x/transforms-read-write/index.ts | 2 +- .../3.0.x/transforms-read-write/types.gen.ts | 8 +- .../__snapshots__/3.0.x/type-invalid/index.ts | 2 +- .../3.0.x/type-invalid/types.gen.ts | 4 +- .../3.0.x/validators/valibot.gen.ts | 4 +- .../additional-properties-false/index.ts | 2 +- .../additional-properties-false/types.gen.ts | 8 +- .../additional-properties-true-any/index.ts | 2 +- .../types.gen.ts | 8 +- .../3.1.x/additional-properties-true/index.ts | 2 +- .../additional-properties-true/types.gen.ts | 8 +- .../additional-properties-undefined/index.ts | 2 +- .../types.gen.ts | 8 +- .../array-items-one-of-length-1/index.ts | 2 +- .../array-items-one-of-length-1/types.gen.ts | 8 +- .../3.1.x/array-nested-one-of/index.ts | 2 +- .../3.1.x/array-nested-one-of/types.gen.ts | 8 +- .../3.1.x/body-response-text-plain/index.ts | 4 +- .../body-response-text-plain/types.gen.ts | 8 +- .../3.1.x/case-PascalCase/index.ts | 2 +- .../3.1.x/case-PascalCase/types.gen.ts | 8 +- .../3.1.x/case-camelCase/index.ts | 2 +- .../3.1.x/case-camelCase/types.gen.ts | 8 +- .../3.1.x/case-preserve/index.ts | 2 +- .../3.1.x/case-preserve/types.gen.ts | 8 +- .../3.1.x/case-snake_case/index.ts | 2 +- .../3.1.x/case-snake_case/types.gen.ts | 8 +- .../client-angular/base-url-false/index.ts | 2 +- .../base-url-false/types.gen.ts | 8 +- .../client-angular/base-url-number/index.ts | 2 +- .../base-url-number/types.gen.ts | 8 +- .../client-angular/base-url-strict/index.ts | 2 +- .../base-url-strict/types.gen.ts | 8 +- .../client-angular/base-url-string/index.ts | 2 +- .../base-url-string/types.gen.ts | 8 +- .../client-angular/clean-false/index.ts | 4 +- .../client-angular/clean-false/types.gen.ts | 8 +- .../@hey-api/client-angular/default/index.ts | 4 +- .../client-angular/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-axios/base-url-false/index.ts | 2 +- .../client-axios/base-url-false/types.gen.ts | 8 +- .../client-axios/base-url-number/index.ts | 2 +- .../client-axios/base-url-number/types.gen.ts | 8 +- .../client-axios/base-url-strict/index.ts | 2 +- .../client-axios/base-url-strict/types.gen.ts | 8 +- .../client-axios/base-url-string/index.ts | 2 +- .../client-axios/base-url-string/types.gen.ts | 8 +- .../client-axios/clean-false/index.ts | 4 +- .../client-axios/clean-false/types.gen.ts | 8 +- .../@hey-api/client-axios/default/index.ts | 4 +- .../client-axios/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../client-axios/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../client-axios/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-fetch/base-url-false/index.ts | 2 +- .../client-fetch/base-url-false/types.gen.ts | 8 +- .../client-fetch/base-url-number/index.ts | 2 +- .../client-fetch/base-url-number/types.gen.ts | 8 +- .../client-fetch/base-url-strict/index.ts | 2 +- .../client-fetch/base-url-strict/types.gen.ts | 8 +- .../client-fetch/base-url-string/index.ts | 2 +- .../client-fetch/base-url-string/types.gen.ts | 8 +- .../client-fetch/clean-false/index.ts | 4 +- .../client-fetch/clean-false/types.gen.ts | 8 +- .../@hey-api/client-fetch/default/index.ts | 4 +- .../client-fetch/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../client-fetch/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../client-fetch/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-ky/base-url-false/index.ts | 2 +- .../client-ky/base-url-false/types.gen.ts | 8 +- .../client-ky/base-url-number/index.ts | 2 +- .../client-ky/base-url-number/types.gen.ts | 8 +- .../client-ky/base-url-strict/index.ts | 2 +- .../client-ky/base-url-strict/types.gen.ts | 8 +- .../client-ky/base-url-string/index.ts | 2 +- .../client-ky/base-url-string/types.gen.ts | 8 +- .../@hey-api/client-ky/clean-false/index.ts | 4 +- .../client-ky/clean-false/types.gen.ts | 8 +- .../@hey-api/client-ky/default/index.ts | 4 +- .../@hey-api/client-ky/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../client-ky/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../client-ky/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../client-ky/tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-next/base-url-false/index.ts | 2 +- .../client-next/base-url-false/types.gen.ts | 8 +- .../client-next/base-url-number/index.ts | 2 +- .../client-next/base-url-number/types.gen.ts | 8 +- .../client-next/base-url-strict/index.ts | 2 +- .../client-next/base-url-strict/types.gen.ts | 8 +- .../client-next/base-url-string/index.ts | 2 +- .../client-next/base-url-string/types.gen.ts | 8 +- .../@hey-api/client-next/clean-false/index.ts | 4 +- .../client-next/clean-false/types.gen.ts | 8 +- .../@hey-api/client-next/default/index.ts | 4 +- .../@hey-api/client-next/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../client-next/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../client-next/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-nuxt/base-url-false/index.ts | 2 +- .../client-nuxt/base-url-false/types.gen.ts | 8 +- .../client-nuxt/base-url-number/index.ts | 2 +- .../client-nuxt/base-url-number/types.gen.ts | 8 +- .../client-nuxt/base-url-strict/index.ts | 2 +- .../client-nuxt/base-url-strict/types.gen.ts | 8 +- .../client-nuxt/base-url-string/index.ts | 2 +- .../client-nuxt/base-url-string/types.gen.ts | 8 +- .../@hey-api/client-nuxt/clean-false/index.ts | 4 +- .../client-nuxt/clean-false/types.gen.ts | 8 +- .../@hey-api/client-nuxt/default/index.ts | 4 +- .../@hey-api/client-nuxt/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../client-nuxt/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../client-nuxt/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-ofetch/base-url-false/index.ts | 2 +- .../client-ofetch/base-url-false/types.gen.ts | 8 +- .../client-ofetch/base-url-number/index.ts | 2 +- .../base-url-number/types.gen.ts | 8 +- .../client-ofetch/base-url-strict/index.ts | 2 +- .../base-url-strict/types.gen.ts | 8 +- .../client-ofetch/base-url-string/index.ts | 2 +- .../base-url-string/types.gen.ts | 8 +- .../client-ofetch/clean-false/index.ts | 4 +- .../client-ofetch/clean-false/types.gen.ts | 8 +- .../@hey-api/client-ofetch/default/index.ts | 4 +- .../client-ofetch/default/types.gen.ts | 8 +- .../import-file-extension-ts/index.ts | 4 +- .../import-file-extension-ts/types.gen.ts | 8 +- .../sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../tsconfig-nodenext-sdk/index.ts | 4 +- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +- .../client-custom/base-url-false/index.ts | 2 +- .../client-custom/base-url-false/types.gen.ts | 8 +- .../client-custom/base-url-number/index.ts | 2 +- .../base-url-number/types.gen.ts | 8 +- .../client-custom/base-url-strict/index.ts | 2 +- .../base-url-strict/types.gen.ts | 8 +- .../client-custom/base-url-string/index.ts | 2 +- .../base-url-string/types.gen.ts | 8 +- .../clients/client-custom/bundle/index.ts | 4 +- .../clients/client-custom/bundle/types.gen.ts | 8 +- .../clients/client-custom/default/index.ts | 4 +- .../client-custom/default/types.gen.ts | 8 +- .../sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../clients/my-client/base-url-false/index.ts | 2 +- .../my-client/base-url-false/types.gen.ts | 8 +- .../my-client/base-url-number/index.ts | 2 +- .../my-client/base-url-number/types.gen.ts | 8 +- .../my-client/base-url-strict/index.ts | 2 +- .../my-client/base-url-strict/types.gen.ts | 8 +- .../my-client/base-url-string/index.ts | 2 +- .../my-client/base-url-string/types.gen.ts | 8 +- .../3.1.x/clients/my-client/bundle/index.ts | 4 +- .../clients/my-client/bundle/types.gen.ts | 8 +- .../3.1.x/clients/my-client/default/index.ts | 4 +- .../clients/my-client/default/types.gen.ts | 8 +- .../my-client/sdk-client-optional/index.ts | 4 +- .../sdk-client-optional/types.gen.ts | 8 +- .../my-client/sdk-client-required/index.ts | 4 +- .../sdk-client-required/types.gen.ts | 8 +- .../3.1.x/components-request-bodies/index.ts | 2 +- .../components-request-bodies/types.gen.ts | 8 +- .../test/__snapshots__/3.1.x/const/index.ts | 2 +- .../__snapshots__/3.1.x/const/types.gen.ts | 8 +- .../3.1.x/content-binary/index.ts | 2 +- .../3.1.x/content-binary/types.gen.ts | 8 +- .../3.1.x/content-types/index.ts | 4 +- .../3.1.x/content-types/types.gen.ts | 8 +- .../3.1.x/discriminator-all-of/index.ts | 2 +- .../3.1.x/discriminator-all-of/types.gen.ts | 8 +- .../3.1.x/discriminator-any-of/index.ts | 2 +- .../3.1.x/discriminator-any-of/types.gen.ts | 8 +- .../3.1.x/discriminator-mapped-many/index.ts | 2 +- .../discriminator-mapped-many/types.gen.ts | 8 +- .../3.1.x/discriminator-one-of/index.ts | 2 +- .../3.1.x/discriminator-one-of/types.gen.ts | 8 +- .../3.1.x/duplicate-null/index.ts | 2 +- .../3.1.x/duplicate-null/types.gen.ts | 8 +- .../__snapshots__/3.1.x/enum-escape/index.ts | 2 +- .../3.1.x/enum-escape/types.gen.ts | 8 +- .../3.1.x/enum-inline-javascript/index.ts | 2 +- .../3.1.x/enum-inline-javascript/types.gen.ts | 8 +- .../3.1.x/enum-inline-typescript/index.ts | 2 +- .../3.1.x/enum-inline-typescript/types.gen.ts | 8 +- .../__snapshots__/3.1.x/enum-inline/index.ts | 2 +- .../3.1.x/enum-inline/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../3.1.x/enum-names-values/index.ts | 2 +- .../3.1.x/enum-names-values/types.gen.ts | 8 +- .../__snapshots__/3.1.x/enum-null/index.ts | 2 +- .../3.1.x/enum-null/types.gen.ts | 8 +- .../3.1.x/exclude-deprecated/index.ts | 2 +- .../3.1.x/exclude-deprecated/types.gen.ts | 8 +- .../__snapshots__/3.1.x/external/index.ts | 2 +- .../__snapshots__/3.1.x/external/types.gen.ts | 8 +- .../test/__snapshots__/3.1.x/headers/index.ts | 4 +- .../__snapshots__/3.1.x/headers/types.gen.ts | 8 +- .../@tanstack/react-query.gen.ts | 55 +- .../3.1.x/internal-name-conflict/index.ts | 4 +- .../3.1.x/internal-name-conflict/types.gen.ts | 8 +- .../3.1.x/negative-property-names/index.ts | 2 +- .../negative-property-names/types.gen.ts | 8 +- .../3.1.x/object-properties-all-of/index.ts | 2 +- .../object-properties-all-of/types.gen.ts | 8 +- .../3.1.x/object-properties-any-of/index.ts | 2 +- .../object-properties-any-of/types.gen.ts | 8 +- .../3.1.x/object-properties-one-of/index.ts | 2 +- .../object-properties-one-of/types.gen.ts | 8 +- .../3.1.x/object-property-names/index.ts | 2 +- .../3.1.x/object-property-names/types.gen.ts | 8 +- .../3.1.x/operation-204/index.ts | 2 +- .../3.1.x/operation-204/types.gen.ts | 8 +- .../@tanstack/react-query.gen.ts | 35 +- .../3.1.x/pagination-ref/index.ts | 4 +- .../3.1.x/pagination-ref/types.gen.ts | 8 +- .../parameter-explode-false-axios/index.ts | 4 +- .../types.gen.ts | 8 +- .../3.1.x/parameter-explode-false/index.ts | 4 +- .../parameter-explode-false/types.gen.ts | 8 +- .../3.1.x/parameter-tuple/index.ts | 2 +- .../3.1.x/parameter-tuple/types.gen.ts | 8 +- .../3.1.x/pattern-properties/index.ts | 2 +- .../3.1.x/pattern-properties/types.gen.ts | 8 +- .../default-class/@angular/common.gen.ts | 1186 +++++--------- .../@angular/common/default-class/index.ts | 4 +- .../common/default-class/types.gen.ts | 8 +- .../common/default/@angular/common.gen.ts | 240 +-- .../plugins/@angular/common/default/index.ts | 4 +- .../@angular/common/default/types.gen.ts | 8 +- .../sdk-nested-classes-instance/index.ts | 4 +- .../sdk-nested-classes-instance/sdk.gen.ts | 59 +- .../sdk-nested-classes-instance/types.gen.ts | 8 +- .../client-fetch/sdk-nested-classes/index.ts | 4 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../sdk-nested-classes/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/default/index.ts | 4 +- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +- .../plugins/@hey-api/sdk/instance/index.ts | 4 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 57 +- .../@hey-api/sdk/instance/types.gen.ts | 8 +- .../@hey-api/sdk/throwOnError/index.ts | 4 +- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +- .../transformers/type-format-valibot/index.ts | 4 +- .../type-format-valibot/sdk.gen.ts | 2 - .../type-format-valibot/transformers.gen.ts | 12 +- .../type-format-valibot/types.gen.ts | 8 +- .../transformers/type-format-zod/index.ts | 4 +- .../transformers/type-format-zod/sdk.gen.ts | 2 - .../type-format-zod/transformers.gen.ts | 12 +- .../transformers/type-format-zod/types.gen.ts | 8 +- .../index.ts | 2 +- .../types.gen.ts | 8 +- .../transforms-read-write-ignore/index.ts | 2 +- .../transforms-read-write-ignore/types.gen.ts | 8 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/index.ts | 4 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/asClass/types.gen.ts | 8 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 598 +++---- .../plugins/@pinia/colada/fetch/index.ts | 4 +- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../asClass/index.ts | 4 +- .../asClass/sdk.gen.ts | 24 +- .../asClass/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 871 ++++------- .../angular-query-experimental/axios/index.ts | 4 +- .../axios/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 871 ++++------- .../angular-query-experimental/fetch/index.ts | 4 +- .../fetch/types.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 110 +- .../name-builder/index.ts | 4 +- .../name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/index.ts | 4 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../react-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/react-query.gen.ts | 871 ++++------- .../@tanstack/react-query/axios/index.ts | 4 +- .../@tanstack/react-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/react-query.gen.ts | 871 ++++------- .../@tanstack/react-query/fetch/index.ts | 4 +- .../@tanstack/react-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../react-query/name-builder/index.ts | 4 +- .../react-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/index.ts | 4 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../solid-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/solid-query.gen.ts | 871 ++++------- .../@tanstack/solid-query/axios/index.ts | 4 +- .../@tanstack/solid-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/solid-query.gen.ts | 871 ++++------- .../@tanstack/solid-query/fetch/index.ts | 4 +- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../solid-query/name-builder/index.ts | 4 +- .../solid-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/index.ts | 4 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../svelte-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/svelte-query.gen.ts | 871 ++++------- .../@tanstack/svelte-query/axios/index.ts | 4 +- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/svelte-query.gen.ts | 871 ++++------- .../@tanstack/svelte-query/fetch/index.ts | 4 +- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +- .../@tanstack/svelte-query.gen.ts | 110 +- .../svelte-query/name-builder/index.ts | 4 +- .../svelte-query/name-builder/types.gen.ts | 8 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/index.ts | 4 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +- .../axios/@tanstack/vue-query.gen.ts | 871 ++++------- .../@tanstack/vue-query/axios/index.ts | 4 +- .../@tanstack/vue-query/axios/types.gen.ts | 8 +- .../fetch/@tanstack/vue-query.gen.ts | 871 ++++------- .../@tanstack/vue-query/fetch/index.ts | 4 +- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/name-builder/index.ts | 4 +- .../vue-query/name-builder/types.gen.ts | 8 +- .../3.1.x/plugins/fastify/default/index.ts | 2 +- .../plugins/fastify/default/types.gen.ts | 8 +- .../plugins/valibot/default/valibot.gen.ts | 2 +- .../__snapshots__/3.1.x/ref-type/index.ts | 2 +- .../__snapshots__/3.1.x/ref-type/types.gen.ts | 8 +- .../3.1.x/required-all-of-ref/index.ts | 2 +- .../3.1.x/required-all-of-ref/types.gen.ts | 8 +- .../3.1.x/required-any-of-ref/index.ts | 2 +- .../3.1.x/required-any-of-ref/types.gen.ts | 8 +- .../3.1.x/required-one-of-ref/index.ts | 2 +- .../3.1.x/required-one-of-ref/types.gen.ts | 8 +- .../__snapshots__/3.1.x/schema-const/index.ts | 2 +- .../3.1.x/schema-const/types.gen.ts | 8 +- .../3.1.x/security-api-key/index.ts | 4 +- .../3.1.x/security-api-key/types.gen.ts | 8 +- .../3.1.x/security-false/index.ts | 4 +- .../3.1.x/security-false/types.gen.ts | 8 +- .../3.1.x/security-http-bearer/index.ts | 4 +- .../3.1.x/security-http-bearer/types.gen.ts | 8 +- .../3.1.x/security-oauth2/index.ts | 4 +- .../3.1.x/security-oauth2/types.gen.ts | 8 +- .../3.1.x/security-open-id-connect/index.ts | 4 +- .../security-open-id-connect/types.gen.ts | 8 +- .../test/__snapshots__/3.1.x/servers/index.ts | 2 +- .../__snapshots__/3.1.x/servers/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-angular/index.ts | 4 +- .../3.1.x/sse-angular/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-axios/index.ts | 4 +- .../3.1.x/sse-axios/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-fetch/index.ts | 4 +- .../3.1.x/sse-fetch/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-next/index.ts | 4 +- .../__snapshots__/3.1.x/sse-next/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-nuxt/index.ts | 4 +- .../__snapshots__/3.1.x/sse-nuxt/types.gen.ts | 8 +- .../__snapshots__/3.1.x/sse-ofetch/index.ts | 4 +- .../3.1.x/sse-ofetch/types.gen.ts | 8 +- .../3.1.x/string-with-format/index.ts | 2 +- .../3.1.x/string-with-format/types.gen.ts | 8 +- .../3.1.x/transformers-all-of/index.ts | 2 +- .../transformers-all-of/transformers.gen.ts | 32 +- .../3.1.x/transformers-all-of/types.gen.ts | 8 +- .../3.1.x/transformers-any-of-null/index.ts | 2 +- .../transformers.gen.ts | 23 +- .../transformers-any-of-null/types.gen.ts | 8 +- .../3.1.x/transformers-array/index.ts | 2 +- .../transformers-array/transformers.gen.ts | 8 +- .../3.1.x/transformers-array/types.gen.ts | 8 +- .../3.1.x/transformers-recursive/index.ts | 2 +- .../transformers.gen.ts | 7 - .../3.1.x/transformers-recursive/types.gen.ts | 8 +- .../transforms-read-write-nested/index.ts | 2 +- .../transforms-read-write-nested/types.gen.ts | 8 +- .../transforms-read-write-response/index.ts | 2 +- .../types.gen.ts | 8 +- .../3.1.x/transforms-read-write/index.ts | 2 +- .../3.1.x/transforms-read-write/types.gen.ts | 8 +- .../__snapshots__/3.1.x/type-invalid/index.ts | 2 +- .../3.1.x/type-invalid/types.gen.ts | 4 +- .../__snapshots__/3.1.x/union-types/index.ts | 2 +- .../3.1.x/union-types/types.gen.ts | 8 +- .../validators-circular-ref-2/valibot.gen.ts | 2 +- .../validators-circular-ref/valibot.gen.ts | 4 +- .../3.1.x/validators-metadata/valibot.gen.ts | 4 +- .../3.1.x/validators-types/valibot.gen.ts | 4 +- .../3.1.x/validators/valibot.gen.ts | 4 +- .../__snapshots__/3.1.x/webhooks/index.ts | 2 +- .../__snapshots__/3.1.x/webhooks/types.gen.ts | 12 +- .../angular-query-experimental.gen.ts | 30 +- .../meta/@tanstack/react-query.gen.ts | 30 +- .../meta/@tanstack/solid-query.gen.ts | 30 +- .../meta/@tanstack/svelte-query.gen.ts | 30 +- .../@tanstack/meta/@tanstack/vue-query.gen.ts | 30 +- .../plugins/@tanstack/meta/index.ts | 4 +- .../plugins/@tanstack/meta/types.gen.ts | 8 +- .../method-class-conflict/class/sdk.gen.ts | 1384 +++++++---------- .../method-class-conflict/class/types.gen.ts | 8 +- .../method-class-conflict/flat/types.gen.ts | 8 +- .../method-class-conflict/instance/sdk.gen.ts | 1229 ++++++--------- .../instance/types.gen.ts | 8 +- .../sdks/__snapshots__/opencode/flat/index.ts | 4 +- .../__snapshots__/opencode/flat/sdk.gen.ts | 546 +++---- .../__snapshots__/opencode/flat/types.gen.ts | 8 +- .../__snapshots__/opencode/grouped/index.ts | 4 +- .../opencode/grouped/types.gen.ts | 8 +- .../2.0.x/mini/default/zod.gen.ts | 4 +- .../__snapshots__/2.0.x/v3/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/mini/circular/zod.gen.ts | 18 +- .../3.0.x/mini/default/zod.gen.ts | 4 +- .../3.0.x/mini/validators/zod.gen.ts | 8 +- .../3.0.x/v3/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v3/default/zod.gen.ts | 2 +- .../3.0.x/v3/validators/zod.gen.ts | 4 +- .../3.0.x/v4/circular/zod.gen.ts | 18 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/v4/validators/zod.gen.ts | 8 +- .../3.1.x/mini/default/zod.gen.ts | 4 +- .../mini/validators-circular-ref-2/zod.gen.ts | 2 +- .../mini/validators-circular-ref/zod.gen.ts | 6 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 8 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/mini/validators-types/zod.gen.ts | 8 +- .../3.1.x/mini/validators/zod.gen.ts | 8 +- .../__snapshots__/3.1.x/v3/default/zod.gen.ts | 2 +- .../v3/validators-circular-ref-2/zod.gen.ts | 2 +- .../v3/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v3/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v3/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v3/validators-types/zod.gen.ts | 4 +- .../3.1.x/v3/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 4 +- .../v4/validators-circular-ref-2/zod.gen.ts | 2 +- .../v4/validators-circular-ref/zod.gen.ts | 6 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 8 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/v4/validators-types/zod.gen.ts | 8 +- .../3.1.x/v4/validators/zod.gen.ts | 8 +- .../2.0.x/mini/default/zod.gen.ts | 4 +- .../__snapshots__/2.0.x/v3/default/zod.gen.ts | 2 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/mini/circular/zod.gen.ts | 18 +- .../3.0.x/mini/default/zod.gen.ts | 4 +- .../3.0.x/mini/validators/zod.gen.ts | 8 +- .../3.0.x/v3/circular/zod.gen.ts | 10 +- .../__snapshots__/3.0.x/v3/default/zod.gen.ts | 2 +- .../3.0.x/v3/validators/zod.gen.ts | 4 +- .../3.0.x/v4/circular/zod.gen.ts | 18 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/v4/validators/zod.gen.ts | 8 +- .../3.1.x/mini/default/zod.gen.ts | 4 +- .../mini/validators-circular-ref-2/zod.gen.ts | 2 +- .../mini/validators-circular-ref/zod.gen.ts | 6 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 8 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/mini/validators-types/zod.gen.ts | 8 +- .../3.1.x/mini/validators/zod.gen.ts | 8 +- .../__snapshots__/3.1.x/v3/default/zod.gen.ts | 2 +- .../v3/validators-circular-ref-2/zod.gen.ts | 2 +- .../v3/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v3/validators-dates/zod.gen.ts | 4 +- .../3.1.x/v3/validators-metadata/zod.gen.ts | 4 +- .../3.1.x/v3/validators-types/zod.gen.ts | 4 +- .../3.1.x/v3/validators/zod.gen.ts | 4 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 4 +- .../v4/validators-circular-ref-2/zod.gen.ts | 2 +- .../v4/validators-circular-ref/zod.gen.ts | 6 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 8 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/v4/validators-types/zod.gen.ts | 8 +- .../3.1.x/v4/validators/zod.gen.ts | 8 +- packages/openapi-ts/src/config/output.ts | 1 + .../src/generate/__tests__/renderer.test.ts | 123 -- packages/openapi-ts/src/generate/output.ts | 12 +- packages/openapi-ts/src/generate/renderer.ts | 627 -------- packages/openapi-ts/src/ir/context.ts | 14 +- .../src/openApi/__tests__/index.test.ts | 49 +- .../src/openApi/common/parser/sanitize.ts | 2 + .../src/openApi/shared/utils/identifier.ts | 35 - .../src/plugins/@hey-api/schemas/plugin.ts | 3 +- .../src/plugins/@hey-api/sdk/shared/class.ts | 13 +- .../plugins/@hey-api/sdk/shared/functions.ts | 3 +- .../plugins/@hey-api/sdk/shared/operation.ts | 9 +- .../plugins/@hey-api/transformers/plugin.ts | 44 +- .../@hey-api/typescript/shared/export.ts | 27 +- .../@hey-api/typescript/shared/operation.ts | 22 +- .../@hey-api/typescript/shared/types.d.ts | 6 +- .../@hey-api/typescript/shared/webhook.ts | 9 +- .../plugins/@hey-api/typescript/v1/plugin.ts | 4 +- .../@hey-api/typescript/v1/toAst/array.ts | 5 +- .../@hey-api/typescript/v1/toAst/object.ts | 5 +- .../@hey-api/typescript/v1/toAst/tuple.ts | 5 +- .../plugins/@pinia/colada/mutationOptions.ts | 40 +- .../src/plugins/@pinia/colada/queryKey.ts | 25 +- .../src/plugins/@pinia/colada/queryOptions.ts | 14 +- .../src/plugins/@pinia/colada/useType.ts | 23 +- .../src/plugins/@pinia/colada/utils.ts | 19 +- .../src/plugins/@pinia/colada/v0/plugin.ts | 32 +- .../plugins/@tanstack/query-core/queryKey.ts | 15 +- .../@tanstack/query-core/shared/useType.ts | 26 +- .../query-core/v5/infiniteQueryOptions.ts | 38 +- .../query-core/v5/mutationOptions.ts | 14 +- .../plugins/@tanstack/query-core/v5/plugin.ts | 32 +- .../@tanstack/query-core/v5/queryOptions.ts | 10 +- .../src/plugins/arktype/shared/types.d.ts | 5 +- .../src/plugins/arktype/v2/plugin.ts | 14 +- .../src/plugins/arktype/v2/toAst/object.ts | 7 +- packages/openapi-ts/src/plugins/index.ts | 1 - .../src/plugins/shared/types/refs.d.ts | 59 - .../shared/utils/__tests__/refs.test.ts | 85 - .../src/plugins/shared/utils/instance.ts | 39 +- .../src/plugins/shared/utils/refs.ts | 66 - .../openapi-ts/src/plugins/swr/v2/plugin.ts | 32 +- .../openapi-ts/src/plugins/swr/v2/useSwr.ts | 2 +- .../src/plugins/valibot/shared/export.ts | 2 +- .../src/plugins/valibot/shared/operation.ts | 12 +- .../src/plugins/valibot/shared/types.d.ts | 5 +- .../src/plugins/valibot/shared/webhook.ts | 8 +- .../src/plugins/valibot/v1/plugin.ts | 18 +- .../src/plugins/valibot/v1/toAst/array.ts | 5 +- .../src/plugins/valibot/v1/toAst/object.ts | 7 +- .../src/plugins/valibot/v1/toAst/tuple.ts | 5 +- .../openapi-ts/src/plugins/zod/mini/plugin.ts | 22 +- .../src/plugins/zod/mini/toAst/array.ts | 5 +- .../src/plugins/zod/mini/toAst/object.ts | 7 +- .../src/plugins/zod/mini/toAst/tuple.ts | 5 +- .../src/plugins/zod/shared/operation.ts | 18 +- .../src/plugins/zod/shared/types.d.ts | 5 +- .../src/plugins/zod/shared/webhook.ts | 12 +- .../openapi-ts/src/plugins/zod/v3/plugin.ts | 24 +- .../src/plugins/zod/v3/toAst/array.ts | 5 +- .../src/plugins/zod/v3/toAst/object.ts | 7 +- .../src/plugins/zod/v3/toAst/tuple.ts | 5 +- .../openapi-ts/src/plugins/zod/v4/plugin.ts | 22 +- .../src/plugins/zod/v4/toAst/array.ts | 5 +- .../src/plugins/zod/v4/toAst/object.ts | 7 +- .../src/plugins/zod/v4/toAst/tuple.ts | 5 +- packages/openapi-ts/src/ts-dsl/base.ts | 101 +- packages/openapi-ts/src/ts-dsl/decl/class.ts | 48 +- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 24 +- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 28 +- packages/openapi-ts/src/ts-dsl/decl/field.ts | 16 +- packages/openapi-ts/src/ts-dsl/decl/func.ts | 53 +- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 23 +- packages/openapi-ts/src/ts-dsl/decl/init.ts | 17 +- packages/openapi-ts/src/ts-dsl/decl/member.ts | 13 +- packages/openapi-ts/src/ts-dsl/decl/method.ts | 19 +- packages/openapi-ts/src/ts-dsl/decl/param.ts | 35 +- .../openapi-ts/src/ts-dsl/decl/pattern.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/setter.ts | 23 +- packages/openapi-ts/src/ts-dsl/expr/array.ts | 8 +- packages/openapi-ts/src/ts-dsl/expr/as.ts | 30 +- packages/openapi-ts/src/ts-dsl/expr/attr.ts | 39 +- packages/openapi-ts/src/ts-dsl/expr/await.ts | 20 +- packages/openapi-ts/src/ts-dsl/expr/binary.ts | 36 +- packages/openapi-ts/src/ts-dsl/expr/call.ts | 8 +- packages/openapi-ts/src/ts-dsl/expr/expr.ts | 20 +- .../openapi-ts/src/ts-dsl/expr/fromValue.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/id.ts | 4 +- .../openapi-ts/src/ts-dsl/expr/literal.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/new.ts | 20 +- packages/openapi-ts/src/ts-dsl/expr/object.ts | 9 +- packages/openapi-ts/src/ts-dsl/expr/prefix.ts | 8 +- packages/openapi-ts/src/ts-dsl/expr/prop.ts | 39 +- packages/openapi-ts/src/ts-dsl/expr/regexp.ts | 4 +- .../openapi-ts/src/ts-dsl/expr/template.ts | 28 +- .../openapi-ts/src/ts-dsl/expr/ternary.ts | 12 +- packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 8 +- packages/openapi-ts/src/ts-dsl/index.ts | 18 +- packages/openapi-ts/src/ts-dsl/layout/doc.ts | 4 +- packages/openapi-ts/src/ts-dsl/layout/hint.ts | 4 +- .../openapi-ts/src/ts-dsl/layout/newline.ts | 4 +- packages/openapi-ts/src/ts-dsl/layout/note.ts | 4 +- packages/openapi-ts/src/ts-dsl/mixins/args.ts | 20 +- .../openapi-ts/src/ts-dsl/mixins/decorator.ts | 4 +- packages/openapi-ts/src/ts-dsl/mixins/do.ts | 22 +- packages/openapi-ts/src/ts-dsl/mixins/doc.ts | 6 +- packages/openapi-ts/src/ts-dsl/mixins/hint.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/modifiers.ts | 2 + packages/openapi-ts/src/ts-dsl/mixins/note.ts | 6 +- .../openapi-ts/src/ts-dsl/mixins/param.ts | 14 +- .../openapi-ts/src/ts-dsl/mixins/pattern.ts | 4 +- .../openapi-ts/src/ts-dsl/mixins/type-args.ts | 17 +- .../openapi-ts/src/ts-dsl/mixins/type-expr.ts | 42 +- .../src/ts-dsl/mixins/type-params.ts | 4 +- .../openapi-ts/src/ts-dsl/mixins/value.ts | 4 +- .../render/__tests__/typescript.test.ts | 80 + .../src/ts-dsl/render/typescript.ts | 285 ++++ .../openapi-ts/src/ts-dsl/render/utils.ts | 145 ++ packages/openapi-ts/src/ts-dsl/stmt/block.ts | 30 + packages/openapi-ts/src/ts-dsl/stmt/if.ts | 64 +- packages/openapi-ts/src/ts-dsl/stmt/return.ts | 20 +- packages/openapi-ts/src/ts-dsl/stmt/stmt.ts | 8 +- packages/openapi-ts/src/ts-dsl/stmt/throw.ts | 10 +- packages/openapi-ts/src/ts-dsl/stmt/try.ts | 97 ++ packages/openapi-ts/src/ts-dsl/stmt/var.ts | 21 +- packages/openapi-ts/src/ts-dsl/token.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/alias.ts | 27 +- packages/openapi-ts/src/ts-dsl/type/and.ts | 32 +- packages/openapi-ts/src/ts-dsl/type/attr.ts | 36 +- packages/openapi-ts/src/ts-dsl/type/expr.ts | 28 +- .../openapi-ts/src/ts-dsl/type/fromValue.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/func.ts | 9 +- .../openapi-ts/src/ts-dsl/type/idx-sig.ts | 13 +- packages/openapi-ts/src/ts-dsl/type/idx.ts | 10 +- .../openapi-ts/src/ts-dsl/type/literal.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/mapped.ts | 14 +- packages/openapi-ts/src/ts-dsl/type/object.ts | 6 +- .../openapi-ts/src/ts-dsl/type/operator.ts | 8 +- packages/openapi-ts/src/ts-dsl/type/or.ts | 22 +- packages/openapi-ts/src/ts-dsl/type/param.ts | 36 +- packages/openapi-ts/src/ts-dsl/type/prop.ts | 25 +- packages/openapi-ts/src/ts-dsl/type/query.ts | 8 +- .../openapi-ts/src/ts-dsl/type/template.ts | 8 +- packages/openapi-ts/src/ts-dsl/type/tuple.ts | 10 +- .../utils/__tests__/name.test.ts} | 8 +- packages/openapi-ts/src/ts-dsl/utils/name.ts | 74 + packages/openapi-ts/src/ts-dsl/utils/prop.ts | 31 - .../src/{ => ts-dsl}/utils/regexp.ts | 0 packages/openapi-ts/src/types/output.d.ts | 43 +- .../src/utils/__tests__/escape.test.ts | 39 - packages/openapi-ts/src/utils/escape.ts | 20 - 1139 files changed, 21900 insertions(+), 30022 deletions(-) delete mode 100644 packages/codegen-core/src/__tests__/bimap.test.ts delete mode 100644 packages/codegen-core/src/__tests__/bindings.test.ts create mode 100644 packages/codegen-core/src/__tests__/refs.test.ts delete mode 100644 packages/codegen-core/src/__tests__/renderer.test.ts delete mode 100644 packages/codegen-core/src/bimap/bimap.ts delete mode 100644 packages/codegen-core/src/bimap/types.d.ts create mode 100644 packages/codegen-core/src/bindings.d.ts delete mode 100644 packages/codegen-core/src/bindings/plan.d.ts delete mode 100644 packages/codegen-core/src/bindings/types.d.ts delete mode 100644 packages/codegen-core/src/bindings/utils.ts create mode 100644 packages/codegen-core/src/brands.ts create mode 100644 packages/codegen-core/src/files/file.ts create mode 100644 packages/codegen-core/src/guards.ts create mode 100644 packages/codegen-core/src/languages/extensions.ts create mode 100644 packages/codegen-core/src/languages/resolvers.ts create mode 100644 packages/codegen-core/src/languages/types.d.ts create mode 100644 packages/codegen-core/src/planner/analyzer.ts create mode 100644 packages/codegen-core/src/planner/planner.ts create mode 100644 packages/codegen-core/src/planner/resolvers.ts create mode 100644 packages/codegen-core/src/planner/types.d.ts create mode 100644 packages/codegen-core/src/refs/refs.ts create mode 100644 packages/codegen-core/src/refs/types.d.ts create mode 100644 packages/codegen-core/src/renderer.d.ts delete mode 100644 packages/codegen-core/src/renderer/types.d.ts delete mode 100644 packages/codegen-core/src/renderer/utils.ts delete mode 100644 packages/codegen-core/src/symbols/analyzer.ts delete mode 100644 packages/openapi-ts/src/generate/__tests__/renderer.test.ts delete mode 100644 packages/openapi-ts/src/generate/renderer.ts delete mode 100644 packages/openapi-ts/src/openApi/shared/utils/identifier.ts delete mode 100644 packages/openapi-ts/src/plugins/shared/types/refs.d.ts delete mode 100644 packages/openapi-ts/src/plugins/shared/utils/__tests__/refs.test.ts delete mode 100644 packages/openapi-ts/src/plugins/shared/utils/refs.ts create mode 100644 packages/openapi-ts/src/ts-dsl/render/__tests__/typescript.test.ts create mode 100644 packages/openapi-ts/src/ts-dsl/render/typescript.ts create mode 100644 packages/openapi-ts/src/ts-dsl/render/utils.ts create mode 100644 packages/openapi-ts/src/ts-dsl/stmt/block.ts create mode 100644 packages/openapi-ts/src/ts-dsl/stmt/try.ts rename packages/openapi-ts/src/{openApi/shared/utils/__tests__/identifier.test.ts => ts-dsl/utils/__tests__/name.test.ts} (96%) create mode 100644 packages/openapi-ts/src/ts-dsl/utils/name.ts delete mode 100644 packages/openapi-ts/src/ts-dsl/utils/prop.ts rename packages/openapi-ts/src/{ => ts-dsl}/utils/regexp.ts (100%) delete mode 100644 packages/openapi-ts/src/utils/__tests__/escape.test.ts diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index f0d31addb..2541003b8 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -43,12 +43,13 @@ export default defineConfig(() => { // 'invalid', // 'full.yaml', // 'object-property-names.yaml', - 'openai.yaml', + // 'openai.yaml', // 'opencode.yaml', // 'pagination-ref.yaml', - // 'sdk-instance.yaml', + 'sdk-instance.yaml', // 'string-with-format.yaml', // 'transformers.json', + // 'transformers-recursive.json', // 'type-format.yaml', // 'validators.yaml', // 'validators-circular-ref.json', @@ -83,7 +84,7 @@ export default defineConfig(() => { // 'https://somefakedomain.com/openapi.yaml', ], logs: { - // level: 'silent', + // level: 'debug', path: './logs', }, // name: 'foo', @@ -97,15 +98,22 @@ export default defineConfig(() => { // suffix: '.meh', // }, // format: 'prettier', - // importFileExtension: '.ts', + // importFileExtension: '.js', // indexFile: false, // lint: 'eslint', path: path.resolve(__dirname, '.gen'), - tsConfigPath: path.resolve( - __dirname, - 'tsconfig', - 'tsconfig.nodenext.json', - ), + preferExportAll: true, + resolveModuleName: (moduleName) => { + if (moduleName === 'valibot') { + return 'valibot'; + } + return; + }, + // tsConfigPath: path.resolve( + // __dirname, + // 'tsconfig', + // 'tsconfig.nodenext.json', + // ), }, // '.gen', ], @@ -263,7 +271,7 @@ export default defineConfig(() => { // fields.unwrap('path') // }, // include... - // instance: true, + instance: true, name: '@hey-api/sdk', // operationId: false, // paramsStructure: 'flat', @@ -273,7 +281,7 @@ export default defineConfig(() => { // signature: 'object', // transformer: '@hey-api/transformers', // transformer: true, - validator: 'zod', + validator: 'valibot', // validator: { // request: 'zod', // response: 'zod', @@ -309,7 +317,7 @@ export default defineConfig(() => { exportFromIndex: true, infiniteQueryKeys: { // name: '{{name}}IQK', - name: 'options', + // name: 'options', }, infiniteQueryOptions: { meta() { @@ -318,7 +326,7 @@ export default defineConfig(() => { }; }, // name: '{{name}}IQO', - name: 'options', + // name: 'options', }, mutationOptions: { meta() { @@ -327,12 +335,12 @@ export default defineConfig(() => { }; }, // name: '{{name}}MO', - name: 'options', + // name: 'options', }, - // name: '@tanstack/react-query', + name: '@tanstack/react-query', queryKeys: { // name: '{{name}}QK', - name: 'options', + // name: 'options', tags: true, }, // queryOptions: false, @@ -343,7 +351,7 @@ export default defineConfig(() => { // } // }, // name: '{{name}}QO', - name: 'options', + // name: 'options', }, useQuery: true, '~hooks': { @@ -423,14 +431,23 @@ export default defineConfig(() => { // 'date-time': ({ $, pipes }) => pipes.push($('v').attr('isoDateTime').call()), }, }, - validator({ $, schema, v }) { - return [ - $.const('parsed').assign( - $(v).attr('safeParseAsync').call(schema, 'data').await(), - ), - $('parsed').return(), - ]; - }, + // validator({ $, plugin, schema, v }) { + // const vShadow = plugin.symbol('v'); + // const test = plugin.symbol('test'); + // const e = plugin.symbol('err'); + // return [ + // $.const(vShadow).assign($.literal('hi')), + // $('console').attr('log').call(vShadow), + // $.try( + // $.const(test).assign($.literal('test')), + // $('console').attr('log').call($.literal('hi'), test), + // ).catchArg(e), + // $.const('parsed').assign( + // $(v).attr('safeParseAsync').call(schema, 'data').await(), + // ), + // $('parsed').return(), + // ]; + // }, }, }, { @@ -500,14 +517,14 @@ export default defineConfig(() => { // 'date-time': ({ $ }) => $('z').attr('date').call(), }, }, - validator({ $, schema }) { - return [ - $.const('parsed').assign( - $(schema).attr('safeParseAsync').call('data').await(), - ), - $('parsed').return(), - ]; - }, + // validator({ $, schema }) { + // return [ + // $.const('parsed').assign( + // $(schema).attr('safeParseAsync').call('data').await(), + // ), + // $('parsed').return(), + // ]; + // }, }, }, { @@ -528,7 +545,7 @@ export default defineConfig(() => { { exportFromIndex: true, // mutationOptions: '{{name}}Mutationssss', - // name: '@pinia/colada', + name: '@pinia/colada', // queryOptions: { // name: '{{name}}Queryyyyy', // }, @@ -547,7 +564,6 @@ export default defineConfig(() => { }, }, ], - // useOptions: false, // watch: 3_000, }, // { diff --git a/examples/openapi-ts-angular-common/src/client/index.ts b/examples/openapi-ts-angular-common/src/client/index.ts index 89fcd5868..a173c9a80 100644 --- a/examples/openapi-ts-angular-common/src/client/index.ts +++ b/examples/openapi-ts-angular-common/src/client/index.ts @@ -1,5 +1,130 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './@angular/common.gen'; -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPetRequest, + createUserRequest, + createUsersWithListInputRequest, + deleteOrderRequest, + deletePetRequest, + deleteUserRequest, + findPetsByStatusRequest, + findPetsByTagsRequest, + getInventoryRequest, + getOrderByIdRequest, + getPetByIdRequest, + getUserByNameRequest, + loginUserRequest, + logoutUserRequest, + PetServiceResources, + placeOrderRequest, + StoreServiceResources, + updatePetRequest, + updatePetWithFormRequest, + updateUserRequest, + uploadFileRequest, + UserServiceResources, +} from './@angular/common.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-angular-common/src/client/types.gen.ts b/examples/openapi-ts-angular-common/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-angular-common/src/client/types.gen.ts +++ b/examples/openapi-ts-angular-common/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-angular/src/client/index.ts b/examples/openapi-ts-angular/src/client/index.ts index 57ed02bf5..12450a715 100644 --- a/examples/openapi-ts-angular/src/client/index.ts +++ b/examples/openapi-ts-angular/src/client/index.ts @@ -1,4 +1,85 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { type Options, PetService, StoreService, UserService } from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-angular/src/client/types.gen.ts b/examples/openapi-ts-angular/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-angular/src/client/types.gen.ts +++ b/examples/openapi-ts-angular/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-axios/src/client/index.ts b/examples/openapi-ts-axios/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-axios/src/client/index.ts +++ b/examples/openapi-ts-axios/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-axios/src/client/types.gen.ts b/examples/openapi-ts-axios/src/client/types.gen.ts index 48da19d87..257d5446a 100644 --- a/examples/openapi-ts-axios/src/client/types.gen.ts +++ b/examples/openapi-ts-axios/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseURL: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-fastify/src/client/index.ts b/examples/openapi-ts-fastify/src/client/index.ts index 57ed02bf5..304c5d749 100644 --- a/examples/openapi-ts-fastify/src/client/index.ts +++ b/examples/openapi-ts-fastify/src/client/index.ts @@ -1,4 +1,23 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { createPets, listPets, type Options, showPetById } from './sdk.gen'; +export type { + _Error, + ClientOptions, + CreatePetsData, + CreatePetsError, + CreatePetsErrors, + CreatePetsResponses, + ListPetsData, + ListPetsError, + ListPetsErrors, + ListPetsResponse, + ListPetsResponses, + Pet, + Pets, + ShowPetByIdData, + ShowPetByIdError, + ShowPetByIdErrors, + ShowPetByIdResponse, + ShowPetByIdResponses, +} from './types.gen'; diff --git a/examples/openapi-ts-fastify/src/client/types.gen.ts b/examples/openapi-ts-fastify/src/client/types.gen.ts index 054b6615e..a05af4065 100644 --- a/examples/openapi-ts-fastify/src/client/types.gen.ts +++ b/examples/openapi-ts-fastify/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://petstore.swagger.io/v1' | (string & {}); -}; - export type Pet = { id: number; name: string; @@ -100,3 +96,7 @@ export type ShowPetByIdResponses = { export type ShowPetByIdResponse = ShowPetByIdResponses[keyof ShowPetByIdResponses]; + +export type ClientOptions = { + baseUrl: 'http://petstore.swagger.io/v1' | (string & {}); +}; diff --git a/examples/openapi-ts-fetch/src/client/index.ts b/examples/openapi-ts-fetch/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-fetch/src/client/index.ts +++ b/examples/openapi-ts-fetch/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-fetch/src/client/types.gen.ts b/examples/openapi-ts-fetch/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-fetch/src/client/types.gen.ts +++ b/examples/openapi-ts-fetch/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-ky/src/client/index.ts b/examples/openapi-ts-ky/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-ky/src/client/index.ts +++ b/examples/openapi-ts-ky/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-ky/src/client/types.gen.ts b/examples/openapi-ts-ky/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-ky/src/client/types.gen.ts +++ b/examples/openapi-ts-ky/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-next/src/client/index.ts b/examples/openapi-ts-next/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-next/src/client/index.ts +++ b/examples/openapi-ts-next/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-next/src/client/types.gen.ts b/examples/openapi-ts-next/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-next/src/client/types.gen.ts +++ b/examples/openapi-ts-next/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-ofetch/src/client/index.ts b/examples/openapi-ts-ofetch/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-ofetch/src/client/index.ts +++ b/examples/openapi-ts-ofetch/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-ofetch/src/client/types.gen.ts b/examples/openapi-ts-ofetch/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-ofetch/src/client/types.gen.ts +++ b/examples/openapi-ts-ofetch/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-openai/src/client/index.ts b/examples/openapi-ts-openai/src/client/index.ts index cc646f13a..29b6bf2df 100644 --- a/examples/openapi-ts-openai/src/client/index.ts +++ b/examples/openapi-ts-openai/src/client/index.ts @@ -1,4 +1,1156 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; -export * from './sdk.gen'; +export { OpenAi, type Options } from './sdk.gen'; +export { + type _Error, + type ActivateOrganizationCertificatesData, + type ActivateOrganizationCertificatesResponse, + type ActivateOrganizationCertificatesResponses, + type ActivateProjectCertificatesData, + type ActivateProjectCertificatesResponse, + type ActivateProjectCertificatesResponses, + type AddUploadPartData, + type AddUploadPartRequest, + type AddUploadPartResponse, + type AddUploadPartResponses, + type AdminApiKey, + type AdminApiKeysCreateData, + type AdminApiKeysCreateResponse, + type AdminApiKeysCreateResponses, + type AdminApiKeysDeleteData, + type AdminApiKeysDeleteResponse, + type AdminApiKeysDeleteResponses, + type AdminApiKeysGetData, + type AdminApiKeysGetResponse, + type AdminApiKeysGetResponses, + type AdminApiKeysListData, + type AdminApiKeysListResponse, + type AdminApiKeysListResponses, + type Annotation, + type ApiKeyList, + type ApproximateLocation, + type ArchiveProjectData, + type ArchiveProjectResponse, + type ArchiveProjectResponses, + type AssistantObject, + type AssistantsApiResponseFormatOption, + type AssistantsApiToolChoiceOption, + type AssistantsNamedToolChoice, + type AssistantStreamEvent, + AssistantSupportedModels, + type AssistantTool, + type AssistantToolsCode, + type AssistantToolsFileSearch, + type AssistantToolsFileSearchTypeOnly, + type AssistantToolsFunction, + AudioResponseFormat, + type AuditLog, + type AuditLogActor, + type AuditLogActorApiKey, + type AuditLogActorServiceAccount, + type AuditLogActorSession, + type AuditLogActorUser, + AuditLogEventType, + type AutoChunkingStrategyRequestParam, + type Batch, + type BatchError, + type BatchFileExpirationAfter, + type BatchRequestCounts, + type BatchRequestInput, + type BatchRequestOutput, + type CancelBatchData, + type CancelBatchResponse, + type CancelBatchResponses, + type CancelEvalRunData, + type CancelEvalRunResponse, + type CancelEvalRunResponses, + type CancelFineTuningJobData, + type CancelFineTuningJobResponse, + type CancelFineTuningJobResponses, + type CancelResponseData, + type CancelResponseError, + type CancelResponseErrors, + type CancelResponseResponse, + type CancelResponseResponses, + type CancelRunData, + type CancelRunResponse, + type CancelRunResponses, + type CancelUploadData, + type CancelUploadResponse, + type CancelUploadResponses, + type CancelVectorStoreFileBatchData, + type CancelVectorStoreFileBatchResponse, + type CancelVectorStoreFileBatchResponses, + type Certificate, + type ChatCompletionAllowedTools, + type ChatCompletionAllowedToolsChoice, + type ChatCompletionDeleted, + type ChatCompletionFunctionCallOption, + type ChatCompletionFunctions, + type ChatCompletionList, + type ChatCompletionMessageCustomToolCall, + type ChatCompletionMessageList, + type ChatCompletionMessageToolCall, + type ChatCompletionMessageToolCallChunk, + type ChatCompletionMessageToolCalls, + type ChatCompletionModalities, + type ChatCompletionNamedToolChoice, + type ChatCompletionNamedToolChoiceCustom, + type ChatCompletionRequestAssistantMessage, + type ChatCompletionRequestAssistantMessageContentPart, + type ChatCompletionRequestDeveloperMessage, + type ChatCompletionRequestFunctionMessage, + type ChatCompletionRequestMessage, + type ChatCompletionRequestMessageContentPartAudio, + type ChatCompletionRequestMessageContentPartFile, + type ChatCompletionRequestMessageContentPartImage, + type ChatCompletionRequestMessageContentPartRefusal, + type ChatCompletionRequestMessageContentPartText, + type ChatCompletionRequestSystemMessage, + type ChatCompletionRequestSystemMessageContentPart, + type ChatCompletionRequestToolMessage, + type ChatCompletionRequestToolMessageContentPart, + type ChatCompletionRequestUserMessage, + type ChatCompletionRequestUserMessageContentPart, + type ChatCompletionResponseMessage, + ChatCompletionRole, + type ChatCompletionStreamOptions, + type ChatCompletionStreamResponseDelta, + type ChatCompletionTokenLogprob, + type ChatCompletionTool, + type ChatCompletionToolChoiceOption, + ChatModel, + type ChunkingStrategyRequestParam, + type ChunkingStrategyResponse, + type Click, + type ClientOptions, + type CodeInterpreterFileOutput, + type CodeInterpreterOutputImage, + type CodeInterpreterOutputLogs, + type CodeInterpreterTextOutput, + type CodeInterpreterTool, + type CodeInterpreterToolAuto, + type CodeInterpreterToolCall, + type ComparisonFilter, + type CompleteUploadData, + type CompleteUploadRequest, + type CompleteUploadResponse, + type CompleteUploadResponses, + type CompletionUsage, + type CompoundFilter, + type ComputerAction, + type ComputerCallOutputItemParam, + type ComputerCallSafetyCheckParam, + type ComputerScreenshotImage, + type ComputerToolCall, + type ComputerToolCallOutput, + type ComputerToolCallOutputResource, + type ComputerToolCallSafetyCheck, + type ComputerUsePreviewTool, + type ContainerFileCitationBody, + type ContainerFileListResource, + type ContainerFileResource, + type ContainerListResource, + type ContainerResource, + type Content, + type Coordinate, + type CostsResult, + type CreateAssistantData, + type CreateAssistantRequest, + type CreateAssistantResponse, + type CreateAssistantResponses, + type CreateBatchData, + type CreateBatchResponse, + type CreateBatchResponses, + type CreateChatCompletionData, + type CreateChatCompletionRequest, + type CreateChatCompletionResponse, + type CreateChatCompletionResponse2, + type CreateChatCompletionResponses, + type CreateChatCompletionStreamResponse, + type CreateCompletionData, + type CreateCompletionRequest, + type CreateCompletionResponse, + type CreateCompletionResponse2, + type CreateCompletionResponses, + type CreateContainerBody, + type CreateContainerData, + type CreateContainerFileBody, + type CreateContainerFileData, + type CreateContainerFileResponse, + type CreateContainerFileResponses, + type CreateContainerResponse, + type CreateContainerResponses, + type CreateEmbeddingData, + type CreateEmbeddingRequest, + type CreateEmbeddingResponse, + type CreateEmbeddingResponse2, + type CreateEmbeddingResponses, + type CreateEvalCompletionsRunDataSource, + type CreateEvalCustomDataSourceConfig, + type CreateEvalData, + type CreateEvalItem, + type CreateEvalJsonlRunDataSource, + type CreateEvalLabelModelGrader, + type CreateEvalLogsDataSourceConfig, + type CreateEvalRequest, + type CreateEvalResponse, + type CreateEvalResponses, + type CreateEvalResponsesRunDataSource, + type CreateEvalRunData, + type CreateEvalRunError, + type CreateEvalRunErrors, + type CreateEvalRunRequest, + type CreateEvalRunResponse, + type CreateEvalRunResponses, + type CreateEvalStoredCompletionsDataSourceConfig, + type CreateFileData, + type CreateFileRequest, + type CreateFileResponse, + type CreateFileResponses, + type CreateFineTuningCheckpointPermissionData, + type CreateFineTuningCheckpointPermissionRequest, + type CreateFineTuningCheckpointPermissionResponse, + type CreateFineTuningCheckpointPermissionResponses, + type CreateFineTuningJobData, + type CreateFineTuningJobRequest, + type CreateFineTuningJobResponse, + type CreateFineTuningJobResponses, + type CreateImageData, + type CreateImageEditData, + type CreateImageEditRequest, + type CreateImageEditResponse, + type CreateImageEditResponses, + type CreateImageRequest, + type CreateImageResponse, + type CreateImageResponses, + type CreateImageVariationData, + type CreateImageVariationRequest, + type CreateImageVariationResponse, + type CreateImageVariationResponses, + type CreateMessageData, + type CreateMessageRequest, + type CreateMessageResponse, + type CreateMessageResponses, + type CreateModelResponseProperties, + type CreateModerationData, + type CreateModerationRequest, + type CreateModerationResponse, + type CreateModerationResponse2, + type CreateModerationResponses, + type CreateProjectData, + type CreateProjectResponse, + type CreateProjectResponses, + type CreateProjectServiceAccountData, + type CreateProjectServiceAccountError, + type CreateProjectServiceAccountErrors, + type CreateProjectServiceAccountResponse, + type CreateProjectServiceAccountResponses, + type CreateProjectUserData, + type CreateProjectUserError, + type CreateProjectUserErrors, + type CreateProjectUserResponse, + type CreateProjectUserResponses, + type CreateRealtimeSessionData, + type CreateRealtimeSessionResponse, + type CreateRealtimeSessionResponses, + type CreateRealtimeTranscriptionSessionData, + type CreateRealtimeTranscriptionSessionResponse, + type CreateRealtimeTranscriptionSessionResponses, + type CreateResponse, + type CreateResponseData, + type CreateResponseResponse, + type CreateResponseResponses, + type CreateRunData, + type CreateRunRequest, + type CreateRunRequestWithoutStream, + type CreateRunResponse, + type CreateRunResponses, + type CreateSpeechData, + type CreateSpeechRequest, + type CreateSpeechResponse, + type CreateSpeechResponses, + type CreateSpeechResponseStreamEvent, + type CreateThreadAndRunData, + type CreateThreadAndRunRequest, + type CreateThreadAndRunRequestWithoutStream, + type CreateThreadAndRunResponse, + type CreateThreadAndRunResponses, + type CreateThreadData, + type CreateThreadRequest, + type CreateThreadResponse, + type CreateThreadResponses, + type CreateTranscriptionData, + type CreateTranscriptionRequest, + type CreateTranscriptionResponse, + type CreateTranscriptionResponseJson, + type CreateTranscriptionResponses, + type CreateTranscriptionResponseStreamEvent, + type CreateTranscriptionResponseVerboseJson, + type CreateTranslationData, + type CreateTranslationRequest, + type CreateTranslationResponse, + type CreateTranslationResponseJson, + type CreateTranslationResponses, + type CreateTranslationResponseVerboseJson, + type CreateUploadData, + type CreateUploadRequest, + type CreateUploadResponse, + type CreateUploadResponses, + type CreateVectorStoreData, + type CreateVectorStoreFileBatchData, + type CreateVectorStoreFileBatchRequest, + type CreateVectorStoreFileBatchResponse, + type CreateVectorStoreFileBatchResponses, + type CreateVectorStoreFileData, + type CreateVectorStoreFileRequest, + type CreateVectorStoreFileResponse, + type CreateVectorStoreFileResponses, + type CreateVectorStoreRequest, + type CreateVectorStoreResponse, + type CreateVectorStoreResponses, + type CustomTool, + type CustomToolCall, + type CustomToolCallOutput, + type CustomToolChatCompletions, + type DeactivateOrganizationCertificatesData, + type DeactivateOrganizationCertificatesResponse, + type DeactivateOrganizationCertificatesResponses, + type DeactivateProjectCertificatesData, + type DeactivateProjectCertificatesResponse, + type DeactivateProjectCertificatesResponses, + type DeleteAssistantData, + type DeleteAssistantResponse, + type DeleteAssistantResponse2, + type DeleteAssistantResponses, + type DeleteCertificateData, + type DeleteCertificateResponse, + type DeleteCertificateResponse2, + type DeleteCertificateResponses, + type DeleteChatCompletionData, + type DeleteChatCompletionResponse, + type DeleteChatCompletionResponses, + type DeleteContainerData, + type DeleteContainerFileData, + type DeleteContainerFileResponses, + type DeleteContainerResponses, + type DeleteEvalData, + type DeleteEvalError, + type DeleteEvalErrors, + type DeleteEvalResponse, + type DeleteEvalResponses, + type DeleteEvalRunData, + type DeleteEvalRunError, + type DeleteEvalRunErrors, + type DeleteEvalRunResponse, + type DeleteEvalRunResponses, + type DeleteFileData, + type DeleteFileResponse, + type DeleteFileResponse2, + type DeleteFileResponses, + type DeleteFineTuningCheckpointPermissionData, + type DeleteFineTuningCheckpointPermissionResponse, + type DeleteFineTuningCheckpointPermissionResponse2, + type DeleteFineTuningCheckpointPermissionResponses, + type DeleteInviteData, + type DeleteInviteResponse, + type DeleteInviteResponses, + type DeleteMessageData, + type DeleteMessageResponse, + type DeleteMessageResponse2, + type DeleteMessageResponses, + type DeleteModelData, + type DeleteModelResponse, + type DeleteModelResponse2, + type DeleteModelResponses, + type DeleteProjectApiKeyData, + type DeleteProjectApiKeyError, + type DeleteProjectApiKeyErrors, + type DeleteProjectApiKeyResponse, + type DeleteProjectApiKeyResponses, + type DeleteProjectServiceAccountData, + type DeleteProjectServiceAccountResponse, + type DeleteProjectServiceAccountResponses, + type DeleteProjectUserData, + type DeleteProjectUserError, + type DeleteProjectUserErrors, + type DeleteProjectUserResponse, + type DeleteProjectUserResponses, + type DeleteResponseData, + type DeleteResponseError, + type DeleteResponseErrors, + type DeleteResponseResponses, + type DeleteThreadData, + type DeleteThreadResponse, + type DeleteThreadResponse2, + type DeleteThreadResponses, + type DeleteUserData, + type DeleteUserResponse, + type DeleteUserResponses, + type DeleteVectorStoreData, + type DeleteVectorStoreFileData, + type DeleteVectorStoreFileResponse, + type DeleteVectorStoreFileResponse2, + type DeleteVectorStoreFileResponses, + type DeleteVectorStoreResponse, + type DeleteVectorStoreResponse2, + type DeleteVectorStoreResponses, + type DoneEvent, + type DoubleClick, + type DownloadFileData, + type DownloadFileResponse, + type DownloadFileResponses, + type Drag, + type EasyInputMessage, + type Embedding, + type ErrorEvent, + type ErrorResponse, + type Eval, + type EvalApiError, + type EvalCustomDataSourceConfig, + type EvalGraderLabelModel, + type EvalGraderPython, + type EvalGraderScoreModel, + type EvalGraderStringCheck, + type EvalGraderTextSimilarity, + type EvalItem, + type EvalJsonlFileContentSource, + type EvalJsonlFileIdSource, + type EvalList, + type EvalLogsDataSourceConfig, + type EvalResponsesSource, + type EvalRun, + type EvalRunList, + type EvalRunOutputItem, + type EvalRunOutputItemList, + type EvalStoredCompletionsDataSourceConfig, + type EvalStoredCompletionsSource, + type FileCitationBody, + type FileExpirationAfter, + type FilePath, + FilePurpose, + FileSearchRanker, + type FileSearchRankingOptions, + type FileSearchTool, + type FileSearchToolCall, + type Filters, + type FineTuneChatCompletionRequestAssistantMessage, + type FineTuneChatRequestInput, + type FineTuneDpoHyperparameters, + type FineTuneDpoMethod, + type FineTuneMethod, + type FineTunePreferenceRequestInput, + type FineTuneReinforcementHyperparameters, + type FineTuneReinforcementMethod, + type FineTuneReinforcementRequestInput, + type FineTuneSupervisedHyperparameters, + type FineTuneSupervisedMethod, + type FineTuningCheckpointPermission, + type FineTuningIntegration, + type FineTuningJob, + type FineTuningJobCheckpoint, + type FineTuningJobEvent, + type FunctionCallOutputItemParam, + type FunctionObject, + type FunctionParameters, + type FunctionTool, + type FunctionToolCall, + type FunctionToolCallOutput, + type FunctionToolCallOutputResource, + type FunctionToolCallResource, + type GetAssistantData, + type GetAssistantResponse, + type GetAssistantResponses, + type GetCertificateData, + type GetCertificateResponse, + type GetCertificateResponses, + type GetChatCompletionData, + type GetChatCompletionMessagesData, + type GetChatCompletionMessagesResponse, + type GetChatCompletionMessagesResponses, + type GetChatCompletionResponse, + type GetChatCompletionResponses, + type GetEvalData, + type GetEvalResponse, + type GetEvalResponses, + type GetEvalRunData, + type GetEvalRunOutputItemData, + type GetEvalRunOutputItemResponse, + type GetEvalRunOutputItemResponses, + type GetEvalRunOutputItemsData, + type GetEvalRunOutputItemsResponse, + type GetEvalRunOutputItemsResponses, + type GetEvalRunResponse, + type GetEvalRunResponses, + type GetEvalRunsData, + type GetEvalRunsResponse, + type GetEvalRunsResponses, + type GetMessageData, + type GetMessageResponse, + type GetMessageResponses, + type GetResponseData, + type GetResponseResponse, + type GetResponseResponses, + type GetRunData, + type GetRunResponse, + type GetRunResponses, + type GetRunStepData, + type GetRunStepResponse, + type GetRunStepResponses, + type GetThreadData, + type GetThreadResponse, + type GetThreadResponses, + type GetVectorStoreData, + type GetVectorStoreFileBatchData, + type GetVectorStoreFileBatchResponse, + type GetVectorStoreFileBatchResponses, + type GetVectorStoreFileData, + type GetVectorStoreFileResponse, + type GetVectorStoreFileResponses, + type GetVectorStoreResponse, + type GetVectorStoreResponses, + type GraderLabelModel, + type GraderMulti, + type GraderPython, + type GraderScoreModel, + type GraderStringCheck, + type GraderTextSimilarity, + type Image, + type ImageEditCompletedEvent, + type ImageEditPartialImageEvent, + type ImageEditStreamEvent, + type ImageGenCompletedEvent, + type ImageGenInputUsageDetails, + type ImageGenPartialImageEvent, + type ImageGenStreamEvent, + type ImageGenTool, + type ImageGenToolCall, + type ImageGenUsage, + ImageInputFidelity, + type ImagesResponse, + type ImagesUsage, + Includable, + type InputAudio, + type InputContent, + type InputFileContent, + type InputImageContent, + type InputItem, + type InputMessage, + type InputMessageContentList, + type InputMessageResource, + type InputTextContent, + type Invite, + type InviteDeleteResponse, + type InviteListResponse, + type InviteRequest, + type InviteUserData, + type InviteUserResponse, + type InviteUserResponses, + type Item, + type ItemReferenceParam, + type ItemResource, + type KeyPress, + type ListAssistantsData, + type ListAssistantsResponse, + type ListAssistantsResponse2, + type ListAssistantsResponses, + type ListAuditLogsData, + type ListAuditLogsResponse, + type ListAuditLogsResponse2, + type ListAuditLogsResponses, + type ListBatchesData, + type ListBatchesResponse, + type ListBatchesResponse2, + type ListBatchesResponses, + type ListCertificatesResponse, + type ListChatCompletionsData, + type ListChatCompletionsResponse, + type ListChatCompletionsResponses, + type ListContainerFilesData, + type ListContainerFilesResponse, + type ListContainerFilesResponses, + type ListContainersData, + type ListContainersResponse, + type ListContainersResponses, + type ListEvalsData, + type ListEvalsResponse, + type ListEvalsResponses, + type ListFilesData, + type ListFilesInVectorStoreBatchData, + type ListFilesInVectorStoreBatchResponse, + type ListFilesInVectorStoreBatchResponses, + type ListFilesResponse, + type ListFilesResponse2, + type ListFilesResponses, + type ListFineTuningCheckpointPermissionResponse, + type ListFineTuningCheckpointPermissionsData, + type ListFineTuningCheckpointPermissionsResponse, + type ListFineTuningCheckpointPermissionsResponses, + type ListFineTuningEventsData, + type ListFineTuningEventsResponse, + type ListFineTuningEventsResponses, + type ListFineTuningJobCheckpointsData, + type ListFineTuningJobCheckpointsResponse, + type ListFineTuningJobCheckpointsResponse2, + type ListFineTuningJobCheckpointsResponses, + type ListFineTuningJobEventsResponse, + type ListInputItemsData, + type ListInputItemsResponse, + type ListInputItemsResponses, + type ListInvitesData, + type ListInvitesResponse, + type ListInvitesResponses, + type ListMessagesData, + type ListMessagesResponse, + type ListMessagesResponse2, + type ListMessagesResponses, + type ListModelsData, + type ListModelsResponse, + type ListModelsResponse2, + type ListModelsResponses, + type ListOrganizationCertificatesData, + type ListOrganizationCertificatesResponse, + type ListOrganizationCertificatesResponses, + type ListPaginatedFineTuningJobsData, + type ListPaginatedFineTuningJobsResponse, + type ListPaginatedFineTuningJobsResponse2, + type ListPaginatedFineTuningJobsResponses, + type ListProjectApiKeysData, + type ListProjectApiKeysResponse, + type ListProjectApiKeysResponses, + type ListProjectCertificatesData, + type ListProjectCertificatesResponse, + type ListProjectCertificatesResponses, + type ListProjectRateLimitsData, + type ListProjectRateLimitsResponse, + type ListProjectRateLimitsResponses, + type ListProjectsData, + type ListProjectServiceAccountsData, + type ListProjectServiceAccountsError, + type ListProjectServiceAccountsErrors, + type ListProjectServiceAccountsResponse, + type ListProjectServiceAccountsResponses, + type ListProjectsResponse, + type ListProjectsResponses, + type ListProjectUsersData, + type ListProjectUsersError, + type ListProjectUsersErrors, + type ListProjectUsersResponse, + type ListProjectUsersResponses, + type ListRunsData, + type ListRunsResponse, + type ListRunsResponse2, + type ListRunsResponses, + type ListRunStepsData, + type ListRunStepsResponse, + type ListRunStepsResponse2, + type ListRunStepsResponses, + type ListUsersData, + type ListUsersResponse, + type ListUsersResponses, + type ListVectorStoreFilesData, + type ListVectorStoreFilesResponse, + type ListVectorStoreFilesResponse2, + type ListVectorStoreFilesResponses, + type ListVectorStoresData, + type ListVectorStoresResponse, + type ListVectorStoresResponse2, + type ListVectorStoresResponses, + type LocalShellExecAction, + type LocalShellTool, + type LocalShellToolCall, + type LocalShellToolCallOutput, + type LogProb, + type LogProbProperties, + type McpApprovalRequest, + type McpApprovalResponse, + type McpApprovalResponseResource, + type McpListTools, + type McpListToolsTool, + type McpTool, + type McpToolCall, + type MessageContent, + type MessageContentDelta, + type MessageContentImageFileObject, + type MessageContentImageUrlObject, + type MessageContentRefusalObject, + type MessageContentTextAnnotationsFileCitationObject, + type MessageContentTextAnnotationsFilePathObject, + type MessageContentTextObject, + type MessageDeltaContentImageFileObject, + type MessageDeltaContentImageUrlObject, + type MessageDeltaContentRefusalObject, + type MessageDeltaContentTextAnnotationsFileCitationObject, + type MessageDeltaContentTextAnnotationsFilePathObject, + type MessageDeltaContentTextObject, + type MessageDeltaObject, + type MessageObject, + type MessageRequestContentTextObject, + type MessageStreamEvent, + type Metadata, + type Model, + type ModelIds, + type ModelIdsResponses, + type ModelIdsShared, + type ModelResponseProperties, + type ModerationImageUrlInput, + type ModerationTextInput, + type ModifyAssistantData, + type ModifyAssistantRequest, + type ModifyAssistantResponse, + type ModifyAssistantResponses, + type ModifyCertificateData, + type ModifyCertificateRequest, + type ModifyCertificateResponse, + type ModifyCertificateResponses, + type ModifyMessageData, + type ModifyMessageRequest, + type ModifyMessageResponse, + type ModifyMessageResponses, + type ModifyProjectData, + type ModifyProjectError, + type ModifyProjectErrors, + type ModifyProjectResponse, + type ModifyProjectResponses, + type ModifyProjectUserData, + type ModifyProjectUserError, + type ModifyProjectUserErrors, + type ModifyProjectUserResponse, + type ModifyProjectUserResponses, + type ModifyRunData, + type ModifyRunRequest, + type ModifyRunResponse, + type ModifyRunResponses, + type ModifyThreadData, + type ModifyThreadRequest, + type ModifyThreadResponse, + type ModifyThreadResponses, + type ModifyUserData, + type ModifyUserResponse, + type ModifyUserResponses, + type ModifyVectorStoreData, + type ModifyVectorStoreResponse, + type ModifyVectorStoreResponses, + type Move, + type OpenAiFile, + type OtherChunkingStrategyResponseParam, + type OutputAudio, + type OutputContent, + type OutputItem, + type OutputMessage, + type OutputTextContent, + type ParallelToolCalls, + type PartialImages, + type PauseFineTuningJobData, + type PauseFineTuningJobResponse, + type PauseFineTuningJobResponses, + type PostBatchCancelledWebhookPayload, + type PostBatchCancelledWebhookRequest, + type PostBatchCompletedWebhookPayload, + type PostBatchCompletedWebhookRequest, + type PostBatchExpiredWebhookPayload, + type PostBatchExpiredWebhookRequest, + type PostBatchFailedWebhookPayload, + type PostBatchFailedWebhookRequest, + type PostEvalRunCanceledWebhookPayload, + type PostEvalRunCanceledWebhookRequest, + type PostEvalRunFailedWebhookPayload, + type PostEvalRunFailedWebhookRequest, + type PostEvalRunSucceededWebhookPayload, + type PostEvalRunSucceededWebhookRequest, + type PostFineTuningJobCancelledWebhookPayload, + type PostFineTuningJobCancelledWebhookRequest, + type PostFineTuningJobFailedWebhookPayload, + type PostFineTuningJobFailedWebhookRequest, + type PostFineTuningJobSucceededWebhookPayload, + type PostFineTuningJobSucceededWebhookRequest, + type PostResponseCancelledWebhookPayload, + type PostResponseCancelledWebhookRequest, + type PostResponseCompletedWebhookPayload, + type PostResponseCompletedWebhookRequest, + type PostResponseFailedWebhookPayload, + type PostResponseFailedWebhookRequest, + type PostResponseIncompleteWebhookPayload, + type PostResponseIncompleteWebhookRequest, + type PredictionContent, + type Project, + type ProjectApiKey, + type ProjectApiKeyDeleteResponse, + type ProjectApiKeyListResponse, + type ProjectCreateRequest, + type ProjectListResponse, + type ProjectRateLimit, + type ProjectRateLimitListResponse, + type ProjectRateLimitUpdateRequest, + type ProjectServiceAccount, + type ProjectServiceAccountApiKey, + type ProjectServiceAccountCreateRequest, + type ProjectServiceAccountCreateResponse, + type ProjectServiceAccountDeleteResponse, + type ProjectServiceAccountListResponse, + type ProjectUpdateRequest, + type ProjectUser, + type ProjectUserCreateRequest, + type ProjectUserDeleteResponse, + type ProjectUserListResponse, + type ProjectUserUpdateRequest, + type Prompt, + type RankingOptions, + type RealtimeClientEvent, + type RealtimeClientEventConversationItemCreate, + type RealtimeClientEventConversationItemDelete, + type RealtimeClientEventConversationItemRetrieve, + type RealtimeClientEventConversationItemTruncate, + type RealtimeClientEventInputAudioBufferAppend, + type RealtimeClientEventInputAudioBufferClear, + type RealtimeClientEventInputAudioBufferCommit, + type RealtimeClientEventOutputAudioBufferClear, + type RealtimeClientEventResponseCancel, + type RealtimeClientEventResponseCreate, + type RealtimeClientEventSessionUpdate, + type RealtimeClientEventTranscriptionSessionUpdate, + type RealtimeConnectParams, + type RealtimeConversationItem, + type RealtimeConversationItemContent, + type RealtimeConversationItemWithReference, + type RealtimeResponse, + type RealtimeResponseCreateParams, + type RealtimeServerEvent, + type RealtimeServerEventConversationCreated, + type RealtimeServerEventConversationItemCreated, + type RealtimeServerEventConversationItemDeleted, + type RealtimeServerEventConversationItemInputAudioTranscriptionCompleted, + type RealtimeServerEventConversationItemInputAudioTranscriptionDelta, + type RealtimeServerEventConversationItemInputAudioTranscriptionFailed, + type RealtimeServerEventConversationItemRetrieved, + type RealtimeServerEventConversationItemTruncated, + type RealtimeServerEventError, + type RealtimeServerEventInputAudioBufferCleared, + type RealtimeServerEventInputAudioBufferCommitted, + type RealtimeServerEventInputAudioBufferSpeechStarted, + type RealtimeServerEventInputAudioBufferSpeechStopped, + type RealtimeServerEventOutputAudioBufferCleared, + type RealtimeServerEventOutputAudioBufferStarted, + type RealtimeServerEventOutputAudioBufferStopped, + type RealtimeServerEventRateLimitsUpdated, + type RealtimeServerEventResponseAudioDelta, + type RealtimeServerEventResponseAudioDone, + type RealtimeServerEventResponseAudioTranscriptDelta, + type RealtimeServerEventResponseAudioTranscriptDone, + type RealtimeServerEventResponseContentPartAdded, + type RealtimeServerEventResponseContentPartDone, + type RealtimeServerEventResponseCreated, + type RealtimeServerEventResponseDone, + type RealtimeServerEventResponseFunctionCallArgumentsDelta, + type RealtimeServerEventResponseFunctionCallArgumentsDone, + type RealtimeServerEventResponseOutputItemAdded, + type RealtimeServerEventResponseOutputItemDone, + type RealtimeServerEventResponseTextDelta, + type RealtimeServerEventResponseTextDone, + type RealtimeServerEventSessionCreated, + type RealtimeServerEventSessionUpdated, + type RealtimeServerEventTranscriptionSessionUpdated, + type RealtimeSession, + type RealtimeSessionCreateRequest, + type RealtimeSessionCreateResponse, + type RealtimeTranscriptionSessionCreateRequest, + type RealtimeTranscriptionSessionCreateResponse, + type Reasoning, + ReasoningEffort, + type ReasoningItem, + type RefusalContent, + type Response, + type ResponseAudioDeltaEvent, + type ResponseAudioDoneEvent, + type ResponseAudioTranscriptDeltaEvent, + type ResponseAudioTranscriptDoneEvent, + type ResponseCodeInterpreterCallCodeDeltaEvent, + type ResponseCodeInterpreterCallCodeDoneEvent, + type ResponseCodeInterpreterCallCompletedEvent, + type ResponseCodeInterpreterCallInProgressEvent, + type ResponseCodeInterpreterCallInterpretingEvent, + type ResponseCompletedEvent, + type ResponseContentPartAddedEvent, + type ResponseContentPartDoneEvent, + type ResponseCreatedEvent, + type ResponseCustomToolCallInputDeltaEvent, + type ResponseCustomToolCallInputDoneEvent, + type ResponseError, + ResponseErrorCode, + type ResponseErrorEvent, + type ResponseFailedEvent, + type ResponseFileSearchCallCompletedEvent, + type ResponseFileSearchCallInProgressEvent, + type ResponseFileSearchCallSearchingEvent, + type ResponseFormatJsonObject, + type ResponseFormatJsonSchema, + type ResponseFormatJsonSchemaSchema, + type ResponseFormatText, + type ResponseFormatTextGrammar, + type ResponseFormatTextPython, + type ResponseFunctionCallArgumentsDeltaEvent, + type ResponseFunctionCallArgumentsDoneEvent, + type ResponseImageGenCallCompletedEvent, + type ResponseImageGenCallGeneratingEvent, + type ResponseImageGenCallInProgressEvent, + type ResponseImageGenCallPartialImageEvent, + type ResponseIncompleteEvent, + type ResponseInProgressEvent, + type ResponseItemList, + type ResponseLogProb, + type ResponseMcpCallArgumentsDeltaEvent, + type ResponseMcpCallArgumentsDoneEvent, + type ResponseMcpCallCompletedEvent, + type ResponseMcpCallFailedEvent, + type ResponseMcpCallInProgressEvent, + type ResponseMcpListToolsCompletedEvent, + type ResponseMcpListToolsFailedEvent, + type ResponseMcpListToolsInProgressEvent, + type ResponseModalities, + type ResponseOutputItemAddedEvent, + type ResponseOutputItemDoneEvent, + type ResponseOutputTextAnnotationAddedEvent, + type ResponsePromptVariables, + type ResponseProperties, + type ResponseQueuedEvent, + type ResponseReasoningSummaryPartAddedEvent, + type ResponseReasoningSummaryPartDoneEvent, + type ResponseReasoningSummaryTextDeltaEvent, + type ResponseReasoningSummaryTextDoneEvent, + type ResponseReasoningTextDeltaEvent, + type ResponseReasoningTextDoneEvent, + type ResponseRefusalDeltaEvent, + type ResponseRefusalDoneEvent, + type ResponseStreamEvent, + type ResponseStreamOptions, + type ResponseTextDeltaEvent, + type ResponseTextDoneEvent, + type ResponseUsage, + type ResponseWebSearchCallCompletedEvent, + type ResponseWebSearchCallInProgressEvent, + type ResponseWebSearchCallSearchingEvent, + type ResumeFineTuningJobData, + type ResumeFineTuningJobResponse, + type ResumeFineTuningJobResponses, + type RetrieveBatchData, + type RetrieveBatchResponse, + type RetrieveBatchResponses, + type RetrieveContainerData, + type RetrieveContainerFileContentData, + type RetrieveContainerFileContentResponses, + type RetrieveContainerFileData, + type RetrieveContainerFileResponse, + type RetrieveContainerFileResponses, + type RetrieveContainerResponse, + type RetrieveContainerResponses, + type RetrieveFileData, + type RetrieveFileResponse, + type RetrieveFileResponses, + type RetrieveFineTuningJobData, + type RetrieveFineTuningJobResponse, + type RetrieveFineTuningJobResponses, + type RetrieveInviteData, + type RetrieveInviteResponse, + type RetrieveInviteResponses, + type RetrieveModelData, + type RetrieveModelResponse, + type RetrieveModelResponses, + type RetrieveProjectApiKeyData, + type RetrieveProjectApiKeyResponse, + type RetrieveProjectApiKeyResponses, + type RetrieveProjectData, + type RetrieveProjectResponse, + type RetrieveProjectResponses, + type RetrieveProjectServiceAccountData, + type RetrieveProjectServiceAccountResponse, + type RetrieveProjectServiceAccountResponses, + type RetrieveProjectUserData, + type RetrieveProjectUserResponse, + type RetrieveProjectUserResponses, + type RetrieveUserData, + type RetrieveUserResponse, + type RetrieveUserResponses, + type RetrieveVectorStoreFileContentData, + type RetrieveVectorStoreFileContentResponse, + type RetrieveVectorStoreFileContentResponses, + type RunCompletionUsage, + type RunGraderData, + type RunGraderRequest, + type RunGraderResponse, + type RunGraderResponse2, + type RunGraderResponses, + type RunObject, + RunStatus, + type RunStepCompletionUsage, + type RunStepDeltaObject, + type RunStepDeltaObjectDelta, + type RunStepDeltaStepDetailsMessageCreationObject, + type RunStepDeltaStepDetailsToolCall, + type RunStepDeltaStepDetailsToolCallsCodeObject, + type RunStepDeltaStepDetailsToolCallsCodeOutputImageObject, + type RunStepDeltaStepDetailsToolCallsCodeOutputLogsObject, + type RunStepDeltaStepDetailsToolCallsFileSearchObject, + type RunStepDeltaStepDetailsToolCallsFunctionObject, + type RunStepDeltaStepDetailsToolCallsObject, + type RunStepDetailsMessageCreationObject, + type RunStepDetailsToolCall, + type RunStepDetailsToolCallsCodeObject, + type RunStepDetailsToolCallsCodeOutputImageObject, + type RunStepDetailsToolCallsCodeOutputLogsObject, + type RunStepDetailsToolCallsFileSearchObject, + type RunStepDetailsToolCallsFileSearchRankingOptionsObject, + type RunStepDetailsToolCallsFileSearchResultObject, + type RunStepDetailsToolCallsFunctionObject, + type RunStepDetailsToolCallsObject, + type RunStepObject, + type RunStepStreamEvent, + type RunStreamEvent, + type RunToolCallObject, + type Screenshot, + type Scroll, + type SearchVectorStoreData, + type SearchVectorStoreResponse, + type SearchVectorStoreResponses, + ServiceTier, + type SpeechAudioDeltaEvent, + type SpeechAudioDoneEvent, + type StaticChunkingStrategy, + type StaticChunkingStrategyRequestParam, + type StaticChunkingStrategyResponseParam, + type StopConfiguration, + type SubmitToolOuputsToRunData, + type SubmitToolOuputsToRunResponse, + type SubmitToolOuputsToRunResponses, + type SubmitToolOutputsRunRequest, + type SubmitToolOutputsRunRequestWithoutStream, + type TextAnnotation, + type TextAnnotationDelta, + type TextResponseFormatConfiguration, + type TextResponseFormatJsonSchema, + type ThreadObject, + type ThreadStreamEvent, + type ToggleCertificatesRequest, + type Tool, + type ToolChoiceAllowed, + type ToolChoiceCustom, + type ToolChoiceFunction, + type ToolChoiceMcp, + ToolChoiceOptions, + type ToolChoiceTypes, + type TopLogProb, + type TranscriptionChunkingStrategy, + TranscriptionInclude, + type TranscriptionSegment, + type TranscriptionWord, + type TranscriptTextDeltaEvent, + type TranscriptTextDoneEvent, + type TranscriptTextUsageDuration, + type TranscriptTextUsageTokens, + type TruncationObject, + type Type, + type UpdateChatCompletionData, + type UpdateChatCompletionResponse, + type UpdateChatCompletionResponses, + type UpdateEvalData, + type UpdateEvalResponse, + type UpdateEvalResponses, + type UpdateProjectRateLimitsData, + type UpdateProjectRateLimitsError, + type UpdateProjectRateLimitsErrors, + type UpdateProjectRateLimitsResponse, + type UpdateProjectRateLimitsResponses, + type UpdateVectorStoreFileAttributesData, + type UpdateVectorStoreFileAttributesRequest, + type UpdateVectorStoreFileAttributesResponse, + type UpdateVectorStoreFileAttributesResponses, + type UpdateVectorStoreRequest, + type Upload, + type UploadCertificateData, + type UploadCertificateRequest, + type UploadCertificateResponse, + type UploadCertificateResponses, + type UploadPart, + type UrlCitationBody, + type UsageAudioSpeechesData, + type UsageAudioSpeechesResponse, + type UsageAudioSpeechesResponses, + type UsageAudioSpeechesResult, + type UsageAudioTranscriptionsData, + type UsageAudioTranscriptionsResponse, + type UsageAudioTranscriptionsResponses, + type UsageAudioTranscriptionsResult, + type UsageCodeInterpreterSessionsData, + type UsageCodeInterpreterSessionsResponse, + type UsageCodeInterpreterSessionsResponses, + type UsageCodeInterpreterSessionsResult, + type UsageCompletionsData, + type UsageCompletionsResponse, + type UsageCompletionsResponses, + type UsageCompletionsResult, + type UsageCostsData, + type UsageCostsResponse, + type UsageCostsResponses, + type UsageEmbeddingsData, + type UsageEmbeddingsResponse, + type UsageEmbeddingsResponses, + type UsageEmbeddingsResult, + type UsageImagesData, + type UsageImagesResponse, + type UsageImagesResponses, + type UsageImagesResult, + type UsageModerationsData, + type UsageModerationsResponse, + type UsageModerationsResponses, + type UsageModerationsResult, + type UsageResponse, + type UsageTimeBucket, + type UsageVectorStoresData, + type UsageVectorStoresResponse, + type UsageVectorStoresResponses, + type UsageVectorStoresResult, + type User, + type UserDeleteResponse, + type UserListResponse, + type UserRoleUpdateRequest, + type VadConfig, + type ValidateGraderData, + type ValidateGraderRequest, + type ValidateGraderResponse, + type ValidateGraderResponse2, + type ValidateGraderResponses, + type VectorStoreExpirationAfter, + type VectorStoreFileAttributes, + type VectorStoreFileBatchObject, + type VectorStoreFileContentResponse, + type VectorStoreFileObject, + type VectorStoreObject, + type VectorStoreSearchRequest, + type VectorStoreSearchResultContentObject, + type VectorStoreSearchResultItem, + type VectorStoreSearchResultsPage, + Verbosity, + type VoiceIdsShared, + type Wait, + type WebhookBatchCancelled, + type WebhookBatchCompleted, + type WebhookBatchExpired, + type WebhookBatchFailed, + type WebhookEvalRunCanceled, + type WebhookEvalRunFailed, + type WebhookEvalRunSucceeded, + type WebhookFineTuningJobCancelled, + type WebhookFineTuningJobFailed, + type WebhookFineTuningJobSucceeded, + type WebhookResponseCancelled, + type WebhookResponseCompleted, + type WebhookResponseFailed, + type WebhookResponseIncomplete, + type Webhooks, + type WebSearchActionFind, + type WebSearchActionOpenPage, + type WebSearchActionSearch, + WebSearchContextSize, + type WebSearchLocation, + type WebSearchPreviewTool, + type WebSearchToolCall, +} from './types.gen'; diff --git a/examples/openapi-ts-openai/src/client/types.gen.ts b/examples/openapi-ts-openai/src/client/types.gen.ts index 449f08aca..362b15ac4 100644 --- a/examples/openapi-ts-openai/src/client/types.gen.ts +++ b/examples/openapi-ts-openai/src/client/types.gen.ts @@ -1,25 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://api.openai.com/v1' | (string & {}); -}; - -export type Webhooks = - | PostBatchCancelledWebhookRequest - | PostBatchCompletedWebhookRequest - | PostBatchExpiredWebhookRequest - | PostBatchFailedWebhookRequest - | PostEvalRunCanceledWebhookRequest - | PostEvalRunFailedWebhookRequest - | PostEvalRunSucceededWebhookRequest - | PostFineTuningJobCancelledWebhookRequest - | PostFineTuningJobFailedWebhookRequest - | PostFineTuningJobSucceededWebhookRequest - | PostResponseCancelledWebhookRequest - | PostResponseCompletedWebhookRequest - | PostResponseFailedWebhookRequest - | PostResponseIncompleteWebhookRequest; - export type AddUploadPartRequest = { /** * The chunk of bytes for this Part. @@ -259,8 +239,8 @@ export const AssistantSupportedModels = { GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', } as const; -export type AssistantSupportedModels2 = - (typeof AssistantSupportedModels2)[keyof typeof AssistantSupportedModels2]; +export type AssistantSupportedModels = + (typeof AssistantSupportedModels)[keyof typeof AssistantSupportedModels]; /** * Code interpreter tool @@ -378,8 +358,8 @@ export const AudioResponseFormat = { * The format of the output, in one of these options: `json`, `text`, `srt`, `verbose_json`, or `vtt`. For `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`, the only supported format is `json`. * */ -export type AudioResponseFormat2 = - (typeof AudioResponseFormat2)[keyof typeof AudioResponseFormat2]; +export type AudioResponseFormat = + (typeof AudioResponseFormat)[keyof typeof AudioResponseFormat]; /** * A log of a user action or configuration change within this organization. @@ -389,7 +369,7 @@ export type AuditLog = { * The ID of this log. */ id: string; - type: AuditLogEventType2; + type: AuditLogEventType; /** * The Unix timestamp (in seconds) of the event. */ @@ -949,8 +929,8 @@ export const AuditLogEventType = { /** * The event type. */ -export type AuditLogEventType2 = - (typeof AuditLogEventType2)[keyof typeof AuditLogEventType2]; +export type AuditLogEventType = + (typeof AuditLogEventType)[keyof typeof AuditLogEventType]; /** * Auto Chunking Strategy @@ -1911,8 +1891,8 @@ export const ChatCompletionRole = { /** * The role of the author of a message */ -export type ChatCompletionRole2 = - (typeof ChatCompletionRole2)[keyof typeof ChatCompletionRole2]; +export type ChatCompletionRole = + (typeof ChatCompletionRole)[keyof typeof ChatCompletionRole]; /** * Options for streaming response. Only set this when you set `stream: true`. @@ -2698,7 +2678,7 @@ export type CreateAssistantRequest = { * ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them. * */ - model: string | AssistantSupportedModels2; + model: string | AssistantSupportedModels; /** * The name of the assistant. The maximum length is 256 characters. * @@ -2714,7 +2694,7 @@ export type CreateAssistantRequest = { * */ instructions?: string; - reasoning_effort?: ReasoningEffort2; + reasoning_effort?: ReasoningEffort; /** * A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`. * @@ -2815,8 +2795,8 @@ export type CreateChatCompletionRequest = CreateModelResponseProperties & { */ model: ModelIdsShared; modalities?: ResponseModalities; - verbosity?: Verbosity2; - reasoning_effort?: ReasoningEffort2; + verbosity?: Verbosity; + reasoning_effort?: ReasoningEffort; /** * An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and [reasoning tokens](https://platform.openai.com/docs/guides/reasoning). * @@ -2856,7 +2836,7 @@ export type CreateChatCompletionRequest = CreateModelResponseProperties & { type: 'approximate'; approximate: WebSearchLocation; }; - search_context_size?: WebSearchContextSize2; + search_context_size?: WebSearchContextSize; }; /** * An integer between 0 and 20 specifying the number of most likely tokens to @@ -3077,7 +3057,7 @@ export type CreateChatCompletionResponse = { * The model used for the chat completion. */ model: string; - service_tier?: ServiceTier2; + service_tier?: ServiceTier; /** * This fingerprint represents the backend configuration that the model runs with. * @@ -3151,7 +3131,7 @@ export type CreateChatCompletionStreamResponse = { * The model to generate the completion. */ model: string; - service_tier?: ServiceTier2; + service_tier?: ServiceTier; /** * This fingerprint represents the backend configuration that the model runs with. * Can be used in conjunction with the `seed` request parameter to understand when backend changes have been made that might impact determinism. @@ -3859,7 +3839,7 @@ export type CreateFileRequest = { * */ file: Blob | File; - purpose: FilePurpose2; + purpose: FilePurpose; expires_after?: FileExpirationAfter; }; @@ -4065,7 +4045,7 @@ export type CreateImageEditRequest = { * */ user?: string; - input_fidelity?: ImageInputFidelity2; + input_fidelity?: ImageInputFidelity; /** * Edit the image in streaming mode. Defaults to `false`. See the * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information. @@ -4498,7 +4478,7 @@ export type CreateResponse = CreateModelResponseProperties & * enrolled in the zero data retention program). * */ - include?: Array; + include?: Array; /** * Whether to allow the model to run tool calls in parallel. * @@ -4538,8 +4518,8 @@ export type CreateRunRequest = { /** * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to be used to execute this run. If a value is provided here, it will override the model associated with the assistant. If not, the model associated with the assistant will be used. */ - model?: string | AssistantSupportedModels2; - reasoning_effort?: ReasoningEffort2; + model?: string | AssistantSupportedModels; + reasoning_effort?: ReasoningEffort; /** * Overrides the [instructions](https://platform.openai.com/docs/api-reference/assistants/createAssistant) of the assistant. This is useful for modifying the behavior on a per-run basis. */ @@ -4836,7 +4816,7 @@ export type CreateTranscriptionRequest = { * */ prompt?: string; - response_format?: AudioResponseFormat2; + response_format?: AudioResponseFormat; /** * The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use [log probability](https://en.wikipedia.org/wiki/Log_probability) to automatically increase the temperature until certain thresholds are hit. * @@ -4866,7 +4846,7 @@ export type CreateTranscriptionRequest = { * the models `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. * */ - include?: Array; + include?: Array; }; /** @@ -5746,7 +5726,7 @@ export type EvalResponsesSource = { /** * Optional reasoning effort parameter. This is a query parameter used to select responses. */ - reasoning_effort?: ReasoningEffort2; + reasoning_effort?: ReasoningEffort; /** * Sampling temperature. This is a query parameter used to select responses. */ @@ -6181,8 +6161,8 @@ export const FileSearchRanker = { /** * The ranker to use for the file search. If not specified will use the `auto` ranker. */ -export type FileSearchRanker2 = - (typeof FileSearchRanker2)[keyof typeof FileSearchRanker2]; +export type FileSearchRanker = + (typeof FileSearchRanker)[keyof typeof FileSearchRanker]; /** * File search tool call ranking options @@ -6193,7 +6173,7 @@ export type FileSearchRanker2 = * */ export type FileSearchRankingOptions = { - ranker?: FileSearchRanker2; + ranker?: FileSearchRanker; /** * The score threshold for the file search. All values must be a floating point number between 0 and 1. */ @@ -7313,7 +7293,7 @@ export type ImageGenTool = { * */ background?: 'transparent' | 'opaque' | 'auto'; - input_fidelity?: ImageInputFidelity2; + input_fidelity?: ImageInputFidelity; /** * Optional mask for inpainting. Contains `image_url` * (string, optional) and `file_id` (string, optional). @@ -7381,8 +7361,8 @@ export const ImageInputFidelity = { HIGH: 'high', LOW: 'low' } as const; * for `gpt-image-1`. Supports `high` and `low`. Defaults to `low`. * */ -export type ImageInputFidelity2 = - (typeof ImageInputFidelity2)[keyof typeof ImageInputFidelity2]; +export type ImageInputFidelity = + (typeof ImageInputFidelity)[keyof typeof ImageInputFidelity]; /** * Image generation response @@ -7494,7 +7474,7 @@ export const Includable = { * enrolled in the zero data retention program). * */ -export type Includable2 = (typeof Includable2)[keyof typeof Includable2]; +export type Includable = (typeof Includable)[keyof typeof Includable]; /** * Audio input @@ -8846,7 +8826,7 @@ export type ModelIdsResponses = | 'computer-use-preview' | 'computer-use-preview-2025-03-11'; -export type ModelIdsShared = string | ChatModel2; +export type ModelIdsShared = string | ChatModel; export type ModelResponseProperties = { metadata?: Metadata; @@ -8892,7 +8872,7 @@ export type ModelResponseProperties = { * */ prompt_cache_key?: string; - service_tier?: ServiceTier2; + service_tier?: ServiceTier; }; export type ModifyAssistantRequest = { @@ -8900,8 +8880,8 @@ export type ModifyAssistantRequest = { * ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them. * */ - model?: string | AssistantSupportedModels2; - reasoning_effort?: ReasoningEffort2; + model?: string | AssistantSupportedModels; + reasoning_effort?: ReasoningEffort; /** * The name of the assistant. The maximum length is 256 characters. * @@ -12424,7 +12404,7 @@ export type RealtimeTranscriptionSessionCreateResponse = { * */ export type Reasoning = { - effort?: ReasoningEffort2; + effort?: ReasoningEffort; /** * A summary of the reasoning performed by the model. This can be * useful for debugging and understanding the model's reasoning process. @@ -12468,8 +12448,8 @@ export const ReasoningEffort = { * on reasoning in a response. * */ -export type ReasoningEffort2 = - (typeof ReasoningEffort2)[keyof typeof ReasoningEffort2]; +export type ReasoningEffort = + (typeof ReasoningEffort)[keyof typeof ReasoningEffort]; /** * Reasoning @@ -12980,7 +12960,7 @@ export type ResponseCustomToolCallInputDoneEvent = { * */ export type ResponseError = { - code: ResponseErrorCode2; + code: ResponseErrorCode; /** * A human-readable description of the error. * @@ -13017,8 +12997,8 @@ export const ResponseErrorCode = { * The error code for the response. * */ -export type ResponseErrorCode2 = - (typeof ResponseErrorCode2)[keyof typeof ResponseErrorCode2]; +export type ResponseErrorCode = + (typeof ResponseErrorCode)[keyof typeof ResponseErrorCode]; /** * Emitted when an error occurs. @@ -13896,7 +13876,7 @@ export type ResponseProperties = { */ text?: { format?: TextResponseFormatConfiguration; - verbosity?: Verbosity2; + verbosity?: Verbosity; }; /** * An array of tools the model may call while generating a response. You @@ -13923,7 +13903,7 @@ export type ResponseProperties = { * */ tool_choice?: - | ToolChoiceOptions2 + | ToolChoiceOptions | ToolChoiceAllowed | ToolChoiceTypes | ToolChoiceFunction @@ -14765,7 +14745,7 @@ export type RunObject = { * The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run. */ assistant_id: string; - status: RunStatus2; + status: RunStatus; /** * Details on the action required to continue the run. Will be `null` if no action is required. */ @@ -15190,7 +15170,7 @@ export type RunStepDetailsToolCallsFileSearchObject = { * The ranking options for the file search. */ export type RunStepDetailsToolCallsFileSearchRankingOptionsObject = { - ranker: FileSearchRanker2; + ranker: FileSearchRanker; /** * The score threshold for the file search. All values must be a floating point number between 0 and 1. */ @@ -15537,7 +15517,7 @@ export const ServiceTier = { * When the `service_tier` parameter is set, the response body will include the `service_tier` value based on the processing mode actually used to serve the request. This response value may be different from the value set in the parameter. * */ -export type ServiceTier2 = (typeof ServiceTier2)[keyof typeof ServiceTier2]; +export type ServiceTier = (typeof ServiceTier)[keyof typeof ServiceTier]; /** * Emitted for each chunk of audio data generated during speech synthesis. @@ -15933,8 +15913,8 @@ export const ToolChoiceOptions = { * `required` means the model must call one or more tools. * */ -export type ToolChoiceOptions2 = - (typeof ToolChoiceOptions2)[keyof typeof ToolChoiceOptions2]; +export type ToolChoiceOptions = + (typeof ToolChoiceOptions)[keyof typeof ToolChoiceOptions]; /** * Hosted tool @@ -16100,8 +16080,8 @@ export type TranscriptionChunkingStrategy = 'auto' | VadConfig; export const TranscriptionInclude = { LOGPROBS: 'logprobs' } as const; -export type TranscriptionInclude2 = - (typeof TranscriptionInclude2)[keyof typeof TranscriptionInclude2]; +export type TranscriptionInclude = + (typeof TranscriptionInclude)[keyof typeof TranscriptionInclude]; export type TranscriptionSegment = { /** @@ -17000,7 +16980,7 @@ export const Verbosity = { * Currently supported values are `low`, `medium`, and `high`. * */ -export type Verbosity2 = (typeof Verbosity2)[keyof typeof Verbosity2]; +export type Verbosity = (typeof Verbosity)[keyof typeof Verbosity]; export type VoiceIdsShared = | string @@ -17106,8 +17086,8 @@ export const WebSearchContextSize = { * search. One of `low`, `medium`, or `high`. `medium` is the default. * */ -export type WebSearchContextSize2 = - (typeof WebSearchContextSize2)[keyof typeof WebSearchContextSize2]; +export type WebSearchContextSize = + (typeof WebSearchContextSize)[keyof typeof WebSearchContextSize]; /** * Web search location @@ -18269,7 +18249,7 @@ export const FilePurpose = { * The intended purpose of the uploaded file. One of: - `assistants`: Used in the Assistants API - `batch`: Used in the Batch API - `fine-tune`: Used for fine-tuning - `vision`: Images used for vision fine-tuning - `user_data`: Flexible file type for any purpose - `evals`: Used for eval data sets * */ -export type FilePurpose2 = (typeof FilePurpose2)[keyof typeof FilePurpose2]; +export type FilePurpose = (typeof FilePurpose)[keyof typeof FilePurpose]; export type BatchError = { /** @@ -18451,7 +18431,7 @@ export const ChatModel = { GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', } as const; -export type ChatModel2 = (typeof ChatModel2)[keyof typeof ChatModel2]; +export type ChatModel = (typeof ChatModel)[keyof typeof ChatModel]; export type CreateThreadAndRunRequestWithoutStream = { /** @@ -18567,8 +18547,8 @@ export type CreateRunRequestWithoutStream = { /** * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to be used to execute this run. If a value is provided here, it will override the model associated with the assistant. If not, the model associated with the assistant will be used. */ - model?: string | AssistantSupportedModels2; - reasoning_effort?: ReasoningEffort2; + model?: string | AssistantSupportedModels; + reasoning_effort?: ReasoningEffort; /** * Overrides the [instructions](https://platform.openai.com/docs/api-reference/assistants/createAssistant) of the assistant. This is useful for modifying the behavior on a per-run basis. */ @@ -18648,7 +18628,7 @@ export const RunStatus = { /** * The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`. */ -export type RunStatus2 = (typeof RunStatus2)[keyof typeof RunStatus2]; +export type RunStatus = (typeof RunStatus)[keyof typeof RunStatus]; /** * The delta containing the fields that have changed on the run step. @@ -20419,7 +20399,7 @@ export type ListAuditLogsData = { /** * Return only events with a `type` in one of these values. For example, `project.created`. For all options, see the documentation for the [audit log object](https://platform.openai.com/docs/api-reference/audit-logs/object). */ - 'event_types[]'?: Array; + 'event_types[]'?: Array; /** * Return only events performed by these actors. Can be a user ID, a service account ID, or an api key tracking ID. */ @@ -22143,7 +22123,7 @@ export type GetResponseData = { * parameter for Response creation above for more information. * */ - include?: Array; + include?: Array; /** * If set to true, the model response data will be streamed to the client * as it is generated using [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format). @@ -22251,7 +22231,7 @@ export type ListInputItemsData = { * parameter for Response creation above for more information. * */ - include?: Array; + include?: Array; }; url: '/responses/{response_id}/input_items'; }; @@ -23473,3 +23453,23 @@ export type PostResponseIncompleteWebhookRequest = { path?: never; query?: never; }; + +export type ClientOptions = { + baseUrl: 'https://api.openai.com/v1' | (string & {}); +}; + +export type Webhooks = + | PostBatchCancelledWebhookRequest + | PostBatchCompletedWebhookRequest + | PostBatchExpiredWebhookRequest + | PostBatchFailedWebhookRequest + | PostEvalRunCanceledWebhookRequest + | PostEvalRunFailedWebhookRequest + | PostEvalRunSucceededWebhookRequest + | PostFineTuningJobCancelledWebhookRequest + | PostFineTuningJobFailedWebhookRequest + | PostFineTuningJobSucceededWebhookRequest + | PostResponseCancelledWebhookRequest + | PostResponseCompletedWebhookRequest + | PostResponseFailedWebhookRequest + | PostResponseIncompleteWebhookRequest; diff --git a/examples/openapi-ts-pinia-colada/src/client/@pinia/colada.gen.ts b/examples/openapi-ts-pinia-colada/src/client/@pinia/colada.gen.ts index 921fe1fc4..75aae1970 100644 --- a/examples/openapi-ts-pinia-colada/src/client/@pinia/colada.gen.ts +++ b/examples/openapi-ts-pinia-colada/src/client/@pinia/colada.gen.ts @@ -63,10 +63,10 @@ import type { export const addPetMutation = ( options?: Partial> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await addPet({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -81,10 +81,10 @@ export const addPetMutation = ( export const updatePetMutation = ( options?: Partial> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await updatePet({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -175,10 +175,10 @@ export const findPetsByTagsQuery = defineQueryOptions((options: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await deletePet({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -210,10 +210,10 @@ export const getPetByIdQuery = defineQueryOptions((options: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await updatePetWithForm({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -228,10 +228,10 @@ export const updatePetWithFormMutation = ( export const uploadFileMutation = ( options?: Partial> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await uploadFile({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -263,10 +263,10 @@ export const getInventoryQuery = defineQueryOptions((options?: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await placeOrder({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -281,10 +281,10 @@ export const placeOrderMutation = ( export const deleteOrderMutation = ( options?: Partial> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await deleteOrder({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -316,10 +316,10 @@ export const getOrderByIdQuery = defineQueryOptions((options: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await createUser({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -338,10 +338,10 @@ export const createUsersWithListInputMutation = ( Options, Error > => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await createUsersWithListInput({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -390,10 +390,10 @@ export const logoutUserQuery = defineQueryOptions((options?: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await deleteUser({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data @@ -425,10 +425,10 @@ export const getUserByNameQuery = defineQueryOptions((options: Options> ): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { + mutation: async (vars) => { const { data } = await updateUser({ ...options, - ...fnOptions, + ...vars, throwOnError: true }) return data diff --git a/examples/openapi-ts-pinia-colada/src/client/index.ts b/examples/openapi-ts-pinia-colada/src/client/index.ts index b190962d2..3da5084b1 100644 --- a/examples/openapi-ts-pinia-colada/src/client/index.ts +++ b/examples/openapi-ts-pinia-colada/src/client/index.ts @@ -1,5 +1,128 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './@pinia/colada.gen' -export * from './sdk.gen' -export type * from './types.gen' +export { + addPetMutation, + createUserMutation, + createUsersWithListInputMutation, + deleteOrderMutation, + deletePetMutation, + deleteUserMutation, + findPetsByStatusQuery, + findPetsByTagsQuery, + getInventoryQuery, + getOrderByIdQuery, + getPetByIdQuery, + getUserByNameQuery, + loginUserQuery, + logoutUserQuery, + placeOrderMutation, + type QueryKey, + updatePetMutation, + updatePetWithFormMutation, + updateUserMutation, + uploadFileMutation +} from './@pinia/colada.gen' +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile +} from './sdk.gen' +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray +} from './types.gen' diff --git a/examples/openapi-ts-pinia-colada/src/client/types.gen.ts b/examples/openapi-ts-pinia-colada/src/client/types.gen.ts index 99ce8e7d8..f7044e662 100644 --- a/examples/openapi-ts-pinia-colada/src/client/types.gen.ts +++ b/examples/openapi-ts-pinia-colada/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) -} - export type Order = { complete?: boolean id?: number @@ -691,3 +687,7 @@ export type UpdateUserResponses = { */ 200: unknown } + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) +} diff --git a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/index.ts b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/index.ts +++ b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-tanstack-react-query/src/client/index.ts b/examples/openapi-ts-tanstack-react-query/src/client/index.ts index 57ed02bf5..fb2e1d6fc 100644 --- a/examples/openapi-ts-tanstack-react-query/src/client/index.ts +++ b/examples/openapi-ts-tanstack-react-query/src/client/index.ts @@ -1,4 +1,85 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { type Options, Sdk } from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-tanstack-svelte-query/src/client/index.ts b/examples/openapi-ts-tanstack-svelte-query/src/client/index.ts index 57ed02bf5..75b9a8d12 100644 --- a/examples/openapi-ts-tanstack-svelte-query/src/client/index.ts +++ b/examples/openapi-ts-tanstack-svelte-query/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen'; -export type * from './types.gen'; +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile, +} from './sdk.gen'; +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray, +} from './types.gen'; diff --git a/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts index a2e6be0fa..992c17fb2 100644 --- a/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; - export type Order = { complete?: boolean; id?: number; @@ -697,3 +693,7 @@ export type UpdateUserResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; diff --git a/examples/openapi-ts-tanstack-vue-query/src/client/index.ts b/examples/openapi-ts-tanstack-vue-query/src/client/index.ts index 550b29b77..8e620149f 100644 --- a/examples/openapi-ts-tanstack-vue-query/src/client/index.ts +++ b/examples/openapi-ts-tanstack-vue-query/src/client/index.ts @@ -1,4 +1,106 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './sdk.gen' -export type * from './types.gen' +export { + addPet, + createUser, + createUsersWithListInput, + deleteOrder, + deletePet, + deleteUser, + findPetsByStatus, + findPetsByTags, + getInventory, + getOrderById, + getPetById, + getUserByName, + loginUser, + logoutUser, + type Options, + placeOrder, + updatePet, + updatePetWithForm, + updateUser, + uploadFile +} from './sdk.gen' +export type { + AddPetData, + AddPetErrors, + AddPetResponse, + AddPetResponses, + ApiResponse, + Category, + ClientOptions, + CreateUserData, + CreateUserErrors, + CreateUserResponse, + CreateUserResponses, + CreateUsersWithListInputData, + CreateUsersWithListInputErrors, + CreateUsersWithListInputResponse, + CreateUsersWithListInputResponses, + DeleteOrderData, + DeleteOrderErrors, + DeleteOrderResponses, + DeletePetData, + DeletePetErrors, + DeletePetResponses, + DeleteUserData, + DeleteUserErrors, + DeleteUserResponses, + FindPetsByStatusData, + FindPetsByStatusErrors, + FindPetsByStatusResponse, + FindPetsByStatusResponses, + FindPetsByTagsData, + FindPetsByTagsErrors, + FindPetsByTagsResponse, + FindPetsByTagsResponses, + GetInventoryData, + GetInventoryErrors, + GetInventoryResponse, + GetInventoryResponses, + GetOrderByIdData, + GetOrderByIdErrors, + GetOrderByIdResponse, + GetOrderByIdResponses, + GetPetByIdData, + GetPetByIdErrors, + GetPetByIdResponse, + GetPetByIdResponses, + GetUserByNameData, + GetUserByNameErrors, + GetUserByNameResponse, + GetUserByNameResponses, + LoginUserData, + LoginUserErrors, + LoginUserResponse, + LoginUserResponses, + LogoutUserData, + LogoutUserErrors, + LogoutUserResponses, + Order, + Pet, + Pet2, + PlaceOrderData, + PlaceOrderErrors, + PlaceOrderResponse, + PlaceOrderResponses, + Tag, + UpdatePetData, + UpdatePetErrors, + UpdatePetResponse, + UpdatePetResponses, + UpdatePetWithFormData, + UpdatePetWithFormErrors, + UpdatePetWithFormResponse, + UpdatePetWithFormResponses, + UpdateUserData, + UpdateUserErrors, + UpdateUserResponses, + UploadFileData, + UploadFileErrors, + UploadFileResponse, + UploadFileResponses, + User, + UserArray +} from './types.gen' diff --git a/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts index 99ce8e7d8..f7044e662 100644 --- a/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) -} - export type Order = { complete?: boolean id?: number @@ -691,3 +687,7 @@ export type UpdateUserResponses = { */ 200: unknown } + +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) +} diff --git a/packages/codegen-core/.gitignore b/packages/codegen-core/.gitignore index 71dbc8c3c..f163e328e 100644 --- a/packages/codegen-core/.gitignore +++ b/packages/codegen-core/.gitignore @@ -9,6 +9,7 @@ npm-debug.log* temp yarn-debug.log* yarn-error.log* +*.tsbuildinfo *.iml dist diff --git a/packages/codegen-core/src/__tests__/bimap.test.ts b/packages/codegen-core/src/__tests__/bimap.test.ts deleted file mode 100644 index 2a4b25d96..000000000 --- a/packages/codegen-core/src/__tests__/bimap.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import { BiMap } from '../bimap/bimap'; - -describe('BiMap', () => { - it('covers the full public interface', () => { - const bimap = new BiMap(); - // set and get - expect(bimap.set(1, 'a')).toBe(bimap); - expect(bimap.set(2, 'b')).toBe(bimap); - // get, getKeys - expect(bimap.get(1)).toBe('a'); - expect(bimap.get(2)).toBe('b'); - expect(bimap.getKeys('a')).toEqual(new Set([1])); - expect(bimap.getKeys('b')).toEqual(new Set([2])); - // hasKey, hasValue - expect(bimap.hasKey(1)).toBe(true); - expect(bimap.hasKey(2)).toBe(true); - expect(bimap.hasKey(3)).toBe(false); - expect(bimap.hasValue('a')).toBe(true); - expect(bimap.hasValue('b')).toBe(true); - expect(bimap.hasValue('c')).toBe(false); - // keys, values, entries - expect(Array.from(bimap.keys())).toEqual([1, 2]); - expect(Array.from(bimap.values())).toEqual(['a', 'b']); - expect(Array.from(bimap.entries())).toEqual([ - [1, 'a'], - [2, 'b'], - ]); - // Symbol.iterator - expect(Array.from(bimap)).toEqual([ - [1, 'a'], - [2, 'b'], - ]); - // size - expect(bimap.size).toBe(2); - // delete by key - expect(bimap.delete(1)).toBe(true); - expect(bimap.hasKey(1)).toBe(false); - expect(bimap.hasValue('a')).toBe(false); - // delete by value - expect(bimap.deleteValue('b')).toBe(true); - expect(bimap.hasKey(2)).toBe(false); - expect(bimap.hasValue('b')).toBe(false); - // After all deletes - expect(bimap.size).toBe(0); - // Setting again to check overwrite - bimap.set(1, 'x'); - bimap.set(2, 'y'); - expect(bimap.get(1)).toBe('x'); - expect(bimap.get(2)).toBe('y'); - // Overwrite value for existing key - bimap.set(1, 'z'); - expect(bimap.get(1)).toBe('z'); - expect(bimap.getKeys('z')).toEqual(new Set([1])); - // Overwrite key for existing value - bimap.set(3, 'z'); - expect(bimap.getKeys('z')).toEqual(new Set([1, 3])); - expect(bimap.get(1)).toBe('z'); - // Iteration after overwrite - expect(Array.from(bimap)).toEqual([ - [1, 'z'], - [2, 'y'], - [3, 'z'], - ]); - }); -}); diff --git a/packages/codegen-core/src/__tests__/bindings.test.ts b/packages/codegen-core/src/__tests__/bindings.test.ts deleted file mode 100644 index 2e21c0c92..000000000 --- a/packages/codegen-core/src/__tests__/bindings.test.ts +++ /dev/null @@ -1,230 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import type { IBiMap } from '../bimap/types'; -import type { IBinding } from '../bindings/types'; -import { createBinding, mergeBindings } from '../bindings/utils'; -import type { ISymbolMeta } from '../extensions/types'; -import type { IFileOut } from '../files/types'; -import type { ISymbolOut } from '../symbols/types'; - -function makeBiMap(entries: [number, string][] = []): IBiMap { - const map = new Map(entries); - const reverse = new Map(entries.map(([k, v]) => [v, k])); - const bimap: IBiMap = { - delete: (key: number) => { - const value = map.get(key); - map.delete(key); - if (value) reverse.delete(value); - return true; - }, - deleteValue: (value: string) => { - const key = reverse.get(value); - reverse.delete(value); - if (key) map.delete(key); - return true; - }, - entries: () => map.entries(), - get: (key: number) => map.get(key), - getKey: (value: string) => reverse.get(value), - hasKey: (key: number) => map.has(key), - hasValue: (value: string) => reverse.has(value), - keys() { - return map.keys(); - }, - set: (key: number, value: string): IBiMap => { - map.set(key, value); - reverse.set(value, key); - return bimap; - }, - size: 0, - values() { - return map.values(); - }, - [Symbol.iterator]() { - return map[Symbol.iterator](); - }, - }; - return bimap; -} - -const makeFile = ( - resolvedNames: IBiMap = makeBiMap(), - id: number = 1, -): IFileOut => ({ - extension: 'ts', - id, - name: '', - path: '', - resolvedNames, - selector: [], - symbols: { body: [], exports: [], imports: [] }, -}); - -const makeSymbol = ( - id: number, - placeholder: string, - meta: ISymbolMeta = {}, - name?: string, -): ISymbolOut => { - const { importKind, kind, ...restMeta } = meta as any; - return { - id, - importKind, - kind, - meta: restMeta, - name, - placeholder, - } as any; -}; - -describe('createBinding', () => { - it('creates a named binding by default', () => { - const file = makeFile(makeBiMap([[1, 'Foo']])); - const symbol = makeSymbol( - 1, - 'Foo', - { importKind: 'named', kind: 'value' }, - 'Foo', - ); - const symbolFile = makeFile(makeBiMap([[1, 'Foo']])); - const binding = createBinding({ - file, - modulePath: './foo', - symbol, - symbolFile, - }); - expect(binding).toEqual({ - aliases: {}, - from: './foo', - names: ['Foo'], - typeNames: [], - }); - }); - - it('creates a default binding', () => { - const file = makeFile(); - const symbol = makeSymbol( - 2, - 'Bar', - { importKind: 'default', kind: 'value' }, - 'Bar', - ); - const symbolFile = makeFile(); - const binding = createBinding({ - file, - modulePath: './bar', - symbol, - symbolFile, - }); - expect(binding).toEqual({ - aliases: {}, - defaultBinding: 'Bar', - from: './bar', - names: [], - typeDefaultBinding: undefined, - typeNames: [], - }); - }); - - it('creates a namespace binding', () => { - const file = makeFile(); - const symbol = makeSymbol( - 3, - 'Baz', - { importKind: 'namespace', kind: 'value' }, - 'Baz', - ); - const symbolFile = makeFile(); - const binding = createBinding({ - file, - modulePath: './baz', - symbol, - symbolFile, - }); - expect(binding).toEqual({ - aliases: {}, - from: './baz', - names: [], - namespaceBinding: 'Baz', - typeNames: [], - typeNamespaceBinding: undefined, - }); - }); - - it('creates type names for type symbols', () => { - const file = makeFile(makeBiMap([[4, 'Qux']])); - const symbol = makeSymbol( - 4, - 'Qux', - { importKind: 'named', kind: 'type' }, - 'Qux', - ); - const symbolFile = makeFile(makeBiMap([[4, 'Qux']])); - const binding = createBinding({ - file, - modulePath: './qux', - symbol, - symbolFile, - }); - expect(binding).toEqual({ - aliases: {}, - from: './qux', - names: ['Qux'], - typeNames: ['Qux'], - }); - }); -}); - -describe('mergeBindings', () => { - it('merges aliases, names, and typeNames', () => { - const target: IBinding = { - aliases: { Foo: 'Bar' }, - from: './foo', - names: ['Foo'], - typeNames: ['Foo'], - }; - const source: IBinding = { - aliases: { Baz: 'Qux' }, - from: './foo', - names: ['Baz'], - typeNames: ['Baz'], - }; - mergeBindings(target, source); - expect(target).toEqual({ - aliases: { Baz: 'Qux', Foo: 'Bar' }, - from: './foo', - names: ['Foo', 'Baz'], - typeNames: ['Foo', 'Baz'], - }); - }); - - it('merges default and namespace bindings', () => { - const target: IBinding = { - aliases: {}, - from: './foo', - names: [], - typeNames: [], - }; - const source: IBinding = { - aliases: {}, - defaultBinding: 'Default', - from: './foo', - names: [], - namespaceBinding: 'NS', - typeDefaultBinding: true, - typeNames: [], - typeNamespaceBinding: true, - }; - mergeBindings(target, source); - expect(target).toEqual({ - aliases: {}, - defaultBinding: 'Default', - from: './foo', - names: [], - namespaceBinding: 'NS', - typeDefaultBinding: true, - typeNames: [], - typeNamespaceBinding: true, - }); - }); -}); diff --git a/packages/codegen-core/src/__tests__/exports.test.ts b/packages/codegen-core/src/__tests__/exports.test.ts index 6d97ef1fa..9a588f70b 100644 --- a/packages/codegen-core/src/__tests__/exports.test.ts +++ b/packages/codegen-core/src/__tests__/exports.test.ts @@ -2,23 +2,47 @@ import { describe, expect, it } from 'vitest'; import * as index from '../index'; -const constExports = ['createBinding', 'mergeBindings', 'Project', 'renderIds']; +const constExports = [ + 'debug', + 'fromRef', + 'fromRefs', + 'isNode', + 'isNodeRef', + 'isRef', + 'isSymbol', + 'isSymbolRef', + 'nodeBrand', + 'Project', + 'ref', + 'refs', + 'Symbol', + 'symbolBrand', +]; // Type-level test: will fail to compile if any type export is missing or renamed export type _TypeExports = [ - index.BiMap, - index.Binding, - index.ProjectRenderMeta, - index.SymbolMeta, + index.AnalysisContext, index.File, index.FileIdentifier, index.FileIn, - index.Output, + index.FromRef, + index.FromRefs, index.IProject, + index.Node, + index.Output, + index.PlannedExport, + index.PlannedImport, + index.PlannedReexport, + index.Project, + index.ProjectRenderMeta, + index.Ref, + index.Refs, + index.RenderContext, index.Renderer, index.Symbol, index.SymbolIdentifier, index.SymbolIn, + index.SymbolMeta, ]; describe('index exports', () => { diff --git a/packages/codegen-core/src/__tests__/files.test.ts b/packages/codegen-core/src/__tests__/files.test.ts index 981194c1e..2186eeed4 100644 --- a/packages/codegen-core/src/__tests__/files.test.ts +++ b/packages/codegen-core/src/__tests__/files.test.ts @@ -1,111 +1,131 @@ import { describe, expect, it } from 'vitest'; +import { File } from '../files/file'; import { FileRegistry } from '../files/registry'; +const mockProject = {} as any; + describe('FileRegistry', () => { - it('covers the full public interface', () => { - const registry = new FileRegistry(); - // id property increments - const id1 = registry.id; - const id2 = registry.id; - expect(typeof id1).toBe('number'); - expect(id2).toBe(id1 + 1); - - // Register a file with selector - const file1 = registry.register({ name: 'Foo', selector: ['foo'] }); - expect(file1).toEqual({ - extension: undefined, - external: undefined, - id: expect.any(Number), - localNames: new Set(), - name: 'Foo', - path: undefined, - resolvedNames: expect.any(Object), - selector: ['foo'], - symbols: { body: [], exports: [], imports: [] }, + it('register() creates a new File with incrementing id', () => { + const registry = new FileRegistry(mockProject); + + const f1 = registry.register({ + language: 'typescript', + logicalFilePath: 'foo.ts', + }); + const f2 = registry.register({ + language: 'typescript', + logicalFilePath: 'bar.ts', + }); + + expect(f1).toBeInstanceOf(File); + expect(f2).toBeInstanceOf(File); + expect(f2.id).toBe(f1.id + 1); + }); + + it('register() updates name if file already exists', () => { + const registry = new FileRegistry(mockProject); + + const f1 = registry.register({ + language: 'typescript', + logicalFilePath: 'dup.ts', + name: 'First', + }); + const f2 = registry.register({ + language: 'typescript', + logicalFilePath: 'dup.ts', + name: 'Second', }); - // get by id and selector - expect(registry.get(file1.id)).toEqual(file1); - expect(registry.get(['foo'])).toEqual(file1); + expect(f1).toBe(f2); // same File instance + expect(f1.name).toBe('Second'); // name updated + }); - // isRegistered should be true for explicitly registered files - expect(registry.isRegistered(file1.id)).toBe(true); - expect(registry.isRegistered(['foo'])).toBe(true); + it('get() returns the registered File or undefined', () => { + const registry = new FileRegistry(mockProject); - // Registering again with same selector returns same file - const file1b = registry.register({ selector: ['foo'] }); - expect(file1b).toEqual(file1); + const f = registry.register({ language: 'ts', logicalFilePath: 'get.ts' }); - // Registering with id returns same file - const file1c = registry.register({ id: file1.id }); - expect(file1c).toEqual(file1); + expect(registry.get({ language: 'ts', logicalFilePath: 'get.ts' })).toBe(f); + expect( + registry.get({ language: 'ts', logicalFilePath: 'missing.ts' }), + ).toBeUndefined(); + }); - // Reference by id returns same file - const ref1 = registry.reference(file1.id); - expect(ref1).toEqual(file1); + it('isRegistered() returns true only for existing files', () => { + const registry = new FileRegistry(mockProject); - // Reference by selector returns same file - const ref1b = registry.reference(['foo']); - expect(ref1b).toEqual(file1); + registry.register({ language: 'ts', logicalFilePath: 'check.ts' }); - // Register a new file with a different selector - const file2 = registry.register({ - name: 'Bar', - path: '/bar', - selector: ['bar'], + expect( + registry.isRegistered({ language: 'ts', logicalFilePath: 'check.ts' }), + ).toBe(true); + expect( + registry.isRegistered({ language: 'ts', logicalFilePath: 'other.ts' }), + ).toBe(false); + }); + + it('registered() iterates over all files', () => { + const registry = new FileRegistry(mockProject); + + const files = [ + registry.register({ language: 'ts', logicalFilePath: 'a.ts' }), + registry.register({ language: 'ts', logicalFilePath: 'b.ts' }), + ]; + + const iterated = [...registry.registered()]; + expect(iterated).toEqual(files); + }); + + it('handles external flag in key generation', () => { + const registry = new FileRegistry(mockProject); + + const f1 = registry.register({ + external: true, + language: 'ts', + logicalFilePath: 'ext.ts', }); - expect(file2).toEqual({ - extension: undefined, - external: undefined, - id: expect.any(Number), - localNames: new Set(), - name: 'Bar', - path: '/bar', - resolvedNames: expect.any(Object), - selector: ['bar'], - symbols: { body: [], exports: [], imports: [] }, + const f2 = registry.register({ + external: false, + language: 'ts', + logicalFilePath: 'ext.ts', }); - // Registered files are yielded in order - const registered = Array.from(registry.registered()); - expect(registered).toEqual([ - expect.objectContaining({ selector: ['foo'] }), - expect.objectContaining({ selector: ['bar'] }), - ]); - - // Referenced files are yielded in order - // Only files referenced but not registered are included - // Reference a new file (not registered) - const file3 = registry.reference(['baz']); - const referenced = Array.from(registry.referenced()); - expect(referenced).toContainEqual(file3); - // Once registered, file1 is not in referenced set - expect(referenced).not.toContainEqual(file1); - - // Referenced-only file should not be considered registered - expect(registry.isRegistered(file3.id)).toBe(false); - // Once registered, file3 becomes registered and no longer appears in referenced() - const file3Registered = registry.register({ - name: 'Baz', - selector: ['baz'], - }); - expect(registry.isRegistered(file3Registered.id)).toBe(true); - const referencedAfter = Array.from(registry.referenced()); - expect(referencedAfter).not.toContainEqual(file3Registered); + expect(f1).not.toBe(f2); + expect( + registry.isRegistered({ + external: true, + language: 'ts', + logicalFilePath: 'ext.ts', + }), + ).toBe(true); + expect( + registry.isRegistered({ + external: false, + language: 'ts', + logicalFilePath: 'ext.ts', + }), + ).toBe(true); }); - it('throws on invalid register or reference', () => { - const registry = new FileRegistry(); - // Register with id that does not exist - expect(() => registry.register({ id: 9999 })).toThrow( - 'File with ID 9999 not found. To register a new file, leave the ID undefined.', - ); - // Register with selector that maps to missing id - // Simulate by manually setting selectorToId - registry['selectorToId'].set(JSON.stringify(['missing']), 42); - expect(() => registry.register({ selector: ['missing'] })).toThrow( - 'File with ID 42 not found. The selector ["missing"] matched an ID, but there was no result. This is likely an issue with the application logic.', - ); + it('language influences key generation', () => { + const registry = new FileRegistry(mockProject); + + const tsFile = registry.register({ + language: 'ts', + logicalFilePath: 'file', + }); + const jsFile = registry.register({ + language: 'js', + logicalFilePath: 'file', + }); + + expect(tsFile).not.toBe(jsFile); + expect( + registry.isRegistered({ language: 'ts', logicalFilePath: 'file' }), + ).toBe(true); + expect( + registry.isRegistered({ language: 'js', logicalFilePath: 'file' }), + ).toBe(true); }); }); diff --git a/packages/codegen-core/src/__tests__/project.test.ts b/packages/codegen-core/src/__tests__/project.test.ts index 53e95e82c..485f9e5d6 100644 --- a/packages/codegen-core/src/__tests__/project.test.ts +++ b/packages/codegen-core/src/__tests__/project.test.ts @@ -1,90 +1,56 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it, vi } from 'vitest'; -import type { IFileOut } from '../files/types'; import { Project } from '../project/project'; -import type { IRenderer } from '../renderer/types'; + +// Mock Planner so we control what files appear in project.files +vi.mock('../planner/planner', () => ({ + Planner: vi.fn().mockImplementation((project) => ({ + plan: vi.fn(() => { + // planner is responsible for creating files + const file = project.files.register({ + logicalFilePath: 'root/a', + }); + file.setFinalPath('/root/a.ts'); + file.setRenderer({ + render: vi.fn(() => 'RENDERED'), + supports: () => true, + }); + }), + })), +})); describe('Project', () => { - it('covers the full public interface', () => { - const renderer: IRenderer = { - renderFile: (content: string) => `RENDERED:${content}`, - renderSymbols: (file: IFileOut) => `SYMBOLS:${file.name}`, - }; - const project = new Project({ - defaultFileName: 'main', - renderers: { '.ts': renderer }, + const makeProject = (overrides: any = {}) => + new Project({ + renderers: [], root: '/root', + ...overrides, }); - // Registries are defined - expect(project.files).toBeDefined(); - expect(project.symbols).toBeDefined(); + it('calls Planner.plan() before rendering', () => { + const p = makeProject(); + p.render(); + }); - // Add a symbol and render output - const symbol = project.symbols.register({ - getFilePath: () => 'foo', - meta: { foo: 'bar' }, - placeholder: 'Foo', - }); - // Add a renderer for .ts files - // Simulate a file with .ts extension - project.files.register({ - extension: '.ts', - name: 'foo', - path: '/root/foo.ts', - selector: ['foo'], - }); - // Render output - const outputs = project.render(); - expect(Array.isArray(outputs)).toBe(true); - expect(outputs.length).toBe(1); - expect(outputs).toEqual([ - { - content: 'RENDERED:SYMBOLS:foo', - path: '/root/foo.ts', - }, - ]); + it('renders files created by the planner', () => { + const p = makeProject(); - // symbolIdToFiles returns correct files - const filesForSymbol = project.symbolIdToFiles(symbol.id); - expect(filesForSymbol.length).toBeGreaterThan(0); - expect(filesForSymbol[0]?.name).toBe('foo'); - }); + const out = p.render(); - it('skips files with no renderer or external', () => { - const project = new Project({ - defaultFileName: 'main', - renderers: {}, - root: '/root', - }); - // Register a file with no extension - project.files.register({ name: 'noext', selector: ['noext'] }); - // Register an external file - project.files.register({ external: true, name: 'ext', selector: ['ext'] }); - // Should not throw, but output should be empty - const outputs = project.render(); - expect(outputs).toEqual([]); + expect(out).toEqual([{ content: 'RENDERED', path: '/root/a.ts' }]); }); - it('respects fileName override', () => { - const renderer: IRenderer = { - renderFile: (content: string) => content, - renderSymbols: (file: IFileOut) => `SYMBOLS:${file.name}`, - }; - const project = new Project({ - defaultFileName: 'main', - fileName: (name) => `X_${name}`, - renderers: { '.ts': renderer }, - root: '/root', - }); - // Register a symbol with selector - project.symbols.register({ - getFilePath: () => 'bar', - meta: { bar: 'baz' }, - placeholder: 'Bar', + it('passes correct ctx to renderer.render()', () => { + const p = makeProject(); + p.render({ hello: true }); + + const file = [...p.files.registered()][0]!; + const renderer = file.renderer!; + + expect(renderer.render).toHaveBeenCalledWith({ + file, + meta: { hello: true }, + project: p, }); - // Render output (should use fileName override) - const outputs = project.render(); - expect(outputs[0]?.path).toContain('X_bar'); }); }); diff --git a/packages/codegen-core/src/__tests__/refs.test.ts b/packages/codegen-core/src/__tests__/refs.test.ts new file mode 100644 index 000000000..4b3aab60c --- /dev/null +++ b/packages/codegen-core/src/__tests__/refs.test.ts @@ -0,0 +1,93 @@ +import { describe, expect, it } from 'vitest'; + +import { fromRef, fromRefs, ref, refs } from '../refs/refs'; +import type { Refs } from '../refs/types'; + +describe('ref', () => { + it('wraps a primitive value', () => { + expect(ref(42)).toEqual({ '~ref': 42 }); + expect(ref('x')).toEqual({ '~ref': 'x' }); + }); + + it('wraps an object', () => { + const obj = { foo: 1 }; + expect(ref(obj)).toEqual({ '~ref': obj }); + }); +}); + +describe('fromRef', () => { + it('unwraps a primitive value', () => { + expect(fromRef({ '~ref': 42 })).toBe(42); + expect(fromRef({ '~ref': 'x' })).toBe('x'); + }); + + it('unwraps an object', () => { + const obj = { foo: 1 }; + expect(fromRef({ '~ref': obj })).toBe(obj); + }); +}); + +describe('ref <-> fromRef roundtrip', () => { + it('roundtrips value -> ref -> value', () => { + expect(fromRef(ref(123))).toBe(123); + const obj = { foo: 'bar' }; + expect(fromRef(ref(obj))).toBe(obj); + }); +}); + +describe('refs', () => { + it('wraps primitives', () => { + expect(refs({ a: 1, b: 'x' })).toEqual({ + a: { '~ref': 1 }, + b: { '~ref': 'x' }, + }); + }); + + it('wraps empty object', () => { + expect(refs({})).toEqual({}); + }); + + it('wraps nested objects shallowly', () => { + const input = { a: { foo: 1 }, b: [1, 2] }; + const value = refs(input); + expect(value.a['~ref']).toEqual({ foo: 1 }); + expect(value.b['~ref']).toEqual([1, 2]); + }); +}); + +describe('fromRefs', () => { + it('unwraps primitives', () => { + expect(fromRefs({ a: { '~ref': 1 }, b: { '~ref': 'x' } })).toEqual({ + a: 1, + b: 'x', + }); + }); + + it('unwraps empty object', () => { + expect(fromRefs({})).toEqual({}); + }); + + it('unwraps nested objects shallowly', () => { + const input: Refs = { + a: { '~ref': { foo: 1 } }, + b: { '~ref': [1, 2] }, + }; + expect(fromRefs(input)).toEqual({ a: { foo: 1 }, b: [1, 2] }); + }); +}); + +describe('refs <-> fromRefs roundtrip', () => { + it('roundtrips plain -> refs -> plain', () => { + const obj = { a: 1, b: 'x', c: [1, 2], d: { foo: 2 } }; + expect(fromRefs(refs(obj))).toEqual(obj); + }); + + it('roundtrips refs -> plain -> refs', () => { + const value: Refs = { + a: { '~ref': 1 }, + b: { '~ref': 'x' }, + c: { '~ref': [1, 2] }, + }; + expect(refs(fromRefs(value))).toEqual(value); + }); +}); diff --git a/packages/codegen-core/src/__tests__/renderer.test.ts b/packages/codegen-core/src/__tests__/renderer.test.ts deleted file mode 100644 index 48559e13b..000000000 --- a/packages/codegen-core/src/__tests__/renderer.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; - -import { describe, expect, it } from 'vitest'; - -import { renderIds, wrapId } from '../renderer/utils'; - -describe('renderIds', () => { - it('replaces ids with names', () => { - const source = fs.readFileSync(path.resolve(__dirname, 'data', 'file.ts'), { - encoding: 'utf8', - }); - - const substitutions: Record = { - 1: 'Foo', - 12: 'baz', - 2: 'bar', - 4: 'Bar', - 5: 'Foo', - }; - - const replaced = renderIds(source, (id) => substitutions[id]); - - expect(replaced).toEqual(`/* @ts-nocheck */ - -type Foo = string; -type Bar = () => Foo; - -/** - * something about Foo. Did you know that _Foo_? - */ -export class Foo { - // Foo is great! - bar(baz: ReturnType): Foo { - return baz; - } -} -`); - }); -}); - -describe('wrapId', () => { - it('wraps id in the expected format', () => { - expect(wrapId(String(42))).toBe('_heyapi_42_'); - expect(wrapId(String(0))).toBe('_heyapi_0_'); - expect(wrapId(String(123456))).toBe('_heyapi_123456_'); - expect(wrapId('foo')).toBe('_heyapi_foo_'); - }); -}); diff --git a/packages/codegen-core/src/__tests__/symbols.test.ts b/packages/codegen-core/src/__tests__/symbols.test.ts index 42aa30779..72c658688 100644 --- a/packages/codegen-core/src/__tests__/symbols.test.ts +++ b/packages/codegen-core/src/__tests__/symbols.test.ts @@ -1,348 +1,111 @@ import { describe, expect, it } from 'vitest'; import { SymbolRegistry } from '../symbols/registry'; -import { isSymbol } from '../symbols/symbol'; +import { Symbol } from '../symbols/symbol'; -describe('SymbolRegistry', () => { - it('covers the full public interface', () => { - const registry = new SymbolRegistry(); - // id property increments - const id1 = registry.id; - const id2 = registry.id; - expect(typeof id1).toBe('number'); - expect(id2).toBe(id1 + 1); - - // Register a symbol with meta - const symbol1 = registry.register({ - meta: { foo: 'bar' }, - name: '', - placeholder: 'Foo', - }); - expect(symbol1).toEqual( - expect.objectContaining({ - _dependencies: new Set(), - exportFrom: [], - exported: false, - id: expect.any(Number), - importKind: 'named', - kind: 'var', - meta: { - foo: 'bar', - }, - name: '', - placeholder: 'Foo', - }), - ); - - // get by id and meta - expect(registry.get(symbol1.id)).toEqual(symbol1); - expect(registry.get({ foo: 'bar' })).toEqual(symbol1); - - // isRegistered should be true for explicitly registered symbols - expect(registry.isRegistered(symbol1.id)).toBe(true); - expect(registry.isRegistered({ foo: 'bar' })).toBe(true); - - // Registering again with same meta creates a new symbol - const symbol1b = registry.register({ - meta: { foo: 'bar' }, - name: '', - }); - expect(symbol1b).not.toEqual(symbol1); - - // Reference returns same symbol - const ref1 = registry.reference({ foo: 'bar' }); - expect(ref1).toEqual(symbol1); - - // Register a new symbol with different meta - const symbol2 = registry.register({ - exportFrom: ['x'], - meta: { bar: 'baz' }, - name: '', - placeholder: 'Bar', - }); - expect(symbol2).toEqual( - expect.objectContaining({ - dependencies: new Set(), - exportFrom: ['x'], - id: expect.any(Number), - meta: { bar: 'baz' }, - name: '', - placeholder: 'Bar', - }), - ); +const meta = (m: any) => m as any; - // Registered symbols are yielded in order - const registered = Array.from(registry.registered()); - expect(registered).toEqual([ - expect.objectContaining({ id: 2 }), - expect.objectContaining({ meta: { foo: 'bar' } }), - expect.objectContaining({ meta: { bar: 'baz' } }), - ]); +describe('SymbolRegistry', () => { + it('register() assigns increasing IDs and stores symbols', () => { + const r = new SymbolRegistry(); - // setValue, getValue, hasValue - expect(registry.hasValue(symbol1.id)).toBe(false); - registry.setValue(symbol1.id, 42); - expect(registry.hasValue(symbol1.id)).toBe(true); - expect(registry.getValue(symbol1.id)).toBe(42); + const a = r.register({ meta: meta({ kind: 'x' }), name: 'A' }); + const b = r.register({ meta: meta({ kind: 'y' }), name: 'B' }); - // referenced-only symbol should not be registered until register() - const symRef = registry.reference({ qux: true }); - expect(registry.isRegistered(symRef.id)).toBe(false); - const symRegistered = registry.register({ - meta: { qux: true }, - name: '', - placeholder: 'Qux', - }); - expect(registry.isRegistered(symRegistered.id)).toBe(true); + expect(a.id).toBe(0); + expect(b.id).toBe(1); + expect(r.get(0)).toBe(a); + expect(r.get(1)).toBe(b); }); - it('indexes symbols and supports querying by meta', () => { - const registry = new SymbolRegistry(); + it('query() returns symbols matching meta', () => { + const r = new SymbolRegistry(); - // register a couple of symbols with meta - const symA = registry.register({ - meta: { bar: 'type', foo: { bar: true } }, + const a = r.register({ + meta: meta({ nested: { x: 1 }, type: 'foo' }), name: 'A', }); - const symB = registry.register({ - meta: { bar: 'value', foo: { bar: false } }, - name: 'B', - }); - - // query by top-level meta key - const types = registry.query({ bar: 'type' }); - expect(types).toEqual([symA]); - - // query by nested meta key - const nestedTrue = registry.query({ foo: { bar: true } }); - expect(nestedTrue).toEqual([symA]); + r.register({ meta: meta({ type: 'bar' }), name: 'B' }); - const nestedFalse = registry.query({ foo: { bar: false } }); - expect(nestedFalse).toEqual([symB]); + const results = r.query(meta({ nested: { x: 1 }, type: 'foo' })); + expect(results).toEqual([a]); }); - it('replaces stubs after registering', () => { - const registry = new SymbolRegistry(); + it('query() returns empty array when no matches', () => { + const r = new SymbolRegistry(); + r.register({ meta: meta({ type: 'x' }), name: 'A' }); - const refA = registry.reference({ a: 0 }); - const refAB = registry.reference({ a: 0, b: 0 }); - const refB = registry.reference({ b: -1 }); - const symC = registry.register({ - meta: { a: 0, b: 0, c: 0 }, - name: 'C', - }); - const refAD = registry.reference({ a: 0, d: 0 }); - const refAC = registry.reference({ a: 0, c: 0 }); - - expect(refA.canonical).toEqual(symC); - expect(refAB.canonical).toEqual(symC); - expect(refAC.canonical).toEqual(symC); - expect(refAD.canonical).not.toEqual(symC); - expect(refB.canonical).not.toEqual(symC); - expect(symC.meta).toEqual({ a: 0, b: 0, c: 0 }); + expect(r.query(meta({ type: 'nope' }))).toEqual([]); }); - it('caches query results and invalidates on relevant updates', () => { - const registry = new SymbolRegistry(); - const symA = registry.register({ meta: { foo: 'bar' }, name: 'A' }); - - // first query populates cache - const result1 = registry.query({ foo: 'bar' }); - expect(result1).toEqual([symA]); - expect(registry['queryCache'].size).toBe(1); + it('reference() returns stub if not registered', () => { + const r = new SymbolRegistry(); + const stub = r.reference(meta({ id: 1, kind: 'x' })); - // same query should hit cache, no change in cache size - const result2 = registry.query({ foo: 'bar' }); - expect(result2).toEqual([symA]); - expect(registry['queryCache'].size).toBe(1); + expect(stub).toBeInstanceOf(Symbol); + expect(r.isRegistered(stub.id)).toBe(false); - // register another symbol with matching key should invalidate cache - registry.register({ meta: { foo: 'bar' }, name: 'B' }); - expect(registry['queryCache'].size).toBe(0); - - // new query repopulates cache - const result3 = registry.query({ foo: 'bar' }); - expect(result3.map((r) => r.name).sort()).toEqual(['A', 'B']); - expect(registry['queryCache'].size).toBe(1); + // same meta → same stub + const again = r.reference(meta({ id: 1, kind: 'x' })); + expect(again).toBe(stub); }); - it('invalidates only affected cache entries', () => { - const registry = new SymbolRegistry(); - const symA = registry.register({ meta: { foo: 'bar' }, name: 'A' }); - const symX = registry.register({ meta: { x: 'y' }, name: 'X' }); - - // Seed multiple cache entries - const resultFoo = registry.query({ foo: 'bar' }); - const resultX = registry.query({ x: 'y' }); - expect(resultFoo).toEqual([symA]); - expect(resultX).toEqual([symX]); - const initialCacheKeys = Array.from(registry['queryCache'].keys()); - expect(initialCacheKeys.length).toBe(2); + it('reference() stub is replaced when real symbol registers', () => { + const r = new SymbolRegistry(); - // Add new symbol that should only affect foo:bar queries - registry.register({ meta: { foo: 'bar' }, name: 'B' }); + const stub = r.reference(meta({ group: 'abc', tag: 1 })); + const real = r.register({ + meta: meta({ group: 'abc', tag: 1 }), + name: 'Real', + }); - // Cache entry for foo:bar should be invalidated, x:y should remain - const cacheKeysAfter = Array.from(registry['queryCache'].keys()); - expect(cacheKeysAfter.length).toBe(1); - const remainingKey = cacheKeysAfter[0]; - expect(remainingKey).toBe( - initialCacheKeys.find((k) => k.includes('x:"y"')), - ); + // Stub should now canonicalize to the real one + expect(stub.canonical).toBe(real); + expect(r.get(stub.id)).toBe(stub); - // Query foo:bar again to repopulate it - const resultFoo2 = registry.query({ foo: 'bar' }); - expect(resultFoo2.map((r) => r.name).sort()).toEqual(['A', 'B']); - expect(registry['queryCache'].size).toBe(2); + // Queries should now return the real one + expect(r.query(meta({ group: 'abc', tag: 1 }))).toEqual([real]); }); - it('caches empty results across all early exit paths', () => { - const registry = new SymbolRegistry(); - - // 1. Key doesn't exist in indices - const resNoKey = registry.query({ foo: 'bar' }); - expect(resNoKey).toEqual([]); - const cacheKeys1 = Array.from(registry['queryCache'].keys()); - expect(cacheKeys1.length).toBe(1); - expect(registry['queryCache'].get(cacheKeys1[0]!)).toEqual([]); - - // 2. Key exists but value doesn't - // Insert symbol with unrelated meta - registry.register({ meta: { something: 'else' }, name: 'A' }); - const resNoValue = registry.query({ bar: 'baz' }); - expect(resNoValue).toEqual([]); - const cacheKeys2 = Array.from(registry['queryCache'].keys()); - expect(cacheKeys2.length).toBe(2); - expect(registry['queryCache'].get(cacheKeys2[1]!)).toEqual([]); + it('isRegistered() returns true only for registered symbols', () => { + const r = new SymbolRegistry(); + const stub = r.reference(meta({ foo: 1 })); + const real = r.register({ meta: meta({ foo: 1 }), name: 'X' }); - // 3. Empty indexKeySpace (empty meta object) - const resEmpty = registry.query({}); - expect(resEmpty).toEqual([]); - const cacheKeys3 = Array.from(registry['queryCache'].keys()); - expect(cacheKeys3.length).toBe(3); - expect(registry['queryCache'].get(cacheKeys3[2]!)).toEqual([]); + expect(r.isRegistered(stub.id)).toBe(false); + expect(r.isRegistered(real.id)).toBe(true); }); - it('returns the same stub reference for identical unresolved meta', () => { - const registry = new SymbolRegistry(); - - const stubA1 = registry.reference({ a: 1 }); - const stubA2 = registry.reference({ a: 1 }); - - // Same reference, not new instance - expect(stubA1).toBe(stubA2); + it('registered() iterates over only registered symbols (not stubs)', () => { + const r = new SymbolRegistry(); + r.reference(meta({ x: 1 })); // stub + const a = r.register({ meta: meta({ x: 2 }), name: 'A' }); + const b = r.register({ meta: meta({ x: 3 }), name: 'B' }); - // Cache entry created by the internal query call - const cacheKey = registry['buildCacheKey']({ a: 1 }); - expect(registry['queryCache'].has(cacheKey)).toBe(true); - expect(registry['queryCache'].get(cacheKey)).toEqual([]); + expect([...r.registered()]).toEqual([a, b]); }); - it('demonstrates stub addition does not invalidate unrelated cache', () => { - const registry = new SymbolRegistry(); + it('cache invalidates when new symbol matches cached query', () => { + const r = new SymbolRegistry(); - // Create one indexed symbol and one query to seed cache - const symA = registry.register({ meta: { foo: 'bar' }, name: 'A' }); - const resultFoo = registry.query({ foo: 'bar' }); - expect(resultFoo).toEqual([symA]); - const cacheKeysBefore = Array.from(registry['queryCache'].keys()); - expect(cacheKeysBefore.length).toBe(1); + // prime cache + expect(r.query(meta({ type: 'foo' }))).toEqual([]); - // Add unrelated stub (its meta triggers its own query) - const stub = registry.reference({ something: 'else' }); - expect(stub.meta).toEqual({ something: 'else' }); + const a = r.register({ meta: meta({ type: 'foo' }), name: 'A' }); - // Existing cache entry still present, plus one new entry for stub - const cacheKeysAfter = Array.from(registry['queryCache'].keys()); - expect(cacheKeysAfter.length).toBe(cacheKeysBefore.length + 1); - expect(cacheKeysAfter).toEqual(expect.arrayContaining(cacheKeysBefore)); - - // The new stub isn't indexed, so query returns nothing yet - const newQuery = registry.query({ something: 'else' }); - expect(newQuery).toEqual([]); + // now query again → cache should be invalidated → return new entry + expect(r.query(meta({ type: 'foo' }))).toEqual([a]); }); - it('isSymbol covers various inputs', () => { - const registry = new SymbolRegistry(); - - // real registered symbol - const sym = registry.register({ meta: { a: 1 }, name: 'A' }); - expect(isSymbol(sym)).toBe(true); - - // stub reference (unregistered) - const stub = registry.reference({ b: 2 }); - expect(isSymbol(stub)).toBe(true); - - // primitives - expect(isSymbol(null)).toBe(false); - expect(isSymbol(undefined)).toBe(false); - expect(isSymbol(123)).toBe(false); - expect(isSymbol('foo')).toBe(false); - expect(isSymbol(true)).toBe(false); - - // arrays and plain objects - expect(isSymbol([])).toBe(false); - expect(isSymbol({})).toBe(false); + it('nested meta keys are indexed correctly', () => { + const r = new SymbolRegistry(); - // object with different tag - expect(isSymbol({ '~tag': 'not-a-symbol' })).toBe(false); - - // object masquerading as a symbol (matches tag) - expect(isSymbol({ '~tag': 'heyapi.symbol' })).toBe(true); - - // Date, Map, Set should be false - expect(isSymbol(new Date())).toBe(false); - expect(isSymbol(new Map())).toBe(false); - expect(isSymbol(new Set())).toBe(false); - - // Typed arrays and ArrayBuffer should be false - expect(isSymbol(new Uint8Array())).toBe(false); - expect(isSymbol(new ArrayBuffer(8))).toBe(false); - - // Functions without tag should be false - const fn = () => {}; - expect(isSymbol(fn)).toBe(false); - - // Class instance without tag should be false - class Foo {} - const foo = new Foo(); - expect(isSymbol(foo)).toBe(false); - - // Proxy with tag should be true if own property is present - const target = {} as Record; - const proxied = new Proxy(target, { - get(_, prop) { - if (prop === '~tag') return 'heyapi.symbol'; - return undefined; - }, - getOwnPropertyDescriptor(_, prop) { - if (prop === '~tag') - return { - configurable: true, - enumerable: true, - value: 'heyapi.symbol', - writable: false, - }; - return undefined; - }, - has(_, prop) { - return prop === '~tag'; - }, - }); - // Define as own property to satisfy hasOwn - Object.defineProperty(target, '~tag', { - configurable: true, - value: 'heyapi.symbol', + const a = r.register({ + meta: meta({ a: { b: { c: 123 } } }), + name: 'A', }); - expect(isSymbol(proxied)).toBe(true); - - // Inherited tag should be false (not own property) - const proto = { '~tag': 'heyapi.symbol' }; - const objWithProto = Object.create(proto); - expect(isSymbol(objWithProto)).toBe(false); - // Primitive edge cases - expect(isSymbol(Symbol('x'))).toBe(false); - expect(isSymbol(0n)).toBe(false); + const result = r.query(meta({ a: { b: { c: 123 } } })); + expect(result).toEqual([a]); }); }); diff --git a/packages/codegen-core/src/bimap/bimap.ts b/packages/codegen-core/src/bimap/bimap.ts deleted file mode 100644 index d28794531..000000000 --- a/packages/codegen-core/src/bimap/bimap.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { IBiMap } from './types'; - -export class BiMap implements IBiMap { - private map = new Map(); - private reverse = new Map>(); - - delete(key: Key): boolean { - const value = this.map.get(key); - if (value !== undefined) { - this.reverse.delete(value); - } - return this.map.delete(key); - } - - deleteValue(value: Value): boolean { - const keys = this.reverse.get(value); - if (keys) { - for (const key of keys) { - this.map.delete(key); - } - } - return this.reverse.delete(value); - } - - entries(): IterableIterator<[Key, Value]> { - return this.map.entries(); - } - - get(key: Key): Value | undefined { - return this.map.get(key); - } - - getKeys(value: Value): Set | undefined { - return this.reverse.get(value); - } - - hasKey(key: Key): boolean { - return this.map.has(key); - } - - hasValue(value: Value): boolean { - return this.reverse.has(value); - } - - keys(): IterableIterator { - return this.map.keys(); - } - - set(key: Key, value: Value): this { - const oldValue = this.map.get(key); - if (oldValue !== undefined && oldValue !== value) { - const oldKeys = this.reverse.get(oldValue); - if (oldKeys) { - oldKeys.delete(key); - if (oldKeys.size === 0) { - this.reverse.delete(oldValue); - } - } - } - this.map.set(key, value); - const keys = this.reverse.get(value) ?? new Set(); - keys.add(key); - this.reverse.set(value, keys); - return this; - } - - get size(): number { - return this.map.size; - } - - values(): IterableIterator { - return this.map.values(); - } - - [Symbol.iterator](): IterableIterator<[Key, Value]> { - return this.map[Symbol.iterator](); - } -} diff --git a/packages/codegen-core/src/bimap/types.d.ts b/packages/codegen-core/src/bimap/types.d.ts deleted file mode 100644 index 529d71699..000000000 --- a/packages/codegen-core/src/bimap/types.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Bi-directional map interface. - * - * Keys map to values and values map back to keys. - * - * @template Key Type of the map keys - * @template Value Type of the map values - */ -export interface IBiMap { - /** - * Deletes a key and its associated value from the map. - * - * @param key The key to delete. - */ - delete(key: Key): boolean; - /** - * Deletes a value and its associated key from the map. - * - * @param value The value to delete. - */ - deleteValue(value: Value): boolean; - /** - * Returns an iterator of [key, value] pairs. - */ - entries(): IterableIterator<[Key, Value]>; - /** - * Gets the value associated with a key. - * - * @param key The key to look up. - */ - get(key: Key): Value | undefined; - /** - * Gets the keys associated with a value. - * - * @param value The value to look up. - */ - getKeys(value: Value): Set | undefined; - /** - * Checks if a key exists in the map. - * - * @param key The key to check. - */ - hasKey(key: Key): boolean; - /** - * Checks if a value exists in the map. - * - * @param value The value to check. - */ - hasValue(value: Value): boolean; - /** - * Returns an iterator of keys. - */ - keys(): IterableIterator; - /** - * Sets a key-value pair in the map. - * - * @param key The key. - * @param value The value. - * @returns This instance for chaining. - */ - set(key: Key, value: Value): this; - /** - * Number of key-value pairs in the map. - */ - readonly size: number; - /** - * Returns an iterator of values. - */ - values(): IterableIterator; - /** - * Enables iteration with `for...of`. - */ - [Symbol.iterator](): IterableIterator<[Key, Value]>; -} diff --git a/packages/codegen-core/src/bindings.d.ts b/packages/codegen-core/src/bindings.d.ts new file mode 100644 index 000000000..1926d5b05 --- /dev/null +++ b/packages/codegen-core/src/bindings.d.ts @@ -0,0 +1,57 @@ +import type { File } from './files/file'; +import type { BindingKind } from './symbols/types'; + +export interface ImportSingle { + /** Whether this import is type-only. */ + isTypeOnly: boolean; + /** Import flavor. */ + kind: BindingKind; + /** + * The name this symbol will have locally in this file. + * This is where aliasing is applied: + * + * import { Foo as Foo$2 } from "./x" + * + * localName === "Foo$2" + */ + localName: string; + /** The exported name of the symbol in its source file. */ + sourceName: string; +} + +export interface ExportSingle { + /** + * Name under which the symbol is exported in this file. + * + * export { Foo as Bar } from "./models" + * + * exportedName === "Bar" + */ + exportedName: string; + /** Whether this export is type-only. */ + isTypeOnly: boolean; + /** Export flavor. */ + kind: BindingKind; + /** The exported name of the symbol in its source file. */ + sourceName: string; +} + +export type ExportGroup = Pick & { + /** Whether this module can export all symbols: `export * from 'module'`. */ + canExportAll: boolean; + /** List of symbol exported from this module. */ + exports: Array; + /** Source file. */ + from: File; + /** Namespace export: `export * as ns from 'module'`. Mutually exclusive with `exports`. */ + namespaceExport?: string; +}; + +export type ImportGroup = Pick & { + /** Source file. */ + from: File; + /** List of symbols imported from this module. */ + imports: Array; + /** Namespace import: `import * as name from 'module'`. Mutually exclusive with `imports`. */ + namespaceImport?: string; +}; diff --git a/packages/codegen-core/src/bindings/plan.d.ts b/packages/codegen-core/src/bindings/plan.d.ts deleted file mode 100644 index 7224f3866..000000000 --- a/packages/codegen-core/src/bindings/plan.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import type { SymbolImportKind } from '../symbols/types'; - -export interface PlannedImport { - /** ID of the file where the symbol lives */ - from: number; - /** The final exported name of the symbol in its source file */ - importedName: string; - /** Whether this import is type-only. */ - isTypeOnly: boolean; - /** Import flavor. */ - kind: SymbolImportKind; - /** - * The name this symbol will have locally in this file. - * This is where aliasing is applied: - * - * import { Foo as Foo$2 } from "./x" - * - * localName === "Foo$2" - */ - localName: string; - /** ID of the symbol being imported */ - symbolId: number; -} - -export interface PlannedExport { - /** - * Whether the export was explicitly requested by the plugin/DSL - * (e.g. symbol.exported = true) vs implicitly required (e.g. re-export). - */ - explicit: boolean; - /** - * The name this symbol will be exported under from this file. - * - * This may differ from the symbol's finalName if aliasing is needed: - * - * export { Foo as Foo2 } - * - * exportedName === "Foo2" - */ - exportedName: string; - /** Whether this export is type-only. */ - isTypeOnly: boolean; - /** Export flavor. */ - kind: SymbolImportKind; - /** ID of the symbol being exported */ - symbolId: number; -} - -export interface PlannedReexport { - /** - * Name under which the symbol is exported in this file. - * - * export { Foo as Bar } from "./models" - * - * exportedName === "Bar" - */ - exportedName: string; - /** ID of the source file containing the symbol */ - from: number; - /** - * The name the symbol has in the source file’s exports. - * - * export { Foo as Bar } from "./models" - * - * importedName === "Foo" - * - * This handles aliasing in the source file's export list. - */ - importedName: string; - /** Whether this re-export is type-only. */ - isTypeOnly: boolean; - /** Export flavor. */ - kind: SymbolImportKind; - /** ID of the symbol being re-exported */ - symbolId: number; -} diff --git a/packages/codegen-core/src/bindings/types.d.ts b/packages/codegen-core/src/bindings/types.d.ts deleted file mode 100644 index 2510411f9..000000000 --- a/packages/codegen-core/src/bindings/types.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface IBinding { - /** - * Optional aliasing map for named symbols. - * - * Keys must be a subset of `names`, values are aliases. - * - * @example { User: "ImportedUser" } - */ - aliases?: Record; - /** - * Name of the default binding, if any. - * - * @example "React" - */ - defaultBinding?: string; - /** - * Source file or external module from which symbols are imported. - * - * @example "./models/user" - * @example "node:path" - */ - from: string; - /** - * Names of the symbols imported from the source. - * - * Must be non-empty unless `namespaceBinding` is true. - * All imported names, regardless of whether they are used as types or values. - * - * @example ["User", "UserDTO"] - */ - names?: ReadonlyArray; - /** - * If this import is a namespace import (e.g. `import * as ns from "..."`), - * this should be the namespace alias. Set to `true` if no alias is needed. - * - * @example "utils" - * @example true - */ - namespaceBinding?: boolean | string; - /** - * Whether the default binding is type-only. - * - * @example true - */ - typeDefaultBinding?: boolean; - /** - * Subset of `names` that are imported using the `type` modifier. - * These symbols will be emitted as type-only imports in TypeScript. - * - * @example ["UserDTO"] - */ - typeNames?: ReadonlyArray; - /** - * Whether the namespace binding is type-only. - * - * @example true - */ - typeNamespaceBinding?: boolean; -} diff --git a/packages/codegen-core/src/bindings/utils.ts b/packages/codegen-core/src/bindings/utils.ts deleted file mode 100644 index f8e9cf12d..000000000 --- a/packages/codegen-core/src/bindings/utils.ts +++ /dev/null @@ -1,91 +0,0 @@ -import type { IFileOut } from '../files/types'; -import type { Symbol } from '../symbols/symbol'; -import type { IBinding } from './types'; - -export const createBinding = ({ - file, - modulePath, - symbol, - symbolFile, -}: { - file: IFileOut; - modulePath: string; - symbol: Symbol; - symbolFile: IFileOut; -}): IBinding => { - const names: Array = []; - const typeNames: Array = []; - const binding: IBinding & Pick, 'aliases' | 'from'> = { - aliases: {}, - from: modulePath, - }; - if (symbol.importKind) { - if (symbol.importKind === 'default') { - binding.defaultBinding = symbol.placeholder; - if (symbol.kind === 'type') { - binding.typeDefaultBinding = true; - } - } else if (symbol.importKind === 'namespace') { - binding.namespaceBinding = symbol.placeholder; - if (symbol.kind === 'type') { - binding.typeNamespaceBinding = true; - } - } - } - // default to named binding - if ( - symbol.importKind === 'named' || - (!names.length && !binding.defaultBinding && !binding.namespaceBinding) - ) { - let name = symbol.placeholder; - const fileResolvedName = file.resolvedNames.get(symbol.id); - if (fileResolvedName) { - const symbolFileResolvedName = symbolFile.resolvedNames.get(symbol.id); - if (symbolFileResolvedName) { - if (symbolFileResolvedName !== fileResolvedName) { - name = symbolFileResolvedName; - binding.aliases[name] = fileResolvedName; - } - } else if (symbol.name && fileResolvedName !== symbol.name) { - name = symbol.name; - binding.aliases[name] = symbol.placeholder!; - } - } - names.push(name!); - if (symbol.kind === 'type') { - typeNames.push(name!); - } - } - // cast type names to names to allow for cleaner API, - // otherwise users would have to define the same values twice - for (const typeName of typeNames) { - if (!names.includes(typeName)) { - names.push(typeName); - } - } - binding.names = names; - binding.typeNames = typeNames; - return binding; -}; - -export const mergeBindings = (target: IBinding, source: IBinding): void => { - target.aliases = { ...target.aliases, ...source.aliases }; - if (source.defaultBinding !== undefined) { - target.defaultBinding = source.defaultBinding; - } - target.names = [ - ...new Set([...(target.names ?? []), ...(source.names ?? [])]), - ]; - if (source.namespaceBinding !== undefined) { - target.namespaceBinding = source.namespaceBinding; - } - if (source.typeDefaultBinding !== undefined) { - target.typeDefaultBinding = source.typeDefaultBinding; - } - target.typeNames = [ - ...new Set([...(target.typeNames ?? []), ...(source.typeNames ?? [])]), - ]; - if (source.typeNamespaceBinding !== undefined) { - target.typeNamespaceBinding = source.typeNamespaceBinding; - } -}; diff --git a/packages/codegen-core/src/brands.ts b/packages/codegen-core/src/brands.ts new file mode 100644 index 000000000..112caeafa --- /dev/null +++ b/packages/codegen-core/src/brands.ts @@ -0,0 +1,3 @@ +export const fileBrand = 'heyapi.file'; +export const nodeBrand = 'heyapi.node'; +export const symbolBrand = 'heyapi.symbol'; diff --git a/packages/codegen-core/src/debug.ts b/packages/codegen-core/src/debug.ts index 5e1cbcb56..44aa6afac 100644 --- a/packages/codegen-core/src/debug.ts +++ b/packages/codegen-core/src/debug.ts @@ -7,6 +7,7 @@ colors.enabled = colorSupport().hasBasic; const DEBUG_GROUPS = { analyzer: colors.greenBright, dsl: colors.cyanBright, + file: colors.yellowBright, registry: colors.blueBright, symbol: colors.magentaBright, } as const; diff --git a/packages/codegen-core/src/files/file.ts b/packages/codegen-core/src/files/file.ts new file mode 100644 index 000000000..b3fbe9678 --- /dev/null +++ b/packages/codegen-core/src/files/file.ts @@ -0,0 +1,217 @@ +import type { ExportGroup, ImportGroup } from '../bindings'; +import { fileBrand } from '../brands'; +import { debug } from '../debug'; +import type { Language } from '../languages/types'; +import type { INode } from '../nodes/node'; +import type { NameScopes } from '../planner/types'; +import type { IProject } from '../project/types'; +import type { Renderer } from '../renderer'; +import type { IFileIn } from './types'; + +export class File { + /** + * Exports from this file. + */ + private _exports: Array = []; + /** + * File extension (e.g. `.ts`). + */ + private _extension?: string; + /** + * Actual emitted file path, including extension and directories. + */ + private _finalPath?: string; + /** + * Imports to this file. + */ + private _imports: Array = []; + /** + * Language of the file. + */ + private _language?: Language; + /** + * Logical, extension-free path used for planning and routing. + */ + private _logicalFilePath: string; + /** + * Base name of the file (without extension). + */ + private _name?: string; + /** + * Syntax nodes contained in this file. + */ + private _nodes: Array = []; + /** + * Renderer assigned to this file. + */ + private _renderer?: Renderer; + + /** Brand used for identifying files. */ + readonly '~brand' = fileBrand; + /** All names defined in this file, including local scopes. */ + allNames: NameScopes = new Map(); + /** Whether this file is external to the project. */ + external: boolean; + /** Unique identifier for the file. */ + readonly id: number; + /** The project this file belongs to. */ + readonly project: IProject; + /** Names declared at the top level of the file. */ + topLevelNames: NameScopes = new Map(); + + constructor(input: IFileIn, id: number, project: IProject) { + this.external = input.external ?? false; + this.id = id; + if (input.language !== undefined) this._language = input.language; + this._logicalFilePath = input.logicalFilePath; + if (input.name !== undefined) this._name = input.name; + this.project = project; + } + + /** + * Exports from this file. + */ + get exports(): ReadonlyArray { + return [...this._exports]; + } + + /** + * Read-only accessor for the file extension. + */ + get extension(): string | undefined { + if (this._extension) return this._extension; + const language = this.language; + const extension = language ? this.project.extensions[language] : undefined; + if (extension && extension[0]) return extension[0]; + return; + } + + /** + * Read-only accessor for the final emitted path. + * + * If undefined, the file has not yet been assigned a final path + * or is external to the project and should not be emitted. + */ + get finalPath(): string | undefined { + if (this._finalPath) return this._finalPath; + const dirs = this._logicalFilePath + ? this._logicalFilePath.split('/').slice(0, -1) + : []; + return [...dirs, `${this.name}${this.extension ?? ''}`].join('/'); + } + + /** + * Imports to this file. + */ + get imports(): ReadonlyArray { + return [...this._imports]; + } + + /** + * Language of the file; inferred from nodes or fallback if not set explicitly. + */ + get language(): Language | undefined { + if (this._language) return this._language; + if (this._nodes[0]) return this._nodes[0].language; + return; + } + + /** + * Logical, extension-free path used for planning and routing. + */ + get logicalFilePath(): string { + return this._logicalFilePath; + } + + /** + * Base name of the file (without extension). + * + * If no name was set explicitly, it is inferred from the logical file path. + */ + get name(): string { + if (this._name) return this._name; + const name = this._logicalFilePath.split('/').pop(); + if (name) return name; + const message = `File ${this.toString()} has no name`; + debug(message, 'file'); + throw new Error(message); + } + + /** + * Syntax nodes contained in this file. + */ + get nodes(): ReadonlyArray { + return this._nodes; + } + + /** + * Renderer assigned to this file. + */ + get renderer(): Renderer | undefined { + return this._renderer; + } + + /** + * Add an export group to the file. + */ + addExport(group: ExportGroup): void { + this._exports.push(group); + } + + /** + * Add an import group to the file. + */ + addImport(group: ImportGroup): void { + this._imports.push(group); + } + + /** + * Add a syntax node to the file. + */ + addNode(node: INode): void { + this._nodes.push(node); + node.file = this; + } + + /** + * Sets the file extension. + */ + setExtension(extension: string): void { + this._extension = extension; + } + + /** + * Sets the final emitted path of the file. + */ + setFinalPath(path: string): void { + this._finalPath = path; + } + + /** + * Sets the language of the file. + */ + setLanguage(lang: Language): void { + this._language = lang; + } + + /** + * Sets the name of the file. + */ + setName(name: string): void { + this._name = name; + } + + /** + * Sets the renderer assigned to this file. + */ + setRenderer(renderer: Renderer): void { + this._renderer = renderer; + } + + /** + * Returns a debug‑friendly string representation identifying the file. + */ + toString(): string { + return `[File ${this._logicalFilePath}#${this.id}]`; + } +} diff --git a/packages/codegen-core/src/files/registry.ts b/packages/codegen-core/src/files/registry.ts index 3391a875b..428647528 100644 --- a/packages/codegen-core/src/files/registry.ts +++ b/packages/codegen-core/src/files/registry.ts @@ -1,133 +1,55 @@ -import { BiMap } from '../bimap/bimap'; -import type { - IFileIdentifier, - IFileIn, - IFileOut, - IFileRegistry, -} from './types'; +import type { IProject } from '../project/types'; +import { File } from './file'; +import type { FileKeyArgs, IFileIn, IFileRegistry } from './types'; -export class FileRegistry implements IFileRegistry { - private _id: number = 0; - private referenceOrder: Set = new Set(); - private registerOrder: Set = new Set(); - private selectorToId: Map = new Map(); - private values: Map = new Map(); - - get(identifier: IFileIdentifier): IFileOut | undefined { - const file = this.identifierToFile(identifier); - - if (file.id !== undefined) { - return this.values.get(file.id); - } +type FileId = number; +type FileKey = string; - const selector = - file.selector !== undefined ? JSON.stringify(file.selector) : undefined; - - if (selector) { - const id = this.selectorToId.get(selector); - if (id !== undefined) { - return this.values.get(id); - } - } - - return; - } - - get id(): number { - return this._id++; - } +export class FileRegistry implements IFileRegistry { + private _id: FileId = 0; + private _values: Map = new Map(); + private readonly project: IProject; - private identifierToFile( - identifier: IFileIdentifier, - ): Pick { - return typeof identifier === 'number' - ? { id: identifier } - : { selector: identifier }; + constructor(project: IProject) { + this.project = project; } - isRegistered(identifier: IFileIdentifier): boolean { - const file = this.get(identifier); - return file ? this.registerOrder.has(file.id) : false; + get(args: FileKeyArgs): File | undefined { + return this._values.get(this.createFileKey(args)); } - reference(identifier: IFileIdentifier): IFileOut { - const file = this.identifierToFile(identifier); - return this.register(file); + isRegistered(args: FileKeyArgs): boolean { + return this._values.has(this.createFileKey(args)); } - *referenced(): IterableIterator { - for (const id of this.referenceOrder.values()) { - yield this.values.get(id)!; - } + get nextId(): FileId { + return this._id++; } - register(file: IFileIn): IFileOut { - if (file.id !== undefined) { - const result = this.values.get(file.id); - if (!result) { - throw new Error( - `File with ID ${file.id} not found. To register a new file, leave the ID undefined.`, - ); - } - return result; - } + register(file: IFileIn): File { + const key = this.createFileKey(file); - const hasOtherKeys = Object.keys(file).some( - (key) => !['id', 'selector'].includes(key), - ); - - let result: IFileOut | undefined; - - const selector = - file.selector !== undefined ? JSON.stringify(file.selector) : undefined; - if (selector) { - const id = this.selectorToId.get(selector); - if (id !== undefined) { - result = this.values.get(id); - if (!result) { - throw new Error( - `File with ID ${id} not found. The selector ${selector} matched an ID, but there was no result. This is likely an issue with the application logic.`, - ); - } - if (!hasOtherKeys) { - return result; - } - } - } - - const id = result?.id !== undefined ? result.id : this.id; - result = { - ...result, - ...file, // clone to avoid mutation - exports: result?.exports ?? [], - id, - imports: result?.imports ?? [], - reexports: result?.reexports ?? [], - reservedNames: result?.reservedNames ?? new Map(), - resolvedNames: result?.resolvedNames ?? new BiMap(), - symbols: result?.symbols ?? [], - }; - this.values.set(id, result); - - if (hasOtherKeys) { - this.registerOrder.add(id); - if (this.referenceOrder.has(id)) { - this.referenceOrder.delete(id); + let result = this._values.get(key); + if (result) { + if (file.name) { + result.setName(file.name); } } else { - this.referenceOrder.add(id); + result = new File(file, this.nextId, this.project); } - if (selector) { - this.selectorToId.set(selector, id); - } + this._values.set(key, result); return result; } - *registered(): IterableIterator { - for (const id of this.registerOrder.values()) { - yield this.values.get(id)!; + *registered(): IterableIterator { + for (const file of this._values.values()) { + yield file; } } + + private createFileKey(args: FileKeyArgs): string { + return `${args.external ? 'ext:' : ''}${args.logicalFilePath}${args.language ? `:${args.language}` : ''}`; + } } diff --git a/packages/codegen-core/src/files/rules.d.ts b/packages/codegen-core/src/files/rules.d.ts index 07f6c1fab..3a7c3d779 100644 --- a/packages/codegen-core/src/files/rules.d.ts +++ b/packages/codegen-core/src/files/rules.d.ts @@ -1,3 +1,4 @@ +// TODO: use this later export interface Rules { /** Whether two exported names may collide. */ allowExportNameShadowing: boolean; diff --git a/packages/codegen-core/src/files/types.d.ts b/packages/codegen-core/src/files/types.d.ts index 7bf21a16b..b23560200 100644 --- a/packages/codegen-core/src/files/types.d.ts +++ b/packages/codegen-core/src/files/types.d.ts @@ -1,25 +1,10 @@ -import type { IBiMap } from '../bimap/types'; -import type { - PlannedExport, - PlannedImport, - PlannedReexport, -} from '../bindings/plan'; -import type { Symbol } from '../symbols/symbol'; -import type { SymbolKind } from '../symbols/types'; -import type { Rules } from './rules'; +import type { Language } from '../languages/types'; +import type { File } from './file'; -/** - * Selector array used to reference files. - * - * @example ["foo", "bar"] - */ -export type IFileSelector = ReadonlyArray; - -export type IFileIdentifier = number | IFileSelector; +export type FileKeyArgs = Pick, 'logicalFilePath'> & + Pick, 'external' | 'language'>; export type IFileIn = { - /** File extension, if any. */ - extension?: string; /** * Indicates whether the file is external, meaning it is not generated * as part of the project but is referenced (e.g., a module from @@ -28,95 +13,57 @@ export type IFileIn = { * @example true */ external?: boolean; - /** Unique file ID. If one is not provided, it will be auto-generated. */ - readonly id?: number; /** - * The desired name for the file within the project. If there are multiple files - * with the same desired name, this might not end up being the actual name. + * Language of the file. * - * @example "UserModel" + * @example "typescript" */ - name?: string; + language?: Language; /** - * Absolute logical output path for the file. + * Logical, extension-free path used for planning and routing. * - * @example "/src/models/user.ts" + * @example "src/models/user" */ - path?: string; + logicalFilePath: string; /** - * Selector array used to select this file. + * The desired name for the file within the project. If there are multiple files + * with the same desired name, this might not end up being the actual name. * - * @example ["foo", "bar"] + * @example "UserModel" */ - readonly selector?: IFileSelector; -}; - -export type IFileOut = IFileIn & { - /** Named exports originating from this file */ - readonly exports: Array; - /** Unique file ID. */ - readonly id: number; - /** Fully resolved imports this file needs */ - readonly imports: Array; - /** Re-exports (“export { X } from …”) */ - readonly reexports: Array; - /** Top-level names in this file that cannot be reused (imports, exports, declarations, symbol names). */ - readonly reservedNames: Map>; - /** Map holding resolved names for symbols in this file. */ - readonly resolvedNames: IBiMap; - /** Rules that control naming, imports, reexports, and scope behavior for this file. */ - rules?: Rules; - /** Symbols defined inside this file */ - readonly symbols: Array; + name?: string; }; export interface IFileRegistry { /** * Get a file. * - * @param identifier File identifier to reference. * @returns The file, or undefined if not found. */ - get(identifier: IFileIdentifier): IFileOut | undefined; - /** - * Returns the current file ID and increments it. - * - * @returns File ID before being incremented - */ - readonly id: number; + get(args: FileKeyArgs): File | undefined; /** * Returns whether a file is registered in the registry. * - * @param identifier File identifier to check. * @returns True if the file is registered, false otherwise. */ - isRegistered(identifier: IFileIdentifier): boolean; + isRegistered(args: FileKeyArgs): boolean; /** - * Returns a file by identifier, registering it if it doesn't exist. - * - * @param identifier File identifier to reference. - * @returns The referenced or newly registered file. - */ - reference(identifier: IFileIdentifier): IFileOut; - /** - * Get all unregistered files in the order they were referenced. + * Returns the current file ID and increments it. * - * @returns Array of all unregistered files, in reference order. + * @returns File ID before being incremented */ - referenced(): IterableIterator; + readonly nextId: number; /** * Register a file globally. * - * Deduplicates identical files by ID. - * * @param file File to register. - * @returns true if added, false if duplicate. + * @returns Newly registered file if created, merged file otherwise. */ - register(file: IFileIn): IFileOut; + register(file: IFileIn): File; /** * Get all files in the order they were registered. * * @returns Array of all registered files, in insert order. */ - registered(): IterableIterator; + registered(): IterableIterator; } diff --git a/packages/codegen-core/src/guards.ts b/packages/codegen-core/src/guards.ts new file mode 100644 index 000000000..5fd9564fa --- /dev/null +++ b/packages/codegen-core/src/guards.ts @@ -0,0 +1,26 @@ +import { nodeBrand, symbolBrand } from './brands'; +import type { INode } from './nodes/node'; +import type { Ref } from './refs/types'; +import type { Symbol } from './symbols/symbol'; + +export function isBrand(value: unknown, brand: string): value is INode { + if (!value || typeof value !== 'object') return false; + return (value as any)['~brand'] === brand; +} + +export function isNode(value: unknown): value is INode { + if (!value || typeof value !== 'object') return false; + return isBrand(value, nodeBrand); +} + +export function isNodeRef(value: Ref): value is Ref { + return isBrand(value['~ref'], nodeBrand); +} + +export function isSymbol(value: unknown): value is Symbol { + return isBrand(value, symbolBrand); +} + +export function isSymbolRef(value: Ref): value is Ref { + return isBrand(value['~ref'], symbolBrand); +} diff --git a/packages/codegen-core/src/index.ts b/packages/codegen-core/src/index.ts index 4723164dd..02606b0c1 100644 --- a/packages/codegen-core/src/index.ts +++ b/packages/codegen-core/src/index.ts @@ -1,30 +1,40 @@ -export type { IBiMap as BiMap } from './bimap/types'; export type { - PlannedExport, - PlannedImport, - PlannedReexport, -} from './bindings/plan'; -export type { IBinding as Binding } from './bindings/types'; -export { createBinding, mergeBindings } from './bindings/utils'; + ExportGroup, + ExportSingle, + ImportGroup, + ImportSingle, +} from './bindings'; +export { nodeBrand, symbolBrand } from './brands'; export { debug } from './debug'; export type { IProjectRenderMeta as ProjectRenderMeta, ISymbolMeta as SymbolMeta, } from './extensions'; +export { File } from './files/file'; +export type { IFileIn as FileIn } from './files/types'; +export { isNode, isNodeRef, isSymbol, isSymbolRef } from './guards'; +export { defaultExtensions } from './languages/extensions'; +export { defaultNameConflictResolvers } from './languages/resolvers'; export type { - IFileOut as File, - IFileIdentifier as FileIdentifier, - IFileIn as FileIn, -} from './files/types'; + Extensions, + Language, + NameConflictResolvers, +} from './languages/types'; export type { INode as Node } from './nodes/node'; export type { IOutput as Output } from './output'; +export { + simpleNameConflictResolver, + underscoreNameConflictResolver, +} from './planner/resolvers'; +export type { IAnalysisContext as AnalysisContext } from './planner/types'; export { Project } from './project/project'; export type { IProject } from './project/types'; -export type { IRenderer as Renderer } from './renderer/types'; -export { renderIds } from './renderer/utils'; -export { AnalysisContext, Analyzer } from './symbols/analyzer'; -export { isSymbol, Symbol, symbolBrand } from './symbols/symbol'; +export { fromRef, fromRefs, isRef, ref, refs } from './refs/refs'; +export type { FromRef, FromRefs, Ref, Refs } from './refs/types'; +export type { RenderContext, Renderer } from './renderer'; +export { Symbol } from './symbols/symbol'; export type { + BindingKind, ISymbolIdentifier as SymbolIdentifier, ISymbolIn as SymbolIn, } from './symbols/types'; diff --git a/packages/codegen-core/src/languages/extensions.ts b/packages/codegen-core/src/languages/extensions.ts new file mode 100644 index 000000000..579bc0cd4 --- /dev/null +++ b/packages/codegen-core/src/languages/extensions.ts @@ -0,0 +1,31 @@ +import type { Extensions } from './types'; + +export const defaultExtensions: Extensions = { + c: ['.c'], + 'c#': ['.cs'], + 'c++': ['.cpp', '.hpp'], + css: ['.css'], + dart: ['.dart'], + go: ['.go'], + haskell: ['.hs'], + html: ['.html'], + java: ['.java'], + javascript: ['.js', '.jsx'], + json: ['.json'], + kotlin: ['.kt'], + lua: ['.lua'], + markdown: ['.md'], + matlab: ['.m'], + perl: ['.pl'], + php: ['.php'], + python: ['.py'], + r: ['.r'], + ruby: ['.rb'], + rust: ['.rs'], + scala: ['.scala'], + shell: ['.sh'], + sql: ['.sql'], + swift: ['.swift'], + typescript: ['.ts', '.tsx'], + yaml: ['.yaml', '.yml'], +}; diff --git a/packages/codegen-core/src/languages/resolvers.ts b/packages/codegen-core/src/languages/resolvers.ts new file mode 100644 index 000000000..0e8a39953 --- /dev/null +++ b/packages/codegen-core/src/languages/resolvers.ts @@ -0,0 +1,8 @@ +import { underscoreNameConflictResolver } from '../planner/resolvers'; +import type { NameConflictResolvers } from './types'; + +export const defaultNameConflictResolvers: NameConflictResolvers = { + php: underscoreNameConflictResolver, + python: underscoreNameConflictResolver, + ruby: underscoreNameConflictResolver, +}; diff --git a/packages/codegen-core/src/languages/types.d.ts b/packages/codegen-core/src/languages/types.d.ts new file mode 100644 index 000000000..707d58123 --- /dev/null +++ b/packages/codegen-core/src/languages/types.d.ts @@ -0,0 +1,37 @@ +import type { NameConflictResolver } from '../planner/types'; + +export type Extensions = Partial>>; + +export type Language = + | 'c' + | 'c#' + | 'c++' + | 'css' + | 'dart' + | 'go' + | 'haskell' + | 'html' + | 'java' + | 'javascript' + | 'json' + | 'kotlin' + | 'lua' + | 'markdown' + | 'matlab' + | 'perl' + | 'php' + | 'python' + | 'r' + | 'ruby' + | 'rust' + | 'scala' + | 'shell' + | 'sql' + | 'swift' + | 'typescript' + | 'yaml' + | (string & {}); // other/custom language + +export type NameConflictResolvers = Partial< + Record +>; diff --git a/packages/codegen-core/src/nodes/node.d.ts b/packages/codegen-core/src/nodes/node.d.ts index 8c62d9999..1c98489e6 100644 --- a/packages/codegen-core/src/nodes/node.d.ts +++ b/packages/codegen-core/src/nodes/node.d.ts @@ -1,13 +1,25 @@ -import type { IAnalysisContext } from '../symbols/analyzer'; +import type { File } from '../files/file'; +import type { Language } from '../languages/types'; +import type { IAnalysisContext } from '../planner/types'; import type { Symbol } from '../symbols/symbol'; -export interface INode { +export interface INode { /** Perform semantic analysis. */ analyze(ctx: IAnalysisContext): void; - /** Parent node in the constructed syntax tree. */ + /** Whether this node is exported from its file. */ + exported?: boolean; + /** The file this node belongs to. */ + file?: File; + /** The programming language associated with this node */ + language: Language; + /** Parent node in the syntax tree. */ parent?: INode; - /** The symbol associated with this node, if it defines a top‑level symbol. */ + /** Root node of the syntax tree. */ + root?: INode; + /** The symbol associated with this node. */ symbol?: Symbol; + /** Convert this node into AST representation. */ + toAst(): T; /** Brand used for renderer dispatch. */ - readonly '~brand': symbol; + readonly '~brand': string; } diff --git a/packages/codegen-core/src/nodes/registry.ts b/packages/codegen-core/src/nodes/registry.ts index c99eab598..fad9bf0fc 100644 --- a/packages/codegen-core/src/nodes/registry.ts +++ b/packages/codegen-core/src/nodes/registry.ts @@ -2,7 +2,7 @@ import type { INode } from './node'; import type { INodeRegistry } from './types'; export class NodeRegistry implements INodeRegistry { - private brands: Map> = new Map(); + private brands: Map> = new Map(); private list: Array = []; add(node: INode): void { @@ -20,7 +20,7 @@ export class NodeRegistry implements INodeRegistry { return this.list; } - byBrand(brand: symbol): ReadonlyArray { + byBrand(brand: string): ReadonlyArray { return this.brands.get(brand) ?? []; } } diff --git a/packages/codegen-core/src/nodes/types.d.ts b/packages/codegen-core/src/nodes/types.d.ts index a21416b76..8331c4fab 100644 --- a/packages/codegen-core/src/nodes/types.d.ts +++ b/packages/codegen-core/src/nodes/types.d.ts @@ -12,5 +12,5 @@ export interface INodeRegistry { /** * Nodes by backend brand, so planner doesn't need to filter repeatedly. */ - byBrand(brand: symbol): ReadonlyArray; + byBrand(brand: string): ReadonlyArray; } diff --git a/packages/codegen-core/src/planner/analyzer.ts b/packages/codegen-core/src/planner/analyzer.ts new file mode 100644 index 000000000..ec2a55214 --- /dev/null +++ b/packages/codegen-core/src/planner/analyzer.ts @@ -0,0 +1,109 @@ +import { isNodeRef, isSymbolRef } from '../guards'; +import type { INode } from '../nodes/node'; +import { fromRef, isRef, ref } from '../refs/refs'; +import type { Ref } from '../refs/types'; +import type { Symbol } from '../symbols/symbol'; +import type { IAnalysisContext, Input, NameScopes, Scope } from './types'; + +const createScope = (parent?: Scope): Scope => ({ + children: [], + localNames: new Map(), + parent, + symbols: [], +}); + +export class AnalysisContext implements IAnalysisContext { + scopes: Scope = createScope(); + symbol?: Symbol; + scope: Scope = this.scopes; + + constructor(symbol?: Symbol) { + this.symbol = symbol; + } + + addDependency(symbol: Ref): void { + if (this.symbol !== fromRef(symbol)) { + this.scope.symbols.push(symbol); + } + } + + analyze(input: Input): void { + const v = isRef(input) ? input : ref(input); + if (isSymbolRef(v)) { + this.addDependency(v); + } else if (isNodeRef(v)) { + fromRef(v).analyze(this); + } + } + + localNames(scope: Scope): NameScopes { + const names: NameScopes = new Map(); + for (const [name, kinds] of scope.localNames) { + names.set(name, new Set(kinds)); + } + if (scope.parent) { + const parentNames = this.localNames(scope.parent); + for (const [name, kinds] of parentNames) { + if (!names.has(name)) { + names.set(name, kinds); + } else { + const existingKinds = names.get(name)!; + for (const kind of kinds) { + existingKinds.add(kind); + } + } + } + } + return names; + } + + popScope(): void { + this.scope = this.scope.parent ?? this.scope; + } + + pushScope(): void { + const scope = createScope(this.scope); + this.scope.children.push(scope); + this.scope = scope; + } + + walkScopes( + callback: (symbol: Ref, scope: Scope) => void, + scope: Scope = this.scopes, + ): void { + this.scope = scope; + for (const symbol of scope.symbols) { + callback(symbol, scope); + } + for (const child of scope.children) { + scope = child; + this.walkScopes(callback, scope); + } + this.scope = this.scopes; + } +} + +export class Analyzer { + private nodeCache = new WeakMap(); + + analyzeNode(node: INode): AnalysisContext { + const cached = this.nodeCache.get(node); + if (cached) return cached; + + const ctx = new AnalysisContext(node.symbol); + node.analyze(ctx); + + this.nodeCache.set(node, ctx); + return ctx; + } + + analyze( + nodes: ReadonlyArray, + callback?: (ctx: AnalysisContext, node: INode) => void, + ): void { + for (const node of nodes) { + const ctx = this.analyzeNode(node); + callback?.(ctx, node); + } + } +} diff --git a/packages/codegen-core/src/planner/planner.ts b/packages/codegen-core/src/planner/planner.ts new file mode 100644 index 000000000..9bde0781e --- /dev/null +++ b/packages/codegen-core/src/planner/planner.ts @@ -0,0 +1,430 @@ +import path from 'node:path'; + +import type { ExportGroup, ImportGroup } from '../bindings'; +import type { IProjectRenderMeta } from '../extensions'; +import type { File } from '../files/file'; +import type { IFileIn } from '../files/types'; +import { canShareName } from '../project/namespace'; +import type { IProject } from '../project/types'; +import { fromRef } from '../refs/refs'; +import type { RenderContext } from '../renderer'; +import type { Symbol } from '../symbols/symbol'; +import type { SymbolKind } from '../symbols/types'; +import type { AnalysisContext } from './analyzer'; +import { Analyzer } from './analyzer'; +import type { AssignOptions, NameScopes } from './types'; + +const isTypeOnlyKind = (kind: SymbolKind) => + kind === 'type' || kind === 'interface'; + +export class Planner { + private readonly analyzer = new Analyzer(); + private readonly cacheResolvedNames = new Set(); + private readonly project: IProject; + + constructor(project: IProject) { + this.project = project; + } + + /** + * Executes the planning phase for the project. + */ + plan(meta?: IProjectRenderMeta) { + this.cacheResolvedNames.clear(); + this.allocateFiles(); + this.assignLocalNames(); + this.resolveFilePaths(meta); + this.planExports(); + this.planImports(); + } + + /** + * Creates and assigns a file to every node, re-export, + * and external dependency. + */ + private allocateFiles(): void { + this.analyzer.analyze(this.project.nodes.all(), (ctx, node) => { + const symbol = node.symbol; + if (!symbol) return; + + const file = this.project.files.register(this.symbolToFileIn(symbol)); + file.addNode(node); + symbol.setFile(file); + for (const exportFrom of symbol.exportFrom) { + this.project.files.register({ + external: false, + language: file.language, + logicalFilePath: exportFrom, + }); + } + ctx.walkScopes((dependency) => { + const dep = fromRef(dependency); + if (dep.external && dep.isCanonical && !dep.file) { + const file = this.project.files.register(this.symbolToFileIn(dep)); + dep.setFile(file); + } + }); + }); + } + + /** + * Assigns final names to all symbols. + * + * First assigns top-level (file-scoped) symbol names, then local symbols. + */ + private assignLocalNames(): void { + this.analyzer.analyze(this.project.nodes.all(), (ctx, node) => { + const symbol = node.symbol; + if (!symbol) return; + this.assignTopLevelName(symbol, ctx); + }); + + this.analyzer.analyze(this.project.nodes.all(), (ctx, node) => { + const file = node.file; + if (!file) return; + ctx.walkScopes((dependency) => { + const dep = fromRef(dependency); + // top-level or external symbol + if (dep.file) return; + this.assignLocalName(dep, ctx, { + scopesToUpdate: [file.allNames], + }); + }); + }); + } + + /** + * Resolves and sets final file paths for all non-external files. Attaches renderers. + * + * Uses the project's fileName function if provided, otherwise uses the file's current name. + * + * Resolves final paths relative to the project's root directory. + */ + private resolveFilePaths(meta?: IProjectRenderMeta): void { + for (const file of this.project.files.registered()) { + if (file.external) continue; + const finalName = this.project.fileName?.(file.name) || file.name; + file.setName(finalName); + const finalPath = file.finalPath; + if (finalPath) { + file.setFinalPath(path.resolve(this.project.root, finalPath)); + } + const ctx: RenderContext = { file, meta, project: this.project }; + const renderer = this.project.renderers.find((r) => r.supports(ctx)); + if (renderer) file.setRenderer(renderer); + } + } + + /** + * Plans exports by analyzing all exported symbols. + * + * Registers re-export targets as files and creates new exported symbols for them. + * + * Assigns names to re-exported symbols and collects re-export metadata, + * distinguishing type-only exports based on symbol kinds. + */ + private planExports(): void { + const seenByFile = new Map< + File, + Map; symbol: Symbol }> + >(); + const sourceFile = new Map(); + + this.analyzer.analyze(this.project.nodes.all(), (ctx, node) => { + if (!node.exported) return; + + const symbol = node.symbol; + if (!symbol) return; + + const file = node.file; + if (!file) return; + + for (const exportFrom of symbol.exportFrom) { + const target = this.project.files.register({ + external: false, + language: node.language, + logicalFilePath: exportFrom, + }); + if (target.id === file.id) continue; + + let fileMap = seenByFile.get(target); + if (!fileMap) { + fileMap = new Map(); + seenByFile.set(target, fileMap); + } + + const exp = this.project.symbols.register({ + exported: true, + external: symbol.external, + importKind: symbol.importKind, + kind: symbol.kind, + name: symbol.finalName, + }); + exp.setFile(target); + sourceFile.set(exp.id, file); + this.assignTopLevelName(exp, ctx); + + let entry = fileMap.get(exp.finalName); + if (!entry) { + entry = { kinds: new Set(), symbol: exp }; + fileMap.set(exp.finalName, entry); + } + entry.kinds.add(exp.kind); + } + }); + + for (const [file, fileMap] of seenByFile) { + const exports = new Map(); + for (const [, entry] of fileMap) { + const source = sourceFile.get(entry.symbol.id)!; + let exp = exports.get(source); + if (!exp) { + exp = { + canExportAll: true, + exports: [], + from: source, + isTypeOnly: true, + }; + } + const isTypeOnly = [...entry.kinds].every((kind) => + isTypeOnlyKind(kind), + ); + const exportedName = entry.symbol.finalName; + exp.exports.push({ + exportedName, + isTypeOnly, + kind: entry.symbol.importKind, + sourceName: entry.symbol.name, + }); + if (entry.symbol.name !== entry.symbol.finalName) { + exp.canExportAll = false; + } + if (!isTypeOnly) { + exp.isTypeOnly = false; + } + exports.set(source, exp); + } + for (const [, exp] of exports) { + file.addExport(exp); + } + } + } + + /** + * Plans imports by analyzing symbol dependencies across files. + * + * For external dependencies, assigns top-level names. + * + * Creates or reuses import symbols for dependencies from other files, + * assigning names and updating import metadata including type-only flags. + */ + private planImports(): void { + const seenByFile = new Map< + File, + Map< + string, + { + dep: Symbol; + kinds: Set; + symbol: Symbol; + } + > + >(); + + this.analyzer.analyze(this.project.nodes.all(), (ctx) => { + const symbol = ctx.symbol; + if (!symbol) return; + + const file = symbol.file; + if (!file) return; + + let fileMap = seenByFile.get(file); + if (!fileMap) { + fileMap = new Map(); + seenByFile.set(file, fileMap); + } + + ctx.walkScopes((dependency) => { + const dep = fromRef(dependency); + if (!dep.file || dep.file.id === file.id) return; + + if (dep.external) { + this.assignTopLevelName(dep, ctx); + } + + const fromFileId = dep.file.id; + const importedName = dep.finalName; + const isTypeOnly = isTypeOnlyKind(dep.kind); + const kind = dep.importKind; + const key = `${fromFileId}|${importedName}|${kind}|${isTypeOnly}`; + + let entry = fileMap.get(key); + if (!entry) { + const imp = this.project.symbols.register({ + exported: dep.exported, + external: dep.external, + importKind: dep.importKind, + kind: dep.kind, + name: dep.finalName, + }); + imp.setFile(file); + this.assignTopLevelName(imp, ctx, { + scope: imp.file!.allNames, + }); + entry = { + dep, + kinds: new Set(), + symbol: imp, + }; + fileMap.set(key, entry); + entry.kinds.add(imp.kind); + } + + dependency['~ref'] = entry.symbol; + }); + }); + + for (const [file, fileMap] of seenByFile) { + const imports = new Map(); + for (const [, entry] of fileMap) { + const source = entry.dep.file!; + let imp = imports.get(source); + if (!imp) { + imp = { + from: source, + imports: [], + isTypeOnly: true, + }; + } + const isTypeOnly = [...entry.kinds].every((kind) => + isTypeOnlyKind(kind), + ); + if (entry.symbol.importKind === 'namespace') { + imp.imports = []; + imp.namespaceImport = entry.symbol.finalName; + } else { + imp.imports.push({ + isTypeOnly, + kind: entry.symbol.importKind, + localName: entry.symbol.finalName, + sourceName: entry.dep.finalName, + }); + } + if (!isTypeOnly) { + imp.isTypeOnly = false; + } + imports.set(source, imp); + } + for (const [, imp] of imports) { + file.addImport(imp); + } + } + } + + /** + * Assigns the final name to a top-level (file-scoped) symbol. + * + * Uses the symbol's file top-level names as the default scope, + * and updates all relevant name scopes including the file's allNames and local scopes. + * + * Supports optional overrides for the naming scope and scopes to update. + */ + private assignTopLevelName( + symbol: Symbol, + ctx: AnalysisContext, + options?: Partial, + ): void { + if (!symbol.file) return; + this.assignSymbolName(symbol, { + scope: options?.scope ?? symbol.file.topLevelNames, + scopesToUpdate: [ + symbol.file.allNames, + ctx.scopes.localNames, + ...(options?.scopesToUpdate ?? []), + ], + }); + } + + /** + * Assigns the final name to a non-top-level (local) symbol. + * + * Uses the provided scope or derives it from the current analysis context's local names. + * + * Updates all provided name scopes accordingly. + */ + private assignLocalName( + symbol: Symbol, + ctx: AnalysisContext, + options: Pick, 'scope'> & + Pick, + ): void { + this.assignSymbolName(symbol, { + scope: options.scope ?? ctx.localNames(ctx.scope), + scopesToUpdate: options.scopesToUpdate, + }); + } + + /** + * Assigns the final name to a symbol within the provided name scope. + * + * Resolves name conflicts until a unique name is found. + * + * Updates all specified name scopes with the assigned final name. + */ + private assignSymbolName(symbol: Symbol, options: AssignOptions): void { + if (this.cacheResolvedNames.has(symbol.id)) return; + + const baseName = symbol.name; + let finalName = symbol.nameSanitizer?.(baseName) ?? baseName; + let attempt = 1; + + while (true) { + const kinds = [...(options.scope.get(finalName) ?? [])]; + + const ok = kinds.every((kind) => canShareName(symbol.kind, kind)); + if (ok) break; + + const resolver = + (symbol.node?.language + ? this.project.nameConflictResolvers[symbol.node.language] + : undefined) ?? this.project.defaultNameConflictResolver; + const resolvedName = resolver({ attempt, baseName }); + if (!resolvedName) { + throw new Error(`Unresolvable name conflict: ${symbol.toString()}`); + } + + finalName = symbol.nameSanitizer?.(resolvedName) ?? resolvedName; + attempt = attempt + 1; + } + + symbol.setFinalName(finalName); + this.cacheResolvedNames.add(symbol.id); + const updateScopes = [options.scope, ...options.scopesToUpdate]; + for (const scope of updateScopes) { + this.updateScope(symbol, scope); + } + } + + /** + * Updates the provided name scope with the symbol's final name and kind. + * + * Ensures the name scope tracks all kinds associated with a given name. + */ + private updateScope(symbol: Symbol, scope: NameScopes): void { + const name = symbol.finalName; + const cache = scope.get(name) ?? new Set(); + cache.add(symbol.kind); + scope.set(name, cache); + } + + private symbolToFileIn(symbol: Symbol): IFileIn { + return { + external: Boolean(symbol.external), + language: symbol.node?.language, + logicalFilePath: + symbol.external || + symbol.getFilePath?.(symbol) || + this.project.defaultFileName, + } satisfies IFileIn; + } +} diff --git a/packages/codegen-core/src/planner/resolvers.ts b/packages/codegen-core/src/planner/resolvers.ts new file mode 100644 index 000000000..445384cc7 --- /dev/null +++ b/packages/codegen-core/src/planner/resolvers.ts @@ -0,0 +1,11 @@ +import type { NameConflictResolver } from './types'; + +export const simpleNameConflictResolver: NameConflictResolver = ({ + attempt, + baseName, +}) => (attempt === 0 ? baseName : `${baseName}${attempt + 1}`); + +export const underscoreNameConflictResolver: NameConflictResolver = ({ + attempt, + baseName, +}) => (attempt === 0 ? baseName : `${baseName}_${attempt + 1}`); diff --git a/packages/codegen-core/src/planner/types.d.ts b/packages/codegen-core/src/planner/types.d.ts new file mode 100644 index 000000000..aa98ed3d7 --- /dev/null +++ b/packages/codegen-core/src/planner/types.d.ts @@ -0,0 +1,54 @@ +import type { Ref } from '../refs/types'; +import type { Symbol } from '../symbols/symbol'; +import type { SymbolKind } from '../symbols/types'; + +export type AssignOptions = { + /** The primary scope in which to assign a symbol's final name. */ + scope: NameScopes; + /** Additional scopes to update as side effects when assigning a symbol's final name. */ + scopesToUpdate: ReadonlyArray; +}; + +export type Input = Ref | object | string | number | undefined; + +export type NameScopes = Map>; + +export type NameConflictResolver = (args: { + attempt: number; + baseName: string; +}) => string | null; + +export type Scope = { + /** Child scopes. */ + children: Array; + /** Resolved names in this scope. */ + localNames: NameScopes; + /** Parent scope, if any. */ + parent?: Scope; + /** Symbols registered in this scope. */ + symbols: Array>; +}; + +export interface IAnalysisContext { + /** Register a dependency on another symbol. */ + addDependency(symbol: Ref): void; + /** Register a dependency on another symbol or analyze further. */ + analyze(input: Input): void; + /** Get local names in the current scope. */ + localNames(scope: Scope): NameScopes; + /** Pop the current local scope. */ + popScope(): void; + /** Push a new local scope. */ + pushScope(): void; + /** Current local scope. */ + scope: Scope; + /** Stack of local name scopes. */ + scopes: Scope; + /** Top-level symbol for the current analysis pass. */ + symbol?: Symbol; + /** Walks all symbols in the scope tree in depth-first order. */ + walkScopes( + callback: (symbol: Ref, scope: Scope) => void, + scope?: Scope, + ): void; +} diff --git a/packages/codegen-core/src/project/project.ts b/packages/codegen-core/src/project/project.ts index cbf1c67ea..d31f5bb60 100644 --- a/packages/codegen-core/src/project/project.ts +++ b/packages/codegen-core/src/project/project.ts @@ -2,264 +2,70 @@ import path from 'node:path'; import type { IProjectRenderMeta } from '../extensions'; import { FileRegistry } from '../files/registry'; -import type { IFileSelector } from '../files/types'; +import { defaultExtensions } from '../languages/extensions'; +import { defaultNameConflictResolvers } from '../languages/resolvers'; +import type { Extensions, NameConflictResolvers } from '../languages/types'; import { NodeRegistry } from '../nodes/registry'; import type { IOutput } from '../output'; -import type { IRenderer } from '../renderer/types'; -import { Analyzer } from '../symbols/analyzer'; +import { Planner } from '../planner/planner'; +import { simpleNameConflictResolver } from '../planner/resolvers'; +import type { NameConflictResolver } from '../planner/types'; +import type { Renderer } from '../renderer'; import { SymbolRegistry } from '../symbols/registry'; -import type { Symbol } from '../symbols/symbol'; -import type { SymbolKind } from '../symbols/types'; -import { canShareName } from './namespace'; import type { IProject } from './types'; -const externalSourceSymbol = '@'; - export class Project implements IProject { - readonly analyzer = new Analyzer(); + readonly files: FileRegistry; + readonly nodes = new NodeRegistry(); + readonly symbols = new SymbolRegistry(); + readonly defaultFileName: string; - readonly files = new FileRegistry(); + readonly defaultNameConflictResolver: NameConflictResolver; + readonly extensions: Extensions; readonly fileName?: (name: string) => string; - readonly nodes = new NodeRegistry(); - readonly renderers: Record = {}; + readonly nameConflictResolvers: NameConflictResolvers; + readonly renderers: ReadonlyArray; readonly root: string; - readonly symbols = new SymbolRegistry(); - constructor({ - defaultFileName, - fileName, - renderers, - root, - }: Pick) { - this.defaultFileName = defaultFileName ?? 'main'; + constructor( + args: Pick< + Partial, + | 'defaultFileName' + | 'defaultNameConflictResolver' + | 'extensions' + | 'fileName' + | 'nameConflictResolvers' + | 'renderers' + > & + Pick, + ) { + const fileName = args.fileName; + this.defaultFileName = args.defaultFileName ?? 'main'; + this.defaultNameConflictResolver = + args.defaultNameConflictResolver ?? simpleNameConflictResolver; + this.extensions = { + ...defaultExtensions, + ...args.extensions, + }; this.fileName = typeof fileName === 'string' ? () => fileName : fileName; - this.renderers = renderers; - this.root = root; + this.files = new FileRegistry(this); + this.nameConflictResolvers = { + ...defaultNameConflictResolvers, + ...args.nameConflictResolvers, + }; + this.renderers = args.renderers ?? []; + this.root = path.resolve(args.root).replace(/[/\\]+$/, ''); } render(meta?: IProjectRenderMeta): ReadonlyArray { - this.prepareFiles(); - return this.renderFiles(meta); - } - - private prepareFiles(): void { - this.assignFiles(); - this.registerFiles(); - this.resolveFinalSymbolNames(); - this.planImports(); - this.planExports(); - } - - /** - * Creates a file for every symbol so all files exist before planning. - */ - private assignFiles(): void { - this.analyzer.analyze(this.nodes.all(), (ctx) => { - const symbol = ctx.root; - const selector = this.symbolToFileSelector(symbol); - const file = this.files.reference(selector); - file.symbols.push(symbol); - symbol.setFile(file); - for (const exportFrom of symbol.exportFrom) { - const selector = [exportFrom]; - this.files.reference(selector); - } - for (const dependency of ctx.symbols) { - if (dependency.external) { - const selector = this.symbolToFileSelector(dependency); - const file = this.files.reference(selector); - dependency.setFile(file); - } - } - }); - } - - private planExports(): void { - const seenByFile = new Map< - number, - Map }> - >(); - const sourceFile = new Map(); - - this.analyzer.analyze(this.nodes.all(), (ctx) => { - const symbol = ctx.root; - const file = ctx.root.file; - if (!file) return; - - for (const exportFrom of symbol.exportFrom) { - const target = this.files.reference([exportFrom]); - if (target.id === file.id) continue; - - let map = seenByFile.get(target.id); - if (!map) { - map = new Map(); - seenByFile.set(target.id, map); - } - - const dep = this.symbols.register({ - exported: true, - external: symbol.external, - importKind: symbol.importKind, - kind: symbol.kind, - meta: symbol.meta, - name: symbol.finalName, - }); - dep.setFile(target); - sourceFile.set(dep.id, file.id); - this.resolveSymbolFinalName(dep); - - let entry = map.get(dep.finalName); - if (!entry) { - entry = { dep, kinds: new Set() }; - map.set(dep.finalName, entry); - } - entry.kinds.add(dep.kind); - } - }); - - for (const [fileId, map] of seenByFile) { - const target = this.files.get(fileId)!; - for (const [, entry] of map) { - const symbol = entry.dep; - target.reexports.push({ - exportedName: symbol.finalName, - from: sourceFile.get(symbol.id)!, - importedName: symbol.name, - isTypeOnly: [...entry.kinds].every( - (kind) => kind === 'type' || kind === 'interface', - ), - kind: symbol.importKind, - symbolId: symbol.id, - }); - } - } - } - - private planImports(): void { - const seenByFile = new Map>(); - - this.analyzer.analyze(this.nodes.all(), (ctx) => { - const file = ctx.root.file; - if (!file) return; - - let seen = seenByFile.get(file.id); - if (!seen) { - seen = new Set(); - seenByFile.set(file.id, seen); - } - - for (const dependency of ctx.symbols) { - if (!dependency.file || dependency.file.id === file.id) continue; - - this.resolveSymbolFinalName(dependency); - const from = dependency.file.id; - const importedName = dependency.name; - const localName = dependency.finalName; - const isTypeOnly = false; // keep as-is for now - const kind = dependency.importKind; - - const key = `${from}|${importedName}|${localName}|${kind}|${isTypeOnly}`; - if (seen.has(key)) continue; - seen.add(key); - - file.imports.push({ - from, - importedName, - isTypeOnly, - kind, - localName, - symbolId: dependency.id, - }); - } - }); - } - - /** - * Registers all files. - */ - private registerFiles(): void { - for (const file of this.files.referenced()) { - const selector = file.selector; - if (!selector) continue; - if (selector[0] === externalSourceSymbol) { - this.files.register({ - external: true, - path: selector[1], - selector, - }); - } else { - const dirs = file.selector.slice(0, -1); - let name = file.selector[file.selector.length - 1]!; - name = this.fileName?.(name) || name; - const extension = '.ts'; - this.files.register({ - extension, - name, - path: path.resolve(this.root, ...dirs, `${name}${extension}`), - selector: file.selector, - }); - } - } - } - - private renderFiles(meta?: IProjectRenderMeta): ReadonlyArray { - const files: Map = new Map(); + new Planner(this).plan(meta); + const files: Array = []; for (const file of this.files.registered()) { - if (file.external || !file.path) continue; - const renderer = file.extension - ? this.renderers[file.extension] - : undefined; - if (!renderer) continue; - files.set(file.id, { - content: renderer.render(file, this, meta), - path: file.path, - }); - } - return Array.from(files.values()); - } - - private resolveSymbolFinalName(symbol: Symbol): void { - const file = symbol.file; - if (symbol._finalName || !file) return; - - let name = symbol.name; - let index = 1; - while (file.reservedNames.has(name)) { - const scopes = file.reservedNames.get(name)!; - let exit = true; - for (const kind of scopes) { - if (!canShareName(symbol.kind, kind)) { - exit = false; - index = index + 1; - name = `${name}${index}`; - break; - } + if (file.finalPath && file.renderer) { + const content = file.renderer.render({ file, meta, project: this }); + files.push({ content, path: file.finalPath }); } - if (exit) break; - } - // TODO: ensure valid names - symbol.setFinalName(name); - const scopes = file.reservedNames.get(name) ?? new Set(); - scopes.add(symbol.kind); - file.reservedNames.set(name, scopes); - } - - private resolveFinalSymbolNames(): void { - for (const file of this.files.registered()) { - for (const symbol of file.symbols) { - this.resolveSymbolFinalName(symbol); - } - } - } - - private symbolToFileSelector(symbol: Symbol): IFileSelector { - if (symbol.external) { - return [externalSourceSymbol, symbol.external]; - } - const filePath = symbol.getFilePath?.(symbol); - if (filePath) { - return filePath.split('/'); } - return [this.defaultFileName]; + return files; } } diff --git a/packages/codegen-core/src/project/types.d.ts b/packages/codegen-core/src/project/types.d.ts index 1bd90a1b8..016930def 100644 --- a/packages/codegen-core/src/project/types.d.ts +++ b/packages/codegen-core/src/project/types.d.ts @@ -1,8 +1,10 @@ import type { IProjectRenderMeta } from '../extensions'; import type { IFileRegistry } from '../files/types'; +import type { Extensions, NameConflictResolvers } from '../languages/types'; import type { INodeRegistry } from '../nodes/types'; import type { IOutput } from '../output'; -import type { IRenderer } from '../renderer/types'; +import type { NameConflictResolver } from '../planner/types'; +import type { Renderer } from '../renderer'; import type { ISymbolRegistry } from '../symbols/types'; /** @@ -16,9 +18,13 @@ export interface IProject { * * @default 'main' */ - readonly defaultFileName?: string; + readonly defaultFileName: string; + /** Default name conflict resolver used when a file has no specific resolver. */ + readonly defaultNameConflictResolver: NameConflictResolver; + /** Maps language to array of extensions. First element is used by default. */ + readonly extensions: Extensions; /** - * Optional function to transform file names before they are used. + * Function to transform file names before they are used. * * @param name The original file name. * @returns The transformed file name. @@ -26,6 +32,8 @@ export interface IProject { readonly fileName?: (name: string) => string; /** Centralized file registry for the project. */ readonly files: IFileRegistry; + /** Map of language-specific name conflict resolvers for files in the project. */ + readonly nameConflictResolvers: NameConflictResolvers; /** Centralized node registry for the project. */ readonly nodes: INodeRegistry; /** @@ -38,15 +46,12 @@ export interface IProject { */ render(meta?: IProjectRenderMeta): ReadonlyArray; /** - * Map of available renderers by file extension. + * List of available renderers. * * @example - * { - * ".ts": tsRenderer, - * ".js": jsRenderer, - * } + * [new TypeScriptRenderer()] */ - readonly renderers: Record; + readonly renderers: ReadonlyArray; /** The absolute path to the root folder of the project. */ readonly root: string; /** Centralized symbol registry for the project. */ diff --git a/packages/codegen-core/src/refs/refs.ts b/packages/codegen-core/src/refs/refs.ts new file mode 100644 index 000000000..c5797bc92 --- /dev/null +++ b/packages/codegen-core/src/refs/refs.ts @@ -0,0 +1,76 @@ +import type { FromRefs, Ref, Refs } from './types'; + +/** + * Wraps a single value in a Ref object. + * + * @example + * ```ts + * const r = ref(123); // { '~ref': 123 } + * console.log(r['~ref']); // 123 + * ``` + */ +export const ref = (value: T): Ref => ({ '~ref': value }); + +/** + * Converts a plain object to an object of Refs (deep, per property). + * + * @example + * ```ts + * const obj = { a: 1, b: "x" }; + * const refs = refs(obj); // { a: { '~ref': 1 }, b: { '~ref': "x" } } + * ``` + */ +export const refs = >(obj: T): Refs => { + const result = {} as Refs; + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + result[key] = ref(obj[key]); + } + } + return result; +}; + +/** + * Unwraps a single Ref object to its value. + * + * @example + * ```ts + * const r = { '~ref': 42 }; + * const n = fromRef(r); // 42 + * console.log(n); // 42 + * ``` + */ +export const fromRef = | undefined>( + ref: T, +): T extends Ref ? U : undefined => + ref?.['~ref'] as T extends Ref ? U : undefined; + +/** + * Converts an object of Refs back to a plain object (unwraps all refs). + * + * @example + * ```ts + * const refs = { a: { '~ref': 1 }, b: { '~ref': "x" } }; + * const plain = fromRefs(refs); // { a: 1, b: "x" } + * ``` + */ +export const fromRefs = >>( + obj: T, +): FromRefs => { + const result = {} as FromRefs; + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + result[key] = fromRef(obj[key]!) as (typeof result)[typeof key]; + } + } + return result; +}; + +/** + * Checks whether a value is a Ref object. + * + * @param value Value to check + * @returns True if the value is a Ref object. + */ +export const isRef = (value: unknown): value is Ref => + typeof value === 'object' && value !== null && '~ref' in value; diff --git a/packages/codegen-core/src/refs/types.d.ts b/packages/codegen-core/src/refs/types.d.ts new file mode 100644 index 000000000..f5b76fbeb --- /dev/null +++ b/packages/codegen-core/src/refs/types.d.ts @@ -0,0 +1,50 @@ +/** + * Ref wrapper which ensures a stable reference for a value. + * + * @example + * ```ts + * type NumRef = Ref; // { '~ref': number } + * const num: NumRef = { '~ref': 42 }; + * console.log(num['~ref']); // 42 + * ``` + */ +export type Ref = { '~ref': T }; + +/** + * Maps every property of `T` to a `Ref` of that property. + * + * @example + * ```ts + * type Foo = { a: number; b: string }; + * type Refs = Refs; // { a: Ref; b: Ref } + * const refs: Refs = { a: { '~ref': 1 }, b: { '~ref': 'x' } }; + * console.log(refs.a['~ref'], refs.b['~ref']); // 1 'x' + * ``` + */ +export type Refs = { + [K in keyof T]: Ref; +}; + +/** + * Unwraps a Ref to its value type. + * + * @example + * ```ts + * type N = FromRef<{ '~ref': number }>; // number + * ``` + */ +export type FromRef = T extends Ref ? V : T; + +/** + * Maps every property of a Ref-wrapped object back to its plain value. + * + * @example + * ```ts + * type Foo = { a: number; b: string }; + * type Refs = Refs; // { a: Ref; b: Ref } + * type Foo2 = FromRefs; // { a: number; b: string } + * ``` + */ +export type FromRefs = { + [K in keyof T]: T[K] extends Ref ? V : T[K]; +}; diff --git a/packages/codegen-core/src/renderer.d.ts b/packages/codegen-core/src/renderer.d.ts new file mode 100644 index 000000000..00a704a85 --- /dev/null +++ b/packages/codegen-core/src/renderer.d.ts @@ -0,0 +1,25 @@ +import type { IProjectRenderMeta } from './extensions'; +import type { File } from './files/file'; +import type { IProject } from './project/types'; + +export interface RenderContext { + /** + * The current file. + */ + file: File; + /** + * Arbitrary metadata. + */ + meta?: IProjectRenderMeta; + /** + * The project the file belongs to. + */ + project: IProject; +} + +export interface Renderer { + /** Renders the given file. */ + render(ctx: RenderContext): string; + /** Returns whether this renderer can render the given file. */ + supports(ctx: RenderContext): boolean; +} diff --git a/packages/codegen-core/src/renderer/types.d.ts b/packages/codegen-core/src/renderer/types.d.ts deleted file mode 100644 index 6c1aa4d7a..000000000 --- a/packages/codegen-core/src/renderer/types.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { IProjectRenderMeta } from '../extensions'; -import type { IFileOut } from '../files/types'; -import type { IProject } from '../project/types'; - -export interface IRenderer { - /** - * Renders the given file. - * - * @param file The file to render. - * @param project The project the file belongs to. - * @param meta Arbitrary metadata. - * @returns Rendered content. - */ - render(file: IFileOut, project: IProject, meta?: IProjectRenderMeta): string; - /** - * Renders content with replaced symbols. - * - * @param content Content to render. - * @param file The file to render. - * @param project The parent project the file belongs to. - * @returns Rendered content. - */ - renderFile( - content: string, - file: IFile, - project: IProject, - meta?: IProjectRenderMeta, - ): string; - /** - * Returns printable data containing symbols and exports. - * - * @param file The file to render. - * @param project The parent project the file belongs to. - * @param meta Arbitrary metadata. - * @returns Printable string containing symbols and exports. - */ - renderSymbols( - file: IFileOut, - project: IProject, - meta?: IProjectRenderMeta, - ): string; -} diff --git a/packages/codegen-core/src/renderer/utils.ts b/packages/codegen-core/src/renderer/utils.ts deleted file mode 100644 index 608c07f9f..000000000 --- a/packages/codegen-core/src/renderer/utils.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Wraps an ID in namespace to avoid collisions when replacing it. - * - * @param symbolId Stringified symbol ID to use. - * @returns The wrapped placeholder ID. - */ -export const wrapId = (symbolId: string): string => `_heyapi_${symbolId}_`; - -/** - * Unwraps an ID from namespace. - * - * @param wrappedId The wrapped placeholder ID. - * @returns Stringified ID to use. - */ -const unwrapId = (wrappedId: string): string => - wrappedId.slice('_heyapi_'.length, -1); - -/** - * Returns a RegExp instance to match ID placeholders. - * - * @returns RegExp instance to match ID placeholders. - */ -const createPlaceholderRegExp = (): RegExp => new RegExp(wrapId('\\d+'), 'g'); - -/** - * - * @param source The source string to replace. - * @param replacerFn Accepts a symbol ID, returns resolved symbol name. - * @returns The replaced source string. - */ -export const renderIds = ( - source: string, - replacerFn: (symbolId: number) => string | undefined, -): string => - source.replace(createPlaceholderRegExp(), (match) => { - const symbolId = Number.parseInt(unwrapId(match), 10); - return replacerFn(symbolId) || match; - }); diff --git a/packages/codegen-core/src/symbols/analyzer.ts b/packages/codegen-core/src/symbols/analyzer.ts deleted file mode 100644 index 5ce93f085..000000000 --- a/packages/codegen-core/src/symbols/analyzer.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { debug } from '../debug'; -import type { INode } from '../nodes/node'; -import type { Symbol } from './symbol'; - -export interface IAnalysisContext { - /** Register a dependency on another symbol. */ - addDependency(symbol: Symbol): void; - /** Local names declared by nodes within the analyzed symbol. */ - localNames: Set; - /** Root symbol for the current top‑level analysis pass. */ - root: Symbol; - /** Collected symbol references discovered during analysis. */ - symbols: Set; -} - -export class AnalysisContext implements IAnalysisContext { - localNames: Set = new Set(); - root: Symbol; - symbols: Set = new Set(); - - constructor(symbol: Symbol) { - this.root = symbol; - } - - addDependency(symbol: Symbol): void { - if (this.root !== symbol) { - this.symbols.add(symbol); - } - } -} - -export class Analyzer { - private nodeCache = new WeakMap(); - - analyzeNode(node: INode): AnalysisContext { - const cached = this.nodeCache.get(node); - if (cached) return cached; - - if (!node.symbol) { - const message = `Analyzer: cannot analyze node "${node}" without a defining symbol.`; - debug(message, 'analyzer'); - throw new Error(message); - } - - const ctx = new AnalysisContext(node.symbol); - node.analyze(ctx); - - this.nodeCache.set(node, ctx); - return ctx; - } - - analyze( - nodes: ReadonlyArray, - callback?: (ctx: AnalysisContext) => void, - ): void { - for (const node of nodes) { - const ctx = this.analyzeNode(node); - callback?.(ctx); - } - } -} diff --git a/packages/codegen-core/src/symbols/registry.ts b/packages/codegen-core/src/symbols/registry.ts index 59eed9701..d7954b414 100644 --- a/packages/codegen-core/src/symbols/registry.ts +++ b/packages/codegen-core/src/symbols/registry.ts @@ -9,45 +9,47 @@ type SymbolId = number; export class SymbolRegistry implements ISymbolRegistry { private _id: SymbolId = 0; - private indices: Map>> = + private _indices: Map>> = new Map(); - private nodes: Map = new Map(); - private queryCache: Map> = new Map(); - private queryCacheDependencies: Map> = + /** + * @deprecated + */ + private _nodes: Map = new Map(); + private _queryCache: Map> = new Map(); + private _queryCacheDependencies: Map> = new Map(); - private registerOrder: Set = new Set(); - private stubCache: Map = new Map(); - private stubs: Set = new Set(); - private values: Map = new Map(); + private _registered: Set = new Set(); + private _stubs: Set = new Set(); + private _stubCache: Map = new Map(); + private _values: Map = new Map(); get(identifier: ISymbolIdentifier): Symbol | undefined { return typeof identifier === 'number' - ? this.values.get(identifier) + ? this._values.get(identifier) : this.query(identifier)[0]; } + /** + * @deprecated + */ getValue(symbolId: SymbolId): unknown { - return this.nodes.get(symbolId); + return this._nodes.get(symbolId); } - hasValue(symbolId: SymbolId): boolean { - return this.nodes.has(symbolId); + isRegistered(identifier: ISymbolIdentifier): boolean { + const symbol = this.get(identifier); + return symbol ? this._registered.has(symbol.id) : false; } - get id(): SymbolId { + get nextId(): SymbolId { return this._id++; } - isRegistered(identifier: ISymbolIdentifier): boolean { - const symbol = this.get(identifier); - return symbol ? this.registerOrder.has(symbol.id) : false; - } - query(filter: ISymbolMeta): ReadonlyArray { const cacheKey = this.buildCacheKey(filter); - const cachedIds = this.queryCache.get(cacheKey); + const cachedIds = this._queryCache.get(cacheKey); if (cachedIds) { - return cachedIds.map((symbolId) => this.values.get(symbolId)!); + return cachedIds.map((symbolId) => this._values.get(symbolId)!); } const sets: Array> = []; const indexKeySpace = this.buildIndexKeySpace(filter); @@ -55,7 +57,7 @@ export class SymbolRegistry implements ISymbolRegistry { let missed = false; for (const indexEntry of indexKeySpace) { cacheDependencies.add(this.serializeIndexEntry(indexEntry)); - const values = this.indices.get(indexEntry[0]); + const values = this._indices.get(indexEntry[0]); if (!values) { missed = true; break; @@ -68,8 +70,8 @@ export class SymbolRegistry implements ISymbolRegistry { sets.push(set); } if (missed || !sets.length) { - this.queryCacheDependencies.set(cacheKey, cacheDependencies); - this.queryCache.set(cacheKey, []); + this._queryCacheDependencies.set(cacheKey, cacheDependencies); + this._queryCache.set(cacheKey, []); return []; } let result = new Set(sets[0]); @@ -77,9 +79,9 @@ export class SymbolRegistry implements ISymbolRegistry { result = new Set([...result].filter((symbolId) => set.has(symbolId))); } const resultIds = [...result]; - this.queryCacheDependencies.set(cacheKey, cacheDependencies); - this.queryCache.set(cacheKey, resultIds); - return resultIds.map((symbolId) => this.values.get(symbolId)!); + this._queryCacheDependencies.set(cacheKey, cacheDependencies); + this._queryCache.set(cacheKey, resultIds); + return resultIds.map((symbolId) => this._values.get(symbolId)!); } reference(meta: ISymbolMeta): Symbol { @@ -87,22 +89,22 @@ export class SymbolRegistry implements ISymbolRegistry { if (registered) return registered; const cacheKey = this.buildCacheKey(meta); - const cachedId = this.stubCache.get(cacheKey); - if (cachedId !== undefined) return this.values.get(cachedId)!; + const cachedId = this._stubCache.get(cacheKey); + if (cachedId !== undefined) return this._values.get(cachedId)!; - const stub = new Symbol({ meta, name: '' }, this.id); + const stub = new Symbol({ meta, name: '' }, this.nextId); - this.values.set(stub.id, stub); - this.stubs.add(stub.id); - this.stubCache.set(cacheKey, stub.id); + this._values.set(stub.id, stub); + this._stubs.add(stub.id); + this._stubCache.set(cacheKey, stub.id); return stub; } register(symbol: ISymbolIn): Symbol { - const result = new Symbol(symbol, this.id); + const result = new Symbol(symbol, this.nextId); - this.values.set(result.id, result); - this.registerOrder.add(result.id); + this._values.set(result.id, result); + this._registered.add(result.id); if (result.meta) { const indexKeySpace = this.buildIndexKeySpace(result.meta); @@ -110,12 +112,13 @@ export class SymbolRegistry implements ISymbolRegistry { this.invalidateCache(indexKeySpace); this.replaceStubs(result, indexKeySpace); } + return result; } *registered(): IterableIterator { - for (const id of this.registerOrder.values()) { - yield this.values.get(id)!; + for (const id of this._registered.values()) { + yield this._values.get(id)!; } } @@ -123,7 +126,7 @@ export class SymbolRegistry implements ISymbolRegistry { * @deprecated */ setValue(symbolId: SymbolId, value: unknown): Map { - return this.nodes.set(symbolId, value); + return this._nodes.set(symbolId, value); } private buildCacheKey(filter: ISymbolMeta): QueryCacheKey { @@ -149,8 +152,8 @@ export class SymbolRegistry implements ISymbolRegistry { private indexSymbol(symbolId: SymbolId, indexKeySpace: IndexKeySpace): void { for (const [key, value] of indexKeySpace) { - if (!this.indices.has(key)) this.indices.set(key, new Map()); - const values = this.indices.get(key)!; + if (!this._indices.has(key)) this._indices.set(key, new Map()); + const values = this._indices.get(key)!; const set = values.get(value) ?? new Set(); set.add(symbolId); values.set(value, set); @@ -164,11 +167,11 @@ export class SymbolRegistry implements ISymbolRegistry { for (const [ cacheKey, cacheDependencies, - ] of this.queryCacheDependencies.entries()) { + ] of this._queryCacheDependencies.entries()) { for (const key of changed) { if (cacheDependencies.has(key)) { - this.queryCacheDependencies.delete(cacheKey); - this.queryCache.delete(cacheKey); + this._queryCacheDependencies.delete(cacheKey); + this._queryCache.delete(cacheKey); break; } } @@ -186,15 +189,15 @@ export class SymbolRegistry implements ISymbolRegistry { } private replaceStubs(symbol: Symbol, indexKeySpace: IndexKeySpace): void { - for (const stubId of this.stubs.values()) { - const stub = this.values.get(stubId); + for (const stubId of this._stubs.values()) { + const stub = this._values.get(stubId); if ( stub?.meta && this.isSubset(this.buildIndexKeySpace(stub.meta), indexKeySpace) ) { const cacheKey = this.buildCacheKey(stub.meta); - this.stubCache.delete(cacheKey); - this.stubs.delete(stubId); + this._stubCache.delete(cacheKey); + this._stubs.delete(stubId); stub.setCanonical(symbol); } } diff --git a/packages/codegen-core/src/symbols/symbol.ts b/packages/codegen-core/src/symbols/symbol.ts index c9e09106f..ed285d87c 100644 --- a/packages/codegen-core/src/symbols/symbol.ts +++ b/packages/codegen-core/src/symbols/symbol.ts @@ -1,11 +1,14 @@ +import { symbolBrand } from '../brands'; import { debug } from '../debug'; import type { ISymbolMeta } from '../extensions'; -import type { IFileOut } from '../files/types'; +import type { File } from '../files/file'; import type { INode } from '../nodes/node'; -import { wrapId } from '../renderer/utils'; -import type { ISymbolIn, SymbolImportKind, SymbolKind } from './types'; - -export const symbolBrand = globalThis.Symbol('symbol'); +import type { + BindingKind, + ISymbolIn, + SymbolKind, + SymbolNameSanitizer, +} from './types'; export class Symbol { /** @@ -14,16 +17,8 @@ export class Symbol { * Stubs created during DSL construction may later be associated * with a fully registered symbol. Once set, all property lookups * should defer to the canonical symbol. - * - * @private */ private _canonical?: Symbol; - /** - * Private set of direct symbol dependencies. - * - * @private - */ - private readonly _dependencies = new Set(); /** * True if this symbol is exported from its defining file. * @@ -46,13 +41,13 @@ export class Symbol { /** * The file this symbol is ultimately emitted into. * - * @private + * Only top-level symbols have an assigned file. */ - private _file?: IFileOut; + private _file?: File; /** * The alias-resolved, conflict-free emitted name. */ - _finalName?: string; + private _finalName?: string; /** * Custom strategy to determine file output path. * @@ -64,7 +59,7 @@ export class Symbol { * * @default 'named' */ - private _importKind: SymbolImportKind; + private _importKind: BindingKind; /** * Kind of symbol (class, type, alias, etc.). * @@ -84,25 +79,20 @@ export class Symbol { */ private _name: string; /** - * Node that defines this symbol. + * Optional function to sanitize the symbol name. * - * @private + * @default undefined + */ + private _nameSanitizer?: SymbolNameSanitizer; + /** + * Node that defines this symbol. */ private _node?: INode; /** Brand used for identifying symbols. */ - readonly '~brand': symbol = symbolBrand; - /** - * Globally unique, stable symbol ID. - */ + readonly '~brand' = symbolBrand; + /** Globally unique, stable symbol ID. */ readonly id: number; - /** - * Placeholder name for the symbol to be replaced later with the final value. - * - * @deprecated - * @example "_heyapi_31_" - */ - readonly placeholder: string; constructor(input: ISymbolIn, id: number) { this._exported = input.exported ?? false; @@ -114,7 +104,6 @@ export class Symbol { this._kind = input.kind ?? 'var'; this._meta = input.meta; this._name = input.name; - this.placeholder = input.placeholder || wrapId(String(id)); } /** @@ -128,13 +117,6 @@ export class Symbol { return this._canonical ?? this; } - /** - * Read-only access to dependencies. - */ - get dependencies(): ReadonlySet { - return this.canonical._dependencies; - } - /** * Indicates whether this symbol is exported from its defining file. */ @@ -158,8 +140,10 @@ export class Symbol { /** * Read‑only accessor for the assigned output file. + * + * Only top-level symbols have an assigned file. */ - get file(): IFileOut | undefined { + get file(): File | undefined { return this.canonical._file; } @@ -167,11 +151,12 @@ export class Symbol { * Read‑only accessor for the resolved final emitted name. */ get finalName(): string { - return ( - this.canonical._finalName || - this.canonical.placeholder || - this.canonical.name - ); + if (!this.canonical._finalName) { + const message = `Symbol finalName has not been resolved yet for ${this.canonical.toString()}`; + debug(message, 'symbol'); + throw new Error(message); + } + return this.canonical._finalName; } /** @@ -184,10 +169,17 @@ export class Symbol { /** * How this symbol should be imported (named/default/namespace). */ - get importKind(): SymbolImportKind { + get importKind(): BindingKind { return this.canonical._importKind; } + /** + * Indicates whether this is a canonical symbol (not a stub). + */ + get isCanonical(): boolean { + return !this._canonical || this._canonical === this; + } + /** * The symbol's kind (class, type, alias, variable, etc.). */ @@ -210,18 +202,17 @@ export class Symbol { } /** - * Read‑only accessor for the defining node. + * Optional function to sanitize the symbol name. */ - get node(): INode | undefined { - return this.canonical._node; + get nameSanitizer(): SymbolNameSanitizer | undefined { + return this.canonical._nameSanitizer; } /** - * Add a direct dependency on another symbol. + * Read‑only accessor for the defining node. */ - addDependency(symbol: Symbol): void { - this.assertCanonical(); - if (symbol !== this) this._dependencies.add(symbol); + get node(): INode | undefined { + return this.canonical._node; } /** @@ -261,10 +252,12 @@ export class Symbol { * * This may only be set once. */ - setFile(file: IFileOut): void { + setFile(file: File): void { this.assertCanonical(); if (this._file && this._file !== file) { - throw new Error('Symbol is already assigned to a different file.'); + const message = `Symbol ${this.canonical.toString()} is already assigned to a different file.`; + debug(message, 'symbol'); + throw new Error(message); } this._file = file; } @@ -277,7 +270,9 @@ export class Symbol { setFinalName(name: string): void { this.assertCanonical(); if (this._finalName && this._finalName !== name) { - throw new Error('Symbol finalName has already been resolved.'); + const message = `Symbol finalName has already been resolved for ${this.canonical.toString()}.`; + debug(message, 'symbol'); + throw new Error(message); } this._finalName = name; } @@ -287,7 +282,7 @@ export class Symbol { * * @param kind — The import strategy (named/default/namespace). */ - setImportKind(kind: SymbolImportKind): void { + setImportKind(kind: BindingKind): void { this.assertCanonical(); this._importKind = kind; } @@ -312,6 +307,16 @@ export class Symbol { this._name = name; } + /** + * Sets a custom function to sanitize the symbol's name. + * + * @param fn — The name sanitizer function to apply. + */ + setNameSanitizer(fn: SymbolNameSanitizer): void { + this.assertCanonical(); + this._nameSanitizer = fn; + } + /** * Binds the node that defines this symbol. * @@ -320,7 +325,9 @@ export class Symbol { setNode(node: INode): void { this.assertCanonical(); if (this._node && this._node !== node) { - throw new Error('Symbol is already bound to a different node.'); + const message = `Symbol ${this.canonical.toString()} is already bound to a different node.`; + debug(message, 'symbol'); + throw new Error(message); } this._node = node; node.symbol = this; @@ -342,7 +349,6 @@ export class Symbol { * to non‑canonical instances. * * @throws {Error} If the symbol is a stub and is being mutated. - * @private */ private assertCanonical(): void { if (this._canonical && this._canonical !== this) { @@ -352,9 +358,3 @@ export class Symbol { } } } - -export function isSymbol(value: unknown): value is Symbol { - if (!value || typeof value !== 'object' || Array.isArray(value)) return false; - const obj = value as { '~brand'?: unknown }; - return obj['~brand'] === symbolBrand && Object.hasOwn(obj, '~brand'); -} diff --git a/packages/codegen-core/src/symbols/types.d.ts b/packages/codegen-core/src/symbols/types.d.ts index 1c944d4a2..348379e99 100644 --- a/packages/codegen-core/src/symbols/types.d.ts +++ b/packages/codegen-core/src/symbols/types.d.ts @@ -1,12 +1,11 @@ import type { ISymbolMeta } from '../extensions'; import type { Symbol } from './symbol'; -export type ISymbolIdentifier = number | ISymbolMeta; +export type BindingKind = 'default' | 'named' | 'namespace'; -export type SymbolImportKind = 'namespace' | 'default' | 'named'; +export type ISymbolIdentifier = number | ISymbolMeta; export type SymbolKind = - | 'alias' // export { a as a2 } from 'a'; | 'class' | 'enum' | 'function' @@ -15,6 +14,8 @@ export type SymbolKind = | 'type' | 'var'; +export type SymbolNameSanitizer = (name: string) => string; + export type ISymbolIn = { /** * Array of file names (without extensions) from which this symbol is re-exported. @@ -44,7 +45,7 @@ export type ISymbolIn = { /** * Kind of import if this symbol represents an import. */ - importKind?: SymbolImportKind; + importKind?: BindingKind; /** * Kind of symbol. */ @@ -63,13 +64,6 @@ export type ISymbolIn = { * @example "UserModel" */ name: string; - /** - * Placeholder name for the symbol to be replaced later with the final value. - * - * @deprecated - * @example "_heyapi_31_" - */ - readonly placeholder?: string; }; export interface ISymbolRegistry { @@ -88,25 +82,18 @@ export interface ISymbolRegistry { */ getValue(symbolId: number): unknown; /** - * Checks if the registry has a value associated with a symbol ID. + * Returns whether a symbol is registered in the registry. * - * @param symbolId Symbol ID. - * @returns True if the registry has a value for symbol ID, false otherwise. + * @param identifier Symbol identifier to check. + * @returns True if the symbol is registered, false otherwise. */ - hasValue(symbolId: number): boolean; + isRegistered(identifier: ISymbolIdentifier): boolean; /** * Returns the current symbol ID and increments it. * * @returns Symbol ID before being incremented. */ - readonly id: number; - /** - * Returns whether a symbol is registered in the registry. - * - * @param identifier Symbol identifier to check. - * @returns True if the symbol is registered, false otherwise. - */ - isRegistered(identifier: ISymbolIdentifier): boolean; + readonly nextId: number; /** * Queries symbols by metadata filter. * diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts index 00338555a..62bdb7f98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type Foo = { foo: string; }; @@ -13,3 +9,7 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/index.ts index b43a5238d..388b1ed17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts index 4585c357e..067709e9c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type Foo = { foo: string; [key: string]: unknown | string; @@ -21,3 +17,7 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/index.ts index c352c1047..de1daea43 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponse, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts index 01dd71cbd..dc6943369 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type PostFooData = { body: string; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts index d3ae11f34..75974d016 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index 0a81f8f37..9a6366211 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts index 42fbe692f..add74c6d5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts index 6e92ca302..cc2f95d07 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts index 4805d46f9..c5610e015 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts index c4db83602..7352108dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index d29c33f61..cde22290f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts index be7cbd0e5..16ea57219 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts index bbcdebda6..658609c2a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts index 57e45fac7..e8450c407 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts index 3d87fcc64..538bc4b3c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/index.ts index b43a5238d..50e8edca3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _110, Arrays, ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts index 6ec248809..9452f2b9e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -21,3 +17,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/index.ts index b43a5238d..542fd104b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts index ff23db4fc..2f6988dd6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type Foo = string; export type PostFooData = { @@ -19,3 +15,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/index.ts index b43a5238d..0460b6879 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, ExternalAllOfSchema, ExternalAnyOfSchema, ExternalArraySchema, ExternalDoubleNestedNumeric, ExternalDoubleNestedProp, ExternalMixedProperties, ExternalNestedNumericObjectA, ExternalNestedNumericObjectB, ExternalNestedObjectA, ExternalNestedObjectB, ExternalSchemaA, ExternalSchemaB, ExternalSchemaC, ExternalSchemaExternalProp, ExternalSchemaExternalPropAlias, ExternalSchemaPathA, ExternalSchemaPathB, ExternalSchemaPropertyA, ExternalSchemaPropertyB, ExternalSchemaPropertyC, ExternalSchemaPropertyD, ExternalShared1, ExternalSharedDeep, ExternalSharedExternalNested, ExternalSharedExternalNestedNumeric, ExternalSharedExternalSharedModel, ExternalSharedExternalSharedModelWithUuid, ExternalSharedId, ExternalSharedName, ExternalUnionSchema, GetExternalArrayData, GetExternalArrayResponse, GetExternalArrayResponses, GetExternalMixedData, GetExternalMixedResponse, GetExternalMixedResponses, GetExternalModelData, GetExternalModelError, GetExternalModelErrors, GetExternalModelResponse, GetExternalModelResponses, GetExternalNestedData, GetExternalNestedResponse, GetExternalNestedResponses, GetExternalPropertiesByIdData, GetExternalPropertiesByIdResponse, GetExternalPropertiesByIdResponses, GetExternalUnionData, GetExternalUnionResponses, GetExternalUuidData, GetExternalUuidResponse, GetExternalUuidResponses, PostExternalArrayData, PostExternalArrayResponse, PostExternalArrayResponses, PostExternalMixedData, PostExternalMixedResponse, PostExternalMixedResponses, PostExternalModelData, PostExternalModelErrors, PostExternalModelResponse, PostExternalModelResponses, PostExternalNestedData, PostExternalNestedResponse, PostExternalNestedResponses, PostExternalUnionData, PostExternalUnionResponses, PutExternalUuidData, PutExternalUuidResponse, PutExternalUuidResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts index 42a5c5e6c..6dc77acc2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type ExternalSchemaA = ExternalSharedExternalSharedModel; export type ExternalSchemaB = ExternalSharedExternalSharedModel; @@ -409,3 +405,7 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/index.ts index c352c1047..8dc7240b1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postV1Foo } from './sdk.gen'; +export type { ClientOptions, Foo, PostV1FooData, PostV1FooResponse, PostV1FooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts index 997ebc24b..7b434343a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type Foo = { status?: number; }; @@ -26,3 +22,7 @@ export type PostV1FooResponses = { }; export type PostV1FooResponse = PostV1FooResponses[keyof PostV1FooResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts index 8d12fcbb0..7f69870ff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,720 +9,454 @@ import type { CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public serviceWithEmptyTag(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public fooWow(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); - } + public serviceWithEmptyTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); } /** * Body should not be unknown * * Body should not be unknown */ - public postApiVbyApiVersionBody(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/body', - ...options - }); - } + public postApiVbyApiVersionBody(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/body', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); - } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions/', - ...options - }); - } + public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions/', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public callWithParameters(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); - } - - public callWithWeirdParameterNames(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); - } + public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); } + + public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callToTestOrderOfParams(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); - } + public callWithDefaultParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName2(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName3(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName4(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); - } + public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); - } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } + public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } - - public callWithResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithDuplicateResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); - } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } + + public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); - } + public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); - } + public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); - } + public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); - } + public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); - } + public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public serviceWithEmptyTag(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).serviceWithEmptyTag(opts) : undefined; - }); - } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; - }); - } - - public fooWow(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; - }); - } + public serviceWithEmptyTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).serviceWithEmptyTag(opts) : undefined; }); } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } + + public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } /** * Body should not be unknown * * Body should not be unknown */ - public postApiVbyApiVersionBody(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).postApiVbyApiVersionBody(opts) : undefined; - }); - } + public postApiVbyApiVersionBody(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).postApiVbyApiVersionBody(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; - }); - } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; - }); - } + public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public callWithParameters(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; - }); - } + public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } - public callWithWeirdParameterNames(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; - }); - } + public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; - }); - } + public callWithDefaultParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; - }); - } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } - public callToTestOrderOfParams(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; - }); - } + public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; - }); - } - - public duplicateName2(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; - }); - } - - public duplicateName3(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; - }); - } - - public duplicateName4(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; - }); - } + public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } + + public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } + + public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } + + public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; - }); - } + public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } - - public callWithResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; - }); - } - - public callWithDuplicateResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; - }); - } - - public callWithResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + + public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } + + public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } + + public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; - }); - } + public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(TypesServiceRequests).types(opts) : undefined; - }); - } + public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; - }); - } + public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; - }); - } + public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; - }); - } + public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts index 51d36d352..4972827ea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -249,177 +249,75 @@ export const postApiVbyApiVersionBodyRequest = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? serviceWithEmptyTagRequest(opts) : undefined; -}); +export const serviceWithEmptyTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? serviceWithEmptyTagRequest(opts) : undefined; }); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; -}); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? fooWowRequest(opts) : undefined; -}); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDescriptionsRequest(opts) : undefined; -}); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithParametersRequest(opts) : undefined; -}); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; -}); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); -export const callWithDefaultParametersResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultParametersRequest(opts) : undefined; -}); +export const callWithDefaultParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; -}); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callToTestOrderOfParamsRequest(opts) : undefined; -}); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateNameRequest(opts) : undefined; -}); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName2Request(opts) : undefined; -}); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName3Request(opts) : undefined; -}); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName4Request(opts) : undefined; -}); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithNoContentResponseRequest(opts) : undefined; -}); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; -}); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyARequest(opts) : undefined; -}); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyBRequest(opts) : undefined; -}); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseRequest(opts) : undefined; -}); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDuplicateResponsesRequest(opts) : undefined; -}); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponsesRequest(opts) : undefined; -}); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? collectionFormatRequest(opts) : undefined; -}); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? typesRequest(opts) : undefined; -}); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? complexTypesRequest(opts) : undefined; -}); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResultFromHeaderRequest(opts) : undefined; -}); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? testErrorCodeRequest(opts) : undefined; -}); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; -}); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postApiVbyApiVersionBodyRequest(opts) : undefined; -}); +export const postApiVbyApiVersionBodyResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionBodyRequest(opts) : undefined; }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts index c352c1047..bbab0ca10 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, NestedSdkWithInstance, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 42a9481df..88a1b02c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,9 +23,23 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Domains extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } +} + +export class Providers extends HeyApiClient { + domains = new Domains({ client: this.client }); +} + +export class Business extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + + providers = new Providers({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +55,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Domains extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); - } - - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); - } -} - -export class Providers extends HeyApiClient { - domains = new Domains({ client: this.client }); -} - -export class Business extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); - } - - providers = new Providers({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class NestedSdkWithInstance extends HeyApiClient { @@ -74,18 +64,11 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - NestedSdkWithInstance.__registry.set(this, args?.key); - } + }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } - public putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); - } + public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations', ...options }); - } + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 3f503a59d..3c9d90569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts index c352c1047..19b0bf7f4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, Locations, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index 8c055a5e4..bc2324ac0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,17 +19,11 @@ export type Options(options?: Options) { - return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } - public static putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); - } + public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } } export class Providers { @@ -37,17 +31,13 @@ export class Providers { } export class Business { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } static providers = Providers; } export class Locations { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 3f503a59d..3c9d90569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/index.ts index c352c1047..384678da6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Bar, Foo, type Options, Sdk } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 09d2b380f..5196fa3c5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,9 +23,21 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Bar extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } +} + +export class Foo extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + + bar = new Bar({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +53,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Bar extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); - } -} - -export class Foo extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo', ...options }); - } - - bar = new Bar({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class Sdk extends HeyApiClient { @@ -74,18 +62,11 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - Sdk.__registry.set(this, args?.key); - } + }) { super(args); Sdk.__registry.set(this, args?.key); } - public getFoo(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo', ...options }); - } + public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } - public getFooBar(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); - } + public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index b443e6ac2..c73c5bad5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,7 +4,6 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -24,7 +23,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index b8aa017cd..04e4f45ee 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index db455df67..37f15d4e5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,7 +2,6 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -22,7 +21,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index b8aa017cd..04e4f45ee 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts index b43a5238d..50ec04fec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Baz, ClientOptions, PostFooReadData, PostFooReadResponse, PostFooReadResponses, QuxAllRead, ReadableBarRead, ReadableCorge, ReadableFooRead, ReadableQuux, WritableBarRead, WritableCorge, WritableFooRead, WritableQuux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index db3956e79..a7f908ad2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type Baz = { baz?: string; }; @@ -59,3 +55,7 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts index b43a5238d..6544de7b4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, Baz, ClientOptions, Corge, FooRead, PostFooReadData, PostFooReadResponse, PostFooReadResponses, Quux, QuxAllRead } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index 6ab8910b7..54931798c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type FooRead = BarRead & { readonly foo?: string; }; @@ -47,3 +43,7 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index b92ab2076..26abe5f67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,70 +46,52 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 7f30f765a..800a25863 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,377 +46,284 @@ export const serviceWithEmptyTagQueryKey = (options?: Options) => ({ key: serviceWithEmptyTagQueryKey(options), - query: async (context) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { - const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { - const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { - const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { - const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { - const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { - const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); /** @@ -425,12 +332,9 @@ export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial< * Body should not be unknown */ export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, PostApiVbyApiVersionBodyError> => ({ - mutation: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 6f71bcc40..058ef89f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index cef8fd363..a634fcc90 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,464 +43,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index 094d20902..a197f754d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 5087360ef..32339876d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,464 +42,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index b144ed7a2..6d7c758df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 74f3f999f..077353a6c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index da398d170..a49776312 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,464 +43,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts index 094d20902..a197f754d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index ef023fe2c..3a6c7b8c9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,464 +42,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 43c90277c..52077bd6b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 908344e1b..3be7126b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index 7a51e436a..fd8e94352 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,464 +43,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts index 094d20902..a197f754d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index c4092a30b..5737b3c02 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,464 +42,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index ba1febdda..6e56543cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 4f7ad47a7..8a3f1dff8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index 8900d4a58..fb5aa3181 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,464 +43,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index 094d20902..a197f754d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index e14c0d70c..4253cdefe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,464 +42,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 6a831b5b3..9b44f31cf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 767635c77..1d7442c84 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index 5a5ce3b11..5d2f30b60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,464 +43,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts index 094d20902..a197f754d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index b545d1817..ce7280a3d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,464 +42,308 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts index c352c1047..0bd4f3256 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index bfd35f1d6..6ed25f5f3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 9844839de..28d798a00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts index b43a5238d..b05f3d9d8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts index d5dadd291..d907320c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1186,3 +1182,7 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts index f1d1a20c3..49b25b351 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/valibot/default/valibot.gen.ts @@ -267,7 +267,7 @@ export const vModelWithDictionary = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference2)) + prop: v.optional(v.lazy(() => vModelWithCircularReference)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/index.ts index c352c1047..f03aa4cba 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, sendEmail } from './sdk.gen'; +export type { Attachment, AttachmentCollection, ClientOptions, HeaderCollection, MessageHeader, SendEmailData, SendEmailError, SendEmailErrors, SendEmailRequest, SendEmailResponse, SendEmailResponse2, SendEmailResponses, StandardPostmarkResponse } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts index 34a73e0be..a31ef7865 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://api.postmarkapp.com` | (string & {}); -}; - export type SendEmailRequest = { /** * The sender email address. Must have a registered and confirmed Sender Signature. @@ -134,3 +130,7 @@ export type SendEmailResponses = { }; export type SendEmailResponse2 = SendEmailResponses[keyof SendEmailResponses]; + +export type ClientOptions = { + baseUrl: `${string}://api.postmarkapp.com` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts index 4d911cbe3..47a6dbbce 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts index 4d911cbe3..47a6dbbce 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts index 4d911cbe3..47a6dbbce 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts index 4d911cbe3..47a6dbbce 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts index c3fcf5dff..7e1ba4007 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}/v1` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}/v1` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts index ca0a2a79e..85dba01eb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://foo.com` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://foo.com` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts index b54728320..43d939745 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/index.ts index b43a5238d..72df6eb05 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, BarReadWritable, Baz, ClientOptions, Corge, CorgeWritable, FooRead, FooReadWritable, PostFooReadData, PostFooReadResponse, PostFooReadResponses, Quux, QuuxWritable, QuxAllRead } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts index 127185a83..9db142760 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: string; -}; - export type FooRead = BarRead & { readonly foo?: string; }; @@ -59,3 +55,7 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; + +export type ClientOptions = { + baseUrl: string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts index 2a149e830..d90f5b3af 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: string; }; @@ -13,3 +9,7 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/index.ts index b43a5238d..388b1ed17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts index 4452f8fca..d67d3d123 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: string; [key: string]: unknown | string; @@ -21,3 +17,7 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts index d08207101..1097aeb99 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: { [key: string]: unknown; }; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts index 22248bd72..4ac068762 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: Array; }; export type Bar = string; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts index d998d02b5..6a8c31d0a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = Array<{ foo?: string; bar?: string; @@ -14,3 +10,7 @@ export type Foo = Array<{ foo?: string; bar?: string; }>; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/index.ts index c352c1047..de1daea43 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponse, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts index 5e6e1ffec..a1b061174 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body: string; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/index.ts index b43a5238d..46bcc346f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, ClientOptions, Foo, FooBar, FooBar2, FooBar3, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts index 0dd627bfc..54cfcc64e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/index.ts index b43a5238d..ccff152fd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, clientOptions, foo, fooBar, fooBar2, fooBar3, getFooData, getFooResponse, getFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts index 038783521..a29cd8ba6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type clientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; + +export type clientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/index.ts index b43a5238d..9f42252a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, ClientOptions, Foo, foo_bar, fooBar, FooBar, getFooData, getFooResponse, getFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts index d30a3e951..ef766fce0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/index.ts index b43a5238d..ca6918055 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, client_options, foo, foo_bar, foo_bar2, foo_bar3, get_foo_data, get_foo_response, get_foo_responses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts index 89b79fffe..954c678b2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type client_options = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type get_foo_responses = { }; export type get_foo_response = get_foo_responses[keyof get_foo_responses]; + +export type client_options = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/index.ts index b43a5238d..542fd104b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts index 87f3a1faf..492b157bf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * Foo */ @@ -27,3 +23,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/index.ts index b43a5238d..79c8f1087 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetBarData, GetBarResponse, GetBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts index 97bd27233..908d5cbec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -29,3 +25,7 @@ export type GetBarResponses = { }; export type GetBarResponse = GetBarResponses[keyof GetBarResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/index.ts index c352c1047..b8bd9b308 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts index 71bb11304..a2e7d5433 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/index.ts index b43a5238d..4d5281fcf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, BarMapped, BarUnion, Baz, BazMapped, BazUnion, ClientOptions, Foo, FooMapped, FooUnion, Qux, QuxExtend, QuxMapped } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts index 517394ec6..3bd1045c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { id: string; }; @@ -65,3 +61,7 @@ export type BazUnion = { }; export type QuxExtend = FooUnion; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/index.ts index b43a5238d..8bc58ce11 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Quux, Quuz, Qux, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts index 902f48ad5..a3d6081eb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ type?: 'Bar'; } & Bar) | ({ @@ -30,3 +26,7 @@ export type Quuz = ({ } & Baz) | ({ type?: 'non-ascii'; } & Spæcial); + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/index.ts index b43a5238d..85bc1ce95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts index 5fc5875d4..885b1c7d1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ foo: 'one' | 'two'; } & Bar) | ({ @@ -23,3 +19,7 @@ export type Baz = { export type Spæcial = { foo?: 'four'; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/index.ts index b43a5238d..8bc58ce11 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Quux, Quuz, Qux, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts index 7637bb05f..73005d217 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ type: 'Bar'; } & Bar) | ({ @@ -30,3 +26,7 @@ export type Quuz = ({ } & Baz) | ({ type: 'non-ascii'; } & Spæcial); + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts index b123b2122..63e849599 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: 'foo\'bar' | 'foo"bar'; }; export type Bar = 'foo\'bar' | 'foo"bar'; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/index.ts index 0339b6e31..6576970b8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { type ClientOptions, type Foo, TypeEnum } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts index fb5deac3a..5e6bf05a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: TypeEnum; }; @@ -11,3 +7,7 @@ export type Foo = { export const TypeEnum = { FOO: 'foo', BAR: 'bar' } as const; export type TypeEnum = typeof TypeEnum[keyof typeof TypeEnum]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/index.ts index 0339b6e31..6576970b8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { type ClientOptions, type Foo, TypeEnum } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts index ba7939b4f..980626acc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: TypeEnum; }; @@ -12,3 +8,7 @@ export enum TypeEnum { FOO = 'foo', BAR = 'bar' } + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/index.ts index b43a5238d..33293d319 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, TypeEnum } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts index 93dd5188f..c1d043ba0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: TypeEnum; }; export type TypeEnum = 'foo' | 'bar'; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts index 1d30f67ff..fe3d00693 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,3 +41,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index f20bb191c..ff4cd52a1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,3 +41,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts index 50065b892..d1e42e3cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,3 +41,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts index c92f919ad..697c11059 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,3 +40,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts index d131603e0..fec1904fb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,3 +41,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/index.ts index 0339b6e31..e6f33b03a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts index d815d6b77..3dead7b87 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,3 +41,7 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts index 7f0916345..d8b9e50d1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index 72d21c8b5..c25efe013 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts index ae4406721..48930e998 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts index 7b43908d9..c99c71642 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts index a4169a3d5..95af7e0f2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/index.ts index 0339b6e31..76ebfd28c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts index c668186a7..ece8dbc8d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,3 +33,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/index.ts index b43a5238d..50e8edca3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _110, Arrays, ClientOptions, Foo, MyFoo, MyFoo2, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts index 7bbcad881..7c6cf43ce 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -21,3 +17,7 @@ export type Arrays = [ ] | [ 'baz' ]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts index 49d10ce0f..0f113e601 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = 'foo' | 'bar' | null; export type Bar = 'foo' | 'bar'; export type Baz = 'foo' | 'bar'; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/index.ts index b43a5238d..542fd104b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts index bf1605beb..29f6d3874 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = string; export type PostFooData = { @@ -19,3 +15,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/index.ts index b43a5238d..148e0ddb8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, ExternalAllOfSchema, ExternalAnyOfSchema, ExternalArraySchema, ExternalDeepParam, ExternalDoubleNestedNumeric, ExternalDoubleNestedProp, ExternalIdParam, ExternalMixedBody, ExternalMixedProperties, ExternalModelBody, ExternalNestedBody, ExternalNestedNumericObjectA, ExternalNestedNumericObjectB, ExternalNestedObjectA, ExternalNestedObjectB, ExternalNumericParam, ExternalSchemaA, ExternalSchemaB, ExternalSchemaC, ExternalSchemaExternalProp, ExternalSchemaExternalPropAlias, ExternalSchemaPathA, ExternalSchemaPathB, ExternalSchemaPropertyA, ExternalSchemaPropertyB, ExternalSchemaPropertyC, ExternalSchemaPropertyD, ExternalShared1, ExternalSharedDeep, ExternalSharedExternalNested, ExternalSharedExternalNestedNumeric, ExternalSharedExternalSharedModel, ExternalSharedExternalSharedModelWithUuid, ExternalSharedId, ExternalSharedName, ExternalUnionSchema, ExternalUuidBody, ExternalUuidParam, GetExternalArrayData, GetExternalArrayResponse, GetExternalArrayResponses, GetExternalMixedData, GetExternalMixedResponse, GetExternalMixedResponses, GetExternalModelData, GetExternalModelError, GetExternalModelErrors, GetExternalModelResponse, GetExternalModelResponses, GetExternalNestedData, GetExternalNestedResponse, GetExternalNestedResponses, GetExternalPropertiesByIdData, GetExternalPropertiesByIdResponse, GetExternalPropertiesByIdResponses, GetExternalUnionData, GetExternalUnionResponse, GetExternalUnionResponses, GetExternalUuidData, GetExternalUuidResponse, GetExternalUuidResponses, PostExternalArrayData, PostExternalArrayResponse, PostExternalArrayResponses, PostExternalMixedData, PostExternalMixedResponse, PostExternalMixedResponses, PostExternalModelData, PostExternalModelError, PostExternalModelErrors, PostExternalModelResponse, PostExternalModelResponses, PostExternalNestedData, PostExternalNestedResponse, PostExternalNestedResponses, PostExternalUnionData, PostExternalUnionResponse, PostExternalUnionResponses, PutExternalUuidData, PutExternalUuidResponse, PutExternalUuidResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts index 8f041dff7..2ab40752d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type ExternalSchemaA = ExternalSharedExternalSharedModel; export type ExternalSchemaB = ExternalSharedExternalSharedModel; @@ -434,3 +430,7 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts index c7e01dadf..1cc839174 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts @@ -42,42 +42,27 @@ const createQueryKey = (id: string, options?: TOptions export const createQueryKey2 = (options?: Options) => createQueryKey('create', options); export const createOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await create({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await create({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: createQueryKey2(options) }); -export const create2Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await create2({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const create2Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await create2({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const create3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await create3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const create3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await create3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/index.ts index c352c1047..56a790696 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { create, create2, create3, type Options } from './sdk.gen'; +export type { ClientOptions, Create2Data, Create2Responses, Create3Data, Create3Responses, CreateData, CreateResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts index fae694b9b..3b84b928c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type CreateData = { body?: never; path?: never; @@ -45,3 +41,7 @@ export type Create3Responses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/index.ts index b43a5238d..70ba29e14 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, PostFooData, PostFooResponse, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts index 4c71cace9..c8043dbaa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -23,3 +19,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/index.ts index c352c1047..878d240fe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts index 62af858b9..4639723fb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { */ default: unknown; }; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/index.ts index c352c1047..878d240fe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts index d564215cf..7e5ae0357 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { */ default: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts index 2cb208158..feeaafc50 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,61 +9,49 @@ import type { ApiVVersionODataControllerCountData, ApiVVersionODataControllerCou @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public export(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public import(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public fooWow(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple:operation', - ...options - }); - } + public export(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public import(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple:operation', + ...options + }); } } export class ODataControllerServiceRequests { - public apiVVersionODataControllerCount(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple/$count', - ...options - }); - } + public apiVVersionODataControllerCount(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple/$count', + ...options + }); } } export class VVersionServiceRequests { @@ -76,129 +64,103 @@ export class ApiServiceRequests { @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); - } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); } apiService = new ApiServiceRequests(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public deleteFoo(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', - ...options - }); - } - - public callWithParameters(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); - } - - public callWithWeirdParameterNames(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); - } - - public getCallWithOptionalParam(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/parameters', - ...options - }); - } - - public postCallWithOptionalParam(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters', - ...options - }); - } + public deleteFoo(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', + ...options + }); } + + public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); } + + public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); } + + public getCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/parameters', + ...options + }); } + + public postCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions', - ...options - }); - } + public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions', + ...options + }); } } @Injectable({ providedIn: 'root' }) @@ -206,406 +168,310 @@ export class DeprecatedServiceRequests { /** * @deprecated */ - public deprecatedCall(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/deprecated', - ...options - }); - } + public deprecatedCall(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/deprecated', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceRequests { - public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/requestBody', - ...options - }); - } + public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/requestBody', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class FormDataServiceRequests { - public postApiVbyApiVersionFormData(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/formData', - ...options - }); - } + public postApiVbyApiVersionFormData(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/formData', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callToTestOrderOfParams(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); - } + public callWithDefaultParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName2(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName3(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName4(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); - } + public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); - } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } + public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } - - public callWithResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithDuplicateResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); - } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } + + public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); - } + public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); - } + public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class UploadServiceRequests { - public uploadFile(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/upload', - ...options - }); - } + public uploadFile(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/upload', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceRequests { - public fileResponse(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/file/{id}', - ...options - }); - } + public fileResponse(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/file/{id}', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); - } - - public complexParams(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/complex/{id}', - ...options - }); - } + public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); } + + public complexParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/complex/{id}', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipartServiceRequests { - public multipartResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multipart', - ...options - }); - } - - public multipartRequest(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/multipart', - ...options - }); - } + public multipartResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multipart', + ...options + }); } + + public multipartRequest(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/multipart', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); - } + public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); - } + public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); } /** * Login User */ - public putWithFormUrlEncoded(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); - } + public putWithFormUrlEncoded(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public export(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).export(opts) : undefined; - }); - } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; - }); - } - - public import(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).import(opts) : undefined; - }); - } - - public fooWow(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; - }); - } - - public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; - }); - } + public export(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).export(opts) : undefined; }); } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } + + public import(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).import(opts) : undefined; }); } + + public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } + + public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; }); } } export class ODataControllerServiceResources { - public apiVVersionODataControllerCount(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; - }); - } + public apiVVersionODataControllerCount(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; }); } } export class VVersionServiceResources { @@ -618,103 +484,38 @@ export class ApiServiceResources { @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; - }); - } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } apiService = new ApiServiceResources(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public deleteFoo(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; - }); - } - - public callWithParameters(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; - }); - } - - public callWithWeirdParameterNames(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; - }); - } - - public getCallWithOptionalParam(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; - }); - } - - public postCallWithOptionalParam(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; - }); - } + public deleteFoo(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; }); } + + public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } + + public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } + + public getCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; }); } + + public postCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; - }); - } + public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) @@ -722,291 +523,126 @@ export class DeprecatedServiceResources { /** * @deprecated */ - public deprecatedCall(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; - }); - } + public deprecatedCall(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceResources { - public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; - }); - } + public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class FormDataServiceResources { - public postApiVbyApiVersionFormData(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; - }); - } + public postApiVbyApiVersionFormData(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; - }); - } + public callWithDefaultParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; - }); - } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } - public callToTestOrderOfParams(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; - }); - } + public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; - }); - } - - public duplicateName2(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; - }); - } - - public duplicateName3(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; - }); - } - - public duplicateName4(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; - }); - } + public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } + + public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } + + public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } + + public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; - }); - } + public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } - - public callWithResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; - }); - } - - public callWithDuplicateResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; - }); - } - - public callWithResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + + public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } + + public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } + + public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; - }); - } + public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(TypesServiceRequests).types(opts) : undefined; - }); - } + public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class UploadServiceResources { - public uploadFile(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; - }); - } + public uploadFile(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceResources { - public fileResponse(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; - }); - } + public fileResponse(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; - }); - } + public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } - public complexParams(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; - }); - } + public complexParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipartServiceResources { - public multipartResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; - }); - } + public multipartResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; }); } - public multipartRequest(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; - }); - } + public multipartRequest(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; - }); - } + public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; - }); - } + public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } /** * Login User */ - public putWithFormUrlEncoded(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; - }); - } + public putWithFormUrlEncoded(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; }); } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts index 474d7c8c6..2aeb7aacc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -348,248 +348,104 @@ export const putWithFormUrlEncodedRequest = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? exportRequest(opts) : undefined; -}); +export const exportResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? exportRequest(opts) : undefined; }); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; -}); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); -export const importResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? importRequest(opts) : undefined; -}); +export const importResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? importRequest(opts) : undefined; }); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? fooWowRequest(opts) : undefined; -}); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); -export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; -}); +export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; }); -export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; -}); +export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; }); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deleteFooRequest(opts) : undefined; -}); +export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteFooRequest(opts) : undefined; }); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDescriptionsRequest(opts) : undefined; -}); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); /** * @deprecated */ -export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deprecatedCallRequest(opts) : undefined; -}); +export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deprecatedCallRequest(opts) : undefined; }); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithParametersRequest(opts) : undefined; -}); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; -}); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); -export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getCallWithOptionalParamRequest(opts) : undefined; -}); +export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithOptionalParamRequest(opts) : undefined; }); -export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postCallWithOptionalParamRequest(opts) : undefined; -}); +export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithOptionalParamRequest(opts) : undefined; }); -export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; -}); +export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; }); -export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; -}); +export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; }); -export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultParametersRequest(opts) : undefined; -}); +export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; -}); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callToTestOrderOfParamsRequest(opts) : undefined; -}); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateNameRequest(opts) : undefined; -}); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName2Request(opts) : undefined; -}); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName3Request(opts) : undefined; -}); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName4Request(opts) : undefined; -}); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithNoContentResponseRequest(opts) : undefined; -}); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; -}); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyARequest(opts) : undefined; -}); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyBRequest(opts) : undefined; -}); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseRequest(opts) : undefined; -}); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDuplicateResponsesRequest(opts) : undefined; -}); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponsesRequest(opts) : undefined; -}); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? collectionFormatRequest(opts) : undefined; -}); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? typesRequest(opts) : undefined; -}); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); -export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? uploadFileRequest(opts) : undefined; -}); +export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? uploadFileRequest(opts) : undefined; }); -export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? fileResponseRequest(opts) : undefined; -}); +export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fileResponseRequest(opts) : undefined; }); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? complexTypesRequest(opts) : undefined; -}); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); -export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? multipartResponseRequest(opts) : undefined; -}); +export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartResponseRequest(opts) : undefined; }); -export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? multipartRequestRequest(opts) : undefined; -}); +export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartRequestRequest(opts) : undefined; }); -export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? complexParamsRequest(opts) : undefined; -}); +export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexParamsRequest(opts) : undefined; }); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResultFromHeaderRequest(opts) : undefined; -}); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? testErrorCodeRequest(opts) : undefined; -}); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; -}); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); /** * Login User */ -export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? putWithFormUrlEncodedRequest(opts) : undefined; -}); +export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putWithFormUrlEncodedRequest(opts) : undefined; }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts index c352c1047..bbab0ca10 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, NestedSdkWithInstance, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 42a9481df..88a1b02c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,9 +23,23 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Domains extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } +} + +export class Providers extends HeyApiClient { + domains = new Domains({ client: this.client }); +} + +export class Business extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + + providers = new Providers({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +55,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Domains extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); - } - - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); - } -} - -export class Providers extends HeyApiClient { - domains = new Domains({ client: this.client }); -} - -export class Business extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); - } - - providers = new Providers({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class NestedSdkWithInstance extends HeyApiClient { @@ -74,18 +64,11 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - NestedSdkWithInstance.__registry.set(this, args?.key); - } + }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } - public putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); - } + public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations', ...options }); - } + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 3f503a59d..3c9d90569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts index c352c1047..19b0bf7f4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, Locations, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index 8c055a5e4..bc2324ac0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,17 +19,11 @@ export type Options(options?: Options) { - return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } - public static putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); - } + public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } } export class Providers { @@ -37,17 +31,13 @@ export class Providers { } export class Business { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } static providers = Providers; } export class Locations { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 3f503a59d..3c9d90569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/index.ts index c352c1047..384678da6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Bar, Foo, type Options, Sdk } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 09d2b380f..5196fa3c5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,9 +23,21 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Bar extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } +} + +export class Foo extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + + bar = new Bar({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +53,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Bar extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); - } -} - -export class Foo extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo', ...options }); - } - - bar = new Bar({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class Sdk extends HeyApiClient { @@ -74,18 +62,11 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - Sdk.__registry.set(this, args?.key); - } + }) { super(args); Sdk.__registry.set(this, args?.key); } - public getFoo(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo', ...options }); - } + public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } - public getFooBar(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); - } + public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index b443e6ac2..c73c5bad5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,7 +4,6 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -24,7 +23,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index 87d807f95..93212780a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index db455df67..37f15d4e5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,7 +2,6 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -22,7 +21,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index 87d807f95..93212780a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts index b43a5238d..4eb140e60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Baz, ClientOptions, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, QuxAllRead, ReadableBarRead, ReadableBarWrite, ReadableCorge, ReadableFooRead, ReadableFooReadWrite, ReadableFooWrite, ReadableQuux, WritableBarRead, WritableBarWrite, WritableCorge, WritableFooRead, WritableFooReadWrite, WritableFooWrite, WritableQuux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index 09a3a4b1f..21ae98a77 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Baz = { baz?: string; }; @@ -110,3 +106,7 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts index b43a5238d..f3f644d9a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, BarWrite, Baz, ClientOptions, Corge, FooRead, FooReadWrite, FooWrite, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, Quux, QuxAllRead } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index 68b3b8b10..b73d450d0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type FooReadWrite = BarRead & { foo?: string; }; @@ -93,3 +89,7 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index b92ab2076..26abe5f67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,70 +46,52 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 7bcd0d40e..1aef078ed 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,561 +46,423 @@ export const exportQueryKey = (options?: Options) => createQueryKey( export const exportQuery = defineQueryOptions((options?: Options) => ({ key: exportQueryKey(options), - query: async (context) => { - const { data } = await export_({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await export_({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const importMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await import_({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountQuery = defineQueryOptions((options?: Options) => ({ key: apiVVersionODataControllerCountQueryKey(options), - query: async (context) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationQuery = defineQueryOptions((options: Options) => ({ key: getApiVbyApiVersionSimpleOperationQueryKey(options), - query: async (context) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deleteFoo({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); /** * @deprecated */ export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deprecatedCall({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamQuery = defineQueryOptions((options: Options) => ({ key: getCallWithOptionalParamQueryKey(options), - query: async (context) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options?: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { - const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { - const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { - const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { - const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { - const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await uploadFile({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseQuery = defineQueryOptions((options: Options) => ({ key: fileResponseQueryKey(options), - query: async (context) => { - const { data } = await fileResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await fileResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { - const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseQuery = defineQueryOptions((options?: Options) => ({ key: multipartResponseQueryKey(options), - query: async (context) => { - const { data } = await multipartResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await multipartResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await multipartRequest({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await complexParams({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); /** * Login User */ export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 6f71bcc40..058ef89f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index 5b07cde6a..d577b3aff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index a78194ab9..35678bc91 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 6cc80fb17..41213b036 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index b144ed7a2..6d7c758df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 74f3f999f..077353a6c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index 38403265b..8f9f18754 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts index a78194ab9..35678bc91 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index 378082bd0..d5b97ba94 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 43c90277c..52077bd6b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 908344e1b..3be7126b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index 203534a86..4a5b4971c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts index a78194ab9..35678bc91 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index 358caac28..548d90159 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index ba1febdda..6e56543cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 4f7ad47a7..8a3f1dff8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index 9e78e66d2..a66a84de1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index a78194ab9..35678bc91 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index 7e81c3731..346c579b6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 6a831b5b3..9b44f31cf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 767635c77..1d7442c84 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index f839621a3..0d2884d1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts index a78194ab9..35678bc91 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index bbcab4d5a..b68fd8934 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index bfd35f1d6..6ed25f5f3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts index 3cdab85a3..580f3bcbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2070,3 +2066,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts index 300b40b87..7d0f29978 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/valibot/default/valibot.gen.ts @@ -343,7 +343,7 @@ export const vDeprecatedModel = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference2)) + prop: v.optional(v.lazy(() => vModelWithCircularReference)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/index.ts index c352c1047..afbfb3822 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getBar, getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetBarData, GetBarResponses, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts index 41519aa51..7cd25c229 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -31,3 +27,7 @@ export type GetBarResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts index d7a0ac461..02482e56a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/index.ts index b43a5238d..2a71f7a3a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts index 1aa399baf..d535c1ec3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts @@ -1,31 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetFooResponse } from './types.gen'; +const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { + data.baz = new Date(data.baz); +} return data; }; -const fooSchemaResponseTransformer = (data: any) => { - data.foo = data.foo.map((item: any) => barSchemaResponseTransformer(item)); - return data; -}; - -const barSchemaResponseTransformer = (data: any) => { - data.foo = data.foo.map((item: any) => bazSchemaResponseTransformer(item)); - return data; -}; - -const bazSchemaResponseTransformer = (data: any) => { - data = quxSchemaResponseTransformer(data); - data.bar = new Date(data.bar); - return data; -}; - -const quxSchemaResponseTransformer = (data: any) => { - if (data.baz) { - data.baz = new Date(data.baz); - } - return data; -}; - -export const getFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const bazSchemaResponseTransformer = (data: any) => { data.bar = new Date(data.bar); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts index f3fe6fe4c..e2bd16164 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: Array; }; @@ -44,3 +40,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/index.ts index b43a5238d..e2c1eddeb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts index 68360f01a..992665524 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts @@ -1,7 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetFooResponse } from './types.gen'; - const fooSchemaResponseTransformer = (data: any) => { if (data.foo) { data.foo = new Date(data.foo); @@ -14,8 +12,3 @@ const fooSchemaResponseTransformer = (data: any) => { } return data; }; - -export const getFooResponseTransformer = async (data: any): Promise => { - data = data.map((item: any) => fooSchemaResponseTransformer(item)); - return data; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts index 12991171f..dfee23093 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: Date; bar?: Date | null; @@ -25,3 +21,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts index fc50ee927..55875bf9f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts @@ -2,10 +2,4 @@ import type { GetFooResponse } from './types.gen'; -export const getFooResponseTransformer = async (data: any): Promise => { - data.foo = data.foo.map((item: any) => { - item.baz = new Date(item.baz); - return item; - }); - return data; -}; +export const getFooResponseTransformer = async (data: any): Promise => { data.foo = data.foo.map((item: any) => { item.baz = new Date(item.baz); return item; }); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts index fd57de924..89be77eab 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -23,3 +19,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/index.ts index b43a5238d..23bdcc7e3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetTreeData, GetTreeResponse, GetTreeResponses, TreeNode } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts index 397ecdc84..deb93e030 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts @@ -1,7 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetTreeResponse } from './types.gen'; - const treeNodeSchemaResponseTransformer = (data: any) => { if (data.createdAt) { data.createdAt = new Date(data.createdAt); @@ -11,8 +9,3 @@ const treeNodeSchemaResponseTransformer = (data: any) => { } return data; }; - -export const getTreeResponseTransformer = async (data: any): Promise => { - data = data.map((item: any) => treeNodeSchemaResponseTransformer(item)); - return data; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts index 5a46bbbd8..359bc54e8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TreeNode = { id?: string; name?: string; @@ -26,3 +22,7 @@ export type GetTreeResponses = { }; export type GetTreeResponse = GetTreeResponses[keyof GetTreeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/index.ts index b43a5238d..b402fa1ba 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Address, AllocatedDeliveryItem, AllocatedPreOrderItem, AnonymousTransaction, AnonymousTransactionWritable, AppliedDiscount, AppliedDiscountWritable, AssignPlantsToGroupRequest, BadRequestPropertyError, BadRequestResponse, BatchDetails, BatchLabResultsPostData, BatchLabResultsPostError, BatchLabResultsPostErrors, BatchLabResultsPostResponses, BooleanNullableOptional, BooleanOptional, Brand, BrandEditRequest, BrandGetData, BrandGetErrors, BrandGetResponse, BrandGetResponses, BrandPostData, BrandPostError, BrandPostErrors, BrandPostResponse, BrandPostResponses, BroadcastedResponses, BroadcastedResponsesWritable, BulkCreateOrUpdateHarvest, BulkCreateOrUpdateHarvestResponse, BulkHarvestDetail, CalculationMethod, CancelPreorderRequest, CannabinoidTerpeneValue, CartItemPrice, CartPrice, ChangeGrowthPhaseRequest, ClientOptions, ClosingReportCategorySummary, ClosingReportCategorySummaryWritable, ClosingReportCustomerTypeSummary, ClosingReportCustomerTypeSummaryWritable, ClosingReportOrderSourceSummary, ClosingReportOrderSourceSummaryWritable, ClosingReportOrderTypeSummary, ClosingReportOrderTypeSummaryWritable, ClosingReportPayByBankBatchFileSums, ClosingReportPaymentSummary, ClosingReportTaxRateSummary, ClosingReportV2, ClosingReportV2Writable, ConvertBatchDetails, ConvertImmatureBatchRequest, ConvertImmaturePlantResponse, ConvertImmaturePlantResponseApiResult, CreateAnonymousTransactionRequest, CreatedImmaturePlantBatch, CreatedMaturePlant, CreateImmaturePlantBatchResponse, CreateImmaturePlantBatchResponseApiResult, CreateJournalEntryRequest, CreateMatureBatchRequest, CreateMaturePlantsResponse, CreateMaturePlantsResponseApiResult, CreateOrUpdateHarvest, CreatePlantRequest, CreatePreOrderRequest, CreateUpdatePurchaseOrderItemRequest, CreateUpdatePurchaseOrderRequest, CreateUpdatePurchaseOrderResponse, CreateUpdatePurchaseOrdersRequest, Customer, CustomerByExternalIdGetData, CustomerByExternalIdGetError, CustomerByExternalIdGetErrors, CustomerByExternalIdGetResponse, CustomerByExternalIdGetResponses, CustomerCustomerLookupPostData, CustomerCustomerLookupPostError, CustomerCustomerLookupPostErrors, CustomerCustomerLookupPostResponse, CustomerCustomerLookupPostResponses, CustomerCustomerPostData, CustomerCustomerPostError, CustomerCustomerPostErrors, CustomerCustomerPostResponse, CustomerCustomerPostResponses, CustomerCustomersGetData, CustomerCustomersGetError, CustomerCustomersGetErrors, CustomerCustomersGetResponse, CustomerCustomersGetResponses, CustomerCustomersPaginatedGetData, CustomerCustomersPaginatedGetError, CustomerCustomersPaginatedGetErrors, CustomerCustomersPaginatedGetResponse, CustomerCustomersPaginatedGetResponses, CustomerCustomerTypesGetData, CustomerCustomerTypesGetErrors, CustomerCustomerTypesGetResponse, CustomerCustomerTypesGetResponses, CustomerJournalCreatePostData, CustomerJournalCreatePostError, CustomerJournalCreatePostErrors, CustomerJournalCreatePostResponse, CustomerJournalCreatePostResponses, CustomerJournalGetData, CustomerJournalGetError, CustomerJournalGetErrors, CustomerJournalGetResponse, CustomerJournalGetResponses, CustomerJournalUpdatePostData, CustomerJournalUpdatePostError, CustomerJournalUpdatePostErrors, CustomerJournalUpdatePostResponse, CustomerJournalUpdatePostResponses, CustomerReferralSourcesGetData, CustomerReferralSourcesGetErrors, CustomerReferralSourcesGetResponse, CustomerReferralSourcesGetResponses, CustomerSearchPostData, CustomerSearchPostError, CustomerSearchPostErrors, CustomerSearchPostResponse, CustomerSearchPostResponses, CustomerSearchRequest, CustomerSearchResult, CustomerSearchResultWritable, CustomerType, CustomerWritable, DateTimeNullableOptional, DecimalNullableOptional, DeleteImageRequest, DeliveriesGetData, DeliveriesGetError, DeliveriesGetErrors, DeliveriesGetResponse, DeliveriesGetResponses, DeliveriesSetRouteDetailPostData, DeliveriesSetRouteDetailPostError, DeliveriesSetRouteDetailPostErrors, DeliveriesSetRouteDetailPostResponses, DeliveryOrderStatus, DeliveryPayment, DeliveryScheduleType, Discount, DiscountApiResponse, DiscountApiResponseWritable, DiscountApplicationMethod, DiscountConstraintApiResponse, DiscountConstraintApiResponseWritable, DiscountFirstTimeCustomer, DiscountGroup, DiscountItemGroupType, DiscountMenuDisplayApiResponse, DiscountPaymentRestrictionApiResponse, DiscountRestriction, DiscountRewardApiResponse, DiscountRewardApiResponseWritable, DiscountsGetData, DiscountsGetErrors, DiscountsGetResponse, DiscountsGetResponses, DiscountsV2ListGetData, DiscountsV2ListGetErrors, DiscountsV2ListGetResponse, DiscountsV2ListGetResponses, DiscountThresholdType, DriverDetail, DriversGetData, DriversGetErrors, DriversGetResponse, DriversGetResponses, DriversPostData, DriversPostError, DriversPostErrors, DriversPostResponses, EcomCustomerEdit, Employee, EmployeesGetData, EmployeesGetErrors, EmployeesGetResponse, EmployeesGetResponses, FeeDonation, FeeDonationInfo, FinishOrUnfinishBatchDetails, GuestListEntry, GuestlistGetData, GuestlistGetErrors, GuestlistGetResponse, GuestlistGetResponses, Harvest, HarvestBulkPostData, HarvestBulkPostError, HarvestBulkPostErrors, HarvestBulkPostResponse, HarvestBulkPostResponses, HarvestedPlant, HarvestGetData, HarvestGetErrors, HarvestGetResponse, HarvestGetResponses, HarvestPlantRequest, HarvestPostData, HarvestPostErrors, HarvestPostResponse, HarvestPostResponses, HarvestWasteDetail, HarvestWasteDetailWaste, Int32iEnumerableOptional, Int32NullableOptional, IntegratedPayment, IntegrationIntegrationReconGetData, IntegrationIntegrationReconGetErrors, IntegrationIntegrationReconGetResponse, IntegrationIntegrationReconGetResponses, InventoryDiscrepancy, InventoryDiscrepancyWritable, InventoryGetData, InventoryGetErrors, InventoryGetResponse, InventoryGetResponses, InventoryIntegrationReconResponse, InventoryIntegrationReconResponseWritable, InventoryInventorytransactionGetData, InventoryInventorytransactionGetErrors, InventoryInventorytransactionGetResponse, InventoryInventorytransactionGetResponses, InventoryItem, InventoryItemWritable, InventoryLabresultsGetData, InventoryLabresultsGetErrors, InventoryLabresultsGetResponse, InventoryLabresultsGetResponses, InventoryReceivedinventoryGetData, InventoryReceivedinventoryGetErrors, InventoryReceivedinventoryGetResponse, InventoryReceivedinventoryGetResponses, InventoryReceiveinventoryPostData, InventoryReceiveinventoryPostError, InventoryReceiveinventoryPostErrors, InventoryReceiveinventoryPostResponse, InventoryReceiveinventoryPostResponses, InventoryRoomQuantity, InventorySnapshot, InventorySnapshotGetData, InventorySnapshotGetErrors, InventorySnapshotGetResponse, InventorySnapshotGetResponses, InventoryTag, InventoryTransaction, IRestrictionApiResponse, JournalEntry, LabResult, LabResultUnit, LabResultUnitData, LabResultWritable, Lineage, LineagesGetData, LineagesGetErrors, LineagesGetResponse, LineagesGetResponses, LineItemTaxInfo, LineItemTaxInfoWritable, LocationIdentity, LocationIdentityWritable, LocationMapping, LocationProductOverride, LocationProductOverrideRequest, LocationResponse, LocationResponseWritable, LoyaltySnapshot, ManualPayment, MatureBatchDetails, MovePlantRequest, ObjectWaste, OkcomputerGetData, OkcomputerGetErrors, OkcomputerGetResponse, OkcomputerGetResponses, PackageAddTagsPostData, PackageAddTagsPostErrors, PackageAddTagsPostResponses, PackageLineage, PackageRemoveTagsPostData, PackageRemoveTagsPostErrors, PackageRemoveTagsPostResponses, PackageSetTagsPostData, PackageSetTagsPostError, PackageSetTagsPostErrors, PackageSetTagsPostResponses, Plant, PlantAssignPlantsToGroupPostData, PlantAssignPlantsToGroupPostError, PlantAssignPlantsToGroupPostErrors, PlantAssignPlantsToGroupPostResponses, PlantChangePhasePostData, PlantChangePhasePostErrors, PlantChangePhasePostResponses, PlantGetData, PlantGetErrors, PlantGetReasonCodesGetData, PlantGetReasonCodesGetErrors, PlantGetReasonCodesGetResponse, PlantGetReasonCodesGetResponses, PlantGetResponse, PlantGetResponses, PlantHarvestPostData, PlantHarvestPostErrors, PlantHarvestPostResponses, PlantMovePostData, PlantMovePostErrors, PlantMovePostResponses, PlantNonstsBatchConvertImmatureplantsPostData, PlantNonstsBatchConvertImmatureplantsPostError, PlantNonstsBatchConvertImmatureplantsPostErrors, PlantNonstsBatchConvertImmatureplantsPostResponse, PlantNonstsBatchConvertImmatureplantsPostResponses, PlantNonstsBatchFinishHarvestPostData, PlantNonstsBatchFinishHarvestPostError, PlantNonstsBatchFinishHarvestPostErrors, PlantNonstsBatchFinishHarvestPostResponses, PlantNonstsBatchImmatureplantsPostData, PlantNonstsBatchImmatureplantsPostError, PlantNonstsBatchImmatureplantsPostErrors, PlantNonstsBatchImmatureplantsPostResponse, PlantNonstsBatchImmatureplantsPostResponses, PlantNonstsBatchMatureplantsPostData, PlantNonstsBatchMatureplantsPostError, PlantNonstsBatchMatureplantsPostErrors, PlantNonstsBatchMatureplantsPostResponse, PlantNonstsBatchMatureplantsPostResponses, PlantNonstsBatchPostData, PlantNonstsBatchPostError, PlantNonstsBatchPostErrors, PlantNonstsBatchPostResponses, PlantNonstsBatchRetirePostData, PlantNonstsBatchRetirePostError, PlantNonstsBatchRetirePostErrors, PlantNonstsBatchRetirePostResponses, PlantNonstsRetagPostData, PlantNonstsRetagPostError, PlantNonstsRetagPostErrors, PlantNonstsRetagPostResponses, PlantNonstsSplitPostData, PlantNonstsSplitPostError, PlantNonstsSplitPostErrors, PlantNonstsSplitPostResponse, PlantNonstsSplitPostResponses, PlantNonstsUpdatePostData, PlantNonstsUpdatePostError, PlantNonstsUpdatePostErrors, PlantNonstsUpdatePostResponse, PlantNonstsUpdatePostResponses, PlantPostData, PlantPostError, PlantPostErrors, PlantPostResponse, PlantPostResponses, PlantRetirePostData, PlantRetirePostError, PlantRetirePostErrors, PlantRetirePostResponses, PlantWasteDetail, PlantWasteDetailWaste, PlantWritable, PostImmatureBatchRequest, PrecartItem, PreorderCancelPostData, PreorderCancelPostError, PreorderCancelPostErrors, PreorderCancelPostResponse, PreorderCancelPostResponses, PreOrderItem, PreorderPriceCartPostData, PreorderPriceCartPostError, PreorderPriceCartPostErrors, PreorderPriceCartPostResponse, PreorderPriceCartPostResponses, PreOrderRedemption, PreOrderRedemptionIEnumerableOptional, PreOrderStatus, PreorderStatusGetData, PreorderStatusGetErrors, PreorderStatusGetResponse, PreorderStatusGetResponses, PreorderSubmitPostData, PreorderSubmitPostError, PreorderSubmitPostErrors, PreorderSubmitPostResponse, PreorderSubmitPostResponses, PreorderUpdatePostData, PreorderUpdatePostErrors, PreorderUpdatePostResponses, PriceCartRequest, PriceEstimates, PricingDetail, PricingTier, PricingTierData, PricingTiersGetData, PricingTiersGetErrors, PricingTiersGetResponse, PricingTiersGetResponses, Producer, ProducersGetData, ProducersGetErrors, ProducersGetResponse, ProducersGetResponses, ProductCategory, ProductCategoryGetData, ProductCategoryGetErrors, ProductCategoryGetResponse, ProductCategoryGetResponses, ProductDetail, ProductDetailUpload, ProductDetailWritable, ProductEffect, ProductsExternalCategoriesGetData, ProductsExternalCategoriesGetError, ProductsExternalCategoriesGetErrors, ProductsExternalCategoriesGetResponse, ProductsExternalCategoriesGetResponses, ProductsGetData, ProductsGetErrors, ProductsGetResponse, ProductsGetResponses, ProductsLocationOverridesGetData, ProductsLocationOverridesGetErrors, ProductsLocationOverridesGetResponse, ProductsLocationOverridesGetResponses, ProductsLocationOverridesPostData, ProductsLocationOverridesPostErrors, ProductsLocationOverridesPostResponses, ProductsProductPostData, ProductsProductPostError, ProductsProductPostErrors, ProductsProductPostResponse, ProductsProductPostResponses, ProductsProductsPostData, ProductsProductsPostError, ProductsProductsPostErrors, ProductsProductsPostResponse, ProductsProductsPostResponses, ProductsRemoveImagePostData, ProductsRemoveImagePostError, ProductsRemoveImagePostErrors, ProductsRemoveImagePostResponse, ProductsRemoveImagePostResponses, ProductsSetImagePostData, ProductsSetImagePostError, ProductsSetImagePostErrors, ProductsSetImagePostResponse, ProductsSetImagePostResponses, ProductsStrainsGetData, ProductsStrainsGetErrors, ProductsStrainsGetResponse, ProductsStrainsGetResponses, ProductTag, PublishedDiscount, PurchaseOrderData, PurchaseOrderGetData, PurchaseOrderGetError, PurchaseOrderGetErrors, PurchaseOrderGetResponse, PurchaseOrderGetResponses, PurchaseOrderItemDetail, PurchaseOrderPostData, PurchaseOrderPostError, PurchaseOrderPostErrors, PurchaseOrderPostResponse, PurchaseOrderPostResponses, ReceivedInventory, ReceivedInventoryItem, ReceiveInventoryItemSave, ReceiveInventorySave, ReferenceLabResultsNamesGetData, ReferenceLabResultsNamesGetErrors, ReferenceLabResultsNamesGetResponse, ReferenceLabResultsNamesGetResponses, ReferenceLabResultUnitsGetData, ReferenceLabResultUnitsGetErrors, ReferenceLabResultUnitsGetResponse, ReferenceLabResultUnitsGetResponses, ReferenceUnitsGetData, ReferenceUnitsGetErrors, ReferenceUnitsGetResponse, ReferenceUnitsGetResponses, ReferenceUnitTypesGetData, ReferenceUnitTypesGetErrors, ReferenceUnitTypesGetResponse, ReferenceUnitTypesGetResponses, RegisterAdjustment, RegisterCashSummary, RegisterTransaction, RegulatoryCategory, RegulatoryCategoryGetData, RegulatoryCategoryGetErrors, RegulatoryCategoryGetResponse, RegulatoryCategoryGetResponses, ReportingCashSummaryGetData, ReportingCashSummaryGetError, ReportingCashSummaryGetErrors, ReportingCashSummaryGetResponse, ReportingCashSummaryGetResponses, ReportingClosingReportGetData, ReportingClosingReportGetError, ReportingClosingReportGetErrors, ReportingClosingReportGetResponse, ReportingClosingReportGetResponses, ReportingCustomersGetData, ReportingCustomersGetErrors, ReportingCustomersGetResponse, ReportingCustomersGetResponses, ReportingCustomersPaginatedGetData, ReportingCustomersPaginatedGetError, ReportingCustomersPaginatedGetErrors, ReportingCustomersPaginatedGetResponse, ReportingCustomersPaginatedGetResponses, ReportingDiscountDetail, ReportingDiscountsGetData, ReportingDiscountsGetErrors, ReportingDiscountsGetResponse, ReportingDiscountsGetResponses, ReportingInventoryGetData, ReportingInventoryGetErrors, ReportingInventoryGetResponse, ReportingInventoryGetResponses, ReportingInventoryItem, ReportingInventoryItemWritable, ReportingLoyaltySnapshotGetData, ReportingLoyaltySnapshotGetErrors, ReportingLoyaltySnapshotGetResponse, ReportingLoyaltySnapshotGetResponses, ReportingProductsGetData, ReportingProductsGetErrors, ReportingProductsGetResponse, ReportingProductsGetResponses, ReportingRegisterAdjustmentsGetData, ReportingRegisterAdjustmentsGetErrors, ReportingRegisterAdjustmentsGetResponse, ReportingRegisterAdjustmentsGetResponses, ReportingRegisterTransactionsGetData, ReportingRegisterTransactionsGetErrors, ReportingRegisterTransactionsGetResponse, ReportingRegisterTransactionsGetResponses, ReportingTransactionsGetData, ReportingTransactionsGetError, ReportingTransactionsGetErrors, ReportingTransactionsGetResponse, ReportingTransactionsGetResponses, RetagPlantRequest, RetireImmaturePlantsDetails, RetireImmaturePlantsRequest, RetirePlantRequest, Room, RoomPostData, RoomPostErrors, RoomPostResponse, RoomPostResponses, RoomRoomsGetData, RoomRoomsGetErrors, RoomRoomsGetResponse, RoomRoomsGetResponses, RoomWaste, SavedReceive, SetImageRequest, SetImageRequestWritable, SetImageResponse, Severity, Size, SizesGetData, SizesGetErrors, SizesGetResponse, SizesGetResponses, SplitBatchDetails, SplitImmaturePlantResult, SplitImmaturePlantResultApiResult, SplitImmaturePlantResultDetail, SplitImmaturePlantsRequest, SplitPlantDetails, StandardAllergensDetails, StrainDetail, StrainsGetData, StrainsGetErrors, StrainsGetResponse, StrainsGetResponses, StrainsPostData, StrainsPostError, StrainsPostErrors, StrainsPostResponse, StrainsPostResponses, StrainsTypesGetData, StrainsTypesGetErrors, StrainsTypesGetResponse, StrainsTypesGetResponses, StringIEnumerableOptional, StringOptional, SuccessResult, Table, TablePostData, TablePostErrors, TablePostResponse, TablePostResponses, TableTablesGetData, TableTablesGetErrors, TableTablesGetResponse, TableTablesGetResponses, Tag, TagGetData, TagGetErrors, TagGetResponse, TagGetResponses, TaxSummaryInfo, Terminal, TerminalsGetData, TerminalsGetErrors, TerminalsGetResponse, TerminalsGetResponses, Transaction, TransactionCreateAnonymousPostData, TransactionCreateAnonymousPostErrors, TransactionCreateAnonymousPostResponse, TransactionCreateAnonymousPostResponses, TransactionItem, TransactionItemWritable, TransactionWritable, Unit, UnitType, UpdateBatchLabResultsRequest, UpdateBatchRequest, UpdateDeliveryRouteDetailRequest, UpdateJournalEntryRequest, UpdatePackageTagsRequest, UpdatePlantDetails, UpdatePlantsRequest, UpdatePreOrderRequest, UpdateStrain, UploadFileType, UtilAuthorizationHeaderByApiKeyGetData, UtilAuthorizationHeaderByApiKeyGetResponse, UtilAuthorizationHeaderByApiKeyGetResponses, ValidationFailure, ValidationResult, ValidationResultWritable, VehicleDetail, VehiclesGetData, VehiclesGetErrors, VehiclesGetResponse, VehiclesGetResponses, VehiclesPostData, VehiclesPostError, VehiclesPostErrors, VehiclesPostResponses, Vendor, VendorPostData, VendorPostErrors, VendorPostResponse, VendorPostResponses, VendorVendorsGetData, VendorVendorsGetErrors, VendorVendorsGetResponse, VendorVendorsGetResponses, WasteGetData, WasteGetErrors, WasteGetResponse, WasteGetResponses, WasteHarvestWastePostData, WasteHarvestWastePostError, WasteHarvestWastePostErrors, WasteHarvestWastePostResponse, WasteHarvestWastePostResponses, WastePlantWastePostData, WastePlantWastePostError, WastePlantWastePostErrors, WastePlantWastePostResponse, WastePlantWastePostResponses, WasteSummary, WeeklyRecurrenceInfo, WhoamiGetData, WhoamiGetErrors, WhoamiGetResponse, WhoamiGetResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts index b25546e30..1b0c88c61 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | 'https://api.pos.dutchie.com' | (string & {}); -}; - export type Address = { addressId: number | null; customerId: number; @@ -10424,3 +10420,7 @@ export type WhoamiGetResponses = { }; export type WhoamiGetResponse = WhoamiGetResponses[keyof WhoamiGetResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | 'https://api.pos.dutchie.com' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/index.ts index b43a5238d..6d07fd466 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, BarReadWritable, BarWrite, BarWriteWritable, Baz, ClientOptions, Corge, CorgeWritable, FooRead, FooReadWritable, FooReadWrite, FooReadWriteWritable, FooWrite, FooWriteWritable, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, Quux, QuuxWritable, QuxAllRead } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts index 57871fe36..6c839b35d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type FooReadWrite = BarRead; export type FooRead = BarRead & { @@ -110,3 +106,7 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts index 28b3e9b1c..b507475fd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts @@ -1,7 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +export type Foo = unknown; + export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; - -export type Foo = unknown; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts index 2a9de6da4..8a3624bb4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/validators/valibot.gen.ts @@ -6,8 +6,8 @@ export const vBaz = v.optional(v.pipe(v.pipe(v.string(), v.regex(/foo\nbar/)), v export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar2)), - baz: v.optional(v.array(v.lazy(() => vFoo2))), + bar: v.optional(v.lazy(() => vBar)), + baz: v.optional(v.array(v.lazy(() => vFoo))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts index 2a149e830..d90f5b3af 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: string; }; @@ -13,3 +9,7 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/index.ts index b43a5238d..388b1ed17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts index f2bd4bfe8..31ed4dfc7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: string; [key: string]: any | string; @@ -21,3 +17,7 @@ export type Baz = Foo & { export type Qux = { [key: string]: any; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/index.ts index b43a5238d..388b1ed17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts index 4452f8fca..d67d3d123 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: string; [key: string]: unknown | string; @@ -21,3 +17,7 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts index d08207101..1097aeb99 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: { [key: string]: unknown; }; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts index 22248bd72..4ac068762 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: Array; }; export type Bar = string; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts index d998d02b5..6a8c31d0a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = Array<{ foo?: string; bar?: string; @@ -14,3 +10,7 @@ export type Foo = Array<{ foo?: string; bar?: string; }>; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/index.ts index c352c1047..de1daea43 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponse, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts index 5e6e1ffec..a1b061174 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body: string; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/index.ts index b43a5238d..46bcc346f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, ClientOptions, Foo, FooBar, FooBar2, FooBar3, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts index 0dd627bfc..54cfcc64e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/index.ts index b43a5238d..ccff152fd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, clientOptions, foo, fooBar, fooBar2, fooBar3, getFooData, getFooResponse, getFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts index 038783521..a29cd8ba6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type clientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; + +export type clientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/index.ts index b43a5238d..9f42252a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, ClientOptions, Foo, foo_bar, fooBar, FooBar, getFooData, getFooResponse, getFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts index d30a3e951..ef766fce0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/index.ts index b43a5238d..ca6918055 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _201, client_options, foo, foo_bar, foo_bar2, foo_bar3, get_foo_data, get_foo_response, get_foo_responses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts index 89b79fffe..954c678b2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type client_options = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * original name: 201 */ @@ -87,3 +83,7 @@ export type get_foo_responses = { }; export type get_foo_response = get_foo_responses[keyof get_foo_responses]; + +export type client_options = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts index 503e4d9f7..19fbb1057 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts index 503e4d9f7..19fbb1057 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/index.ts index ed64a0d62..cc7a9e9d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.ts'; -export * from './sdk.gen.ts'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.ts'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.ts'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/index.ts index 5556b3a70..e470e6cd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen.js'; -export * from './sdk.gen.js'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen.js'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen.js'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts index 0c479de03..7075ae04c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/index.ts index b43a5238d..542fd104b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts index 87f3a1faf..492b157bf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * Foo */ @@ -27,3 +23,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts index 2a6c26099..1d08e66f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/index.ts index b43a5238d..79c8f1087 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetBarData, GetBarResponse, GetBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts index 97bd27233..908d5cbec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -29,3 +25,7 @@ export type GetBarResponses = { }; export type GetBarResponse = GetBarResponses[keyof GetBarResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/index.ts index c352c1047..b8bd9b308 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts index 71bb11304..a2e7d5433 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/index.ts index b43a5238d..4d5281fcf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, BarMapped, BarUnion, Baz, BazMapped, BazUnion, ClientOptions, Foo, FooMapped, FooUnion, Qux, QuxExtend, QuxMapped } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts index 517394ec6..3bd1045c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { id: string; }; @@ -65,3 +61,7 @@ export type BazUnion = { }; export type QuxExtend = FooUnion; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/index.ts index b43a5238d..8bc58ce11 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Quux, Quuz, Qux, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts index 902f48ad5..a3d6081eb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ type?: 'Bar'; } & Bar) | ({ @@ -30,3 +26,7 @@ export type Quuz = ({ } & Baz) | ({ type?: 'non-ascii'; } & Spæcial); + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/index.ts index b43a5238d..85bc1ce95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts index 5fc5875d4..885b1c7d1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ foo: 'one' | 'two'; } & Bar) | ({ @@ -23,3 +19,7 @@ export type Baz = { export type Spæcial = { foo?: 'four'; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/index.ts index b43a5238d..8bc58ce11 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, Quux, Quuz, Qux, Spæcial } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts index 7637bb05f..73005d217 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ type: 'Bar'; } & Bar) | ({ @@ -30,3 +26,7 @@ export type Quuz = ({ } & Baz) | ({ type: 'non-ascii'; } & Spæcial); + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/index.ts index b43a5238d..756c467ff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, WeirdEnum } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts index 8ec65de2e..727f7529e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts @@ -1,10 +1,10 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * should not produce duplicate null */ export type WeirdEnum = '' | string | null; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts index b123b2122..63e849599 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: 'foo\'bar' | 'foo"bar'; }; export type Bar = 'foo\'bar' | 'foo"bar'; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/index.ts index 0339b6e31..1ad06511d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { type Bar, Baz, type ClientOptions, type Foo, FooEnum, FooEnum2, type GetFooData, type GetFooResponse, type GetFooResponses, type PostFooData, type PostFooResponse, type PostFooResponses, type PutFooData, type PutFooResponse, type PutFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts index f2de649af..e015b4866 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: FooEnum; }; @@ -75,3 +71,7 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/index.ts index 0339b6e31..1ad06511d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { type Bar, Baz, type ClientOptions, type Foo, FooEnum, FooEnum2, type GetFooData, type GetFooResponse, type GetFooResponses, type PostFooData, type PostFooResponse, type PostFooResponses, type PutFooData, type PutFooResponse, type PutFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts index 984824e60..0679a5270 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: FooEnum; }; @@ -77,3 +73,7 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/index.ts index b43a5238d..ef6a2e34f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, FooEnum, FooEnum2, GetFooData, GetFooResponse, GetFooResponses, PostFooData, PostFooResponse, PostFooResponses, PutFooData, PutFooResponse, PutFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts index 11923fa03..9163b485e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { type?: FooEnum; }; @@ -69,3 +65,7 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts index 3c6738766..614aee388 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -49,3 +45,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index f2ed061ad..e237043a8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -49,3 +45,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts index 10a93a00c..6502a3f45 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -49,3 +45,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts index 27c737876..23f30b6e6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -48,3 +44,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts index 1a540d879..32ab21b64 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -49,3 +45,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/index.ts index 0339b6e31..29fc48508 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, Arrays, type ClientOptions, Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts index 765fd48c8..d58a2d74b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -49,3 +45,7 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts index 17261bdc8..c8965f281 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index 4dadefd72..c97aa30dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts index 73e0c57a9..b840a69cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts index 18729b813..690678694 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts index f9011b1e2..a81c6479f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/index.ts index 0339b6e31..85ccf45bd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export * from './types.gen'; +export { _110, type Arrays, type ClientOptions, type Foo, MyFoo, MyFoo2, type MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts index e74fd5c76..a4ea1ca03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -41,3 +37,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/index.ts index b43a5238d..1ff6265c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _110, Arrays, ClientOptions, Foo, MyFoo, MyFoo2, MyFooRef, Numbers } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts index 143540e0b..28d7af1d6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -25,3 +21,7 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts index 49d10ce0f..0f113e601 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = 'foo' | 'bar' | null; export type Bar = 'foo' | 'bar'; export type Baz = 'foo' | 'bar'; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/index.ts index b43a5238d..542fd104b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts index bf1605beb..29f6d3874 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = string; export type PostFooData = { @@ -19,3 +15,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/index.ts index b43a5238d..148e0ddb8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, ExternalAllOfSchema, ExternalAnyOfSchema, ExternalArraySchema, ExternalDeepParam, ExternalDoubleNestedNumeric, ExternalDoubleNestedProp, ExternalIdParam, ExternalMixedBody, ExternalMixedProperties, ExternalModelBody, ExternalNestedBody, ExternalNestedNumericObjectA, ExternalNestedNumericObjectB, ExternalNestedObjectA, ExternalNestedObjectB, ExternalNumericParam, ExternalSchemaA, ExternalSchemaB, ExternalSchemaC, ExternalSchemaExternalProp, ExternalSchemaExternalPropAlias, ExternalSchemaPathA, ExternalSchemaPathB, ExternalSchemaPropertyA, ExternalSchemaPropertyB, ExternalSchemaPropertyC, ExternalSchemaPropertyD, ExternalShared1, ExternalSharedDeep, ExternalSharedExternalNested, ExternalSharedExternalNestedNumeric, ExternalSharedExternalSharedModel, ExternalSharedExternalSharedModelWithUuid, ExternalSharedId, ExternalSharedName, ExternalUnionSchema, ExternalUuidBody, ExternalUuidParam, GetExternalArrayData, GetExternalArrayResponse, GetExternalArrayResponses, GetExternalMixedData, GetExternalMixedResponse, GetExternalMixedResponses, GetExternalModelData, GetExternalModelError, GetExternalModelErrors, GetExternalModelResponse, GetExternalModelResponses, GetExternalNestedData, GetExternalNestedResponse, GetExternalNestedResponses, GetExternalPropertiesByIdData, GetExternalPropertiesByIdResponse, GetExternalPropertiesByIdResponses, GetExternalUnionData, GetExternalUnionResponse, GetExternalUnionResponses, GetExternalUuidData, GetExternalUuidResponse, GetExternalUuidResponses, PostExternalArrayData, PostExternalArrayResponse, PostExternalArrayResponses, PostExternalMixedData, PostExternalMixedResponse, PostExternalMixedResponses, PostExternalModelData, PostExternalModelError, PostExternalModelErrors, PostExternalModelResponse, PostExternalModelResponses, PostExternalNestedData, PostExternalNestedResponse, PostExternalNestedResponses, PostExternalUnionData, PostExternalUnionResponse, PostExternalUnionResponses, PutExternalUuidData, PutExternalUuidResponse, PutExternalUuidResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts index 888125c02..fb7cc6bd2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * External schema (A) */ @@ -470,3 +466,7 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/index.ts index c352c1047..6e377b474 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options, patchFoo, postFoo, putFoo } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses, PatchFooData, PatchFooResponse, PatchFooResponses, PostFooData, PostFooResponse, PostFooResponses, PutFooData, PutFooResponse, PutFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts index 5eee04adf..2df3499e6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body: string; headers: { @@ -76,3 +72,7 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts index c7e01dadf..1cc839174 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts @@ -42,42 +42,27 @@ const createQueryKey = (id: string, options?: TOptions export const createQueryKey2 = (options?: Options) => createQueryKey('create', options); export const createOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await create({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await create({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: createQueryKey2(options) }); -export const create2Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await create2({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const create2Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await create2({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const create3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await create3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const create3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await create3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/index.ts index c352c1047..56a790696 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { create, create2, create3, type Options } from './sdk.gen'; +export type { ClientOptions, Create2Data, Create2Responses, Create3Data, Create3Responses, CreateData, CreateResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts index fae694b9b..3b84b928c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type CreateData = { body?: never; path?: never; @@ -45,3 +41,7 @@ export type Create3Responses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/index.ts index b43a5238d..a0f3ce6aa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, ReactionRollup } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts index 9527534c3..a578569a9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * Reaction Rollup */ @@ -19,3 +15,7 @@ export type ReactionRollup = { eyes: number; rocket: number; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts index 437eada2f..52d79623a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { bar: string; } & { @@ -13,3 +9,7 @@ export type Foo = { bar?: string; baz?: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts index a007c1a31..626485d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ bar: string; } | { @@ -13,3 +9,7 @@ export type Foo = ({ bar?: string; baz?: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts index a007c1a31..626485d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = ({ bar: string; } | { @@ -13,3 +9,7 @@ export type Foo = ({ bar?: string; baz?: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/index.ts index b43a5238d..bda139c98 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts index fb2658a1b..bc6d278d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = 'foo' | 'bar'; export type Bar = { @@ -13,3 +9,7 @@ export type Bar = { export type Baz = { [key in Foo]?: number; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/index.ts index b43a5238d..70ba29e14 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, PostFooData, PostFooResponse, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts index 4c71cace9..c8043dbaa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -23,3 +19,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts index b9e75835b..aa0761eb1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); @@ -107,16 +104,10 @@ export const getFooInfiniteOptions = (options: Options) => infiniteQ queryKey: getFooInfiniteQueryKey(options) }); -export const postFooMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/index.ts index c352c1047..723af01ff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts index d8c37a6ba..71f2c1e40 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { page?: number | null; }; @@ -45,3 +41,7 @@ export type PostFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/index.ts index c352c1047..878d240fe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts index 62af858b9..4639723fb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { */ default: unknown; }; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/index.ts index c352c1047..878d240fe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { ClientOptions, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts index d564215cf..7e5ae0357 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type PostFooResponses = { */ default: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/index.ts index b43a5238d..1167f5800 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, PostFooData, PostFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts index bea1260fc..c455f81b4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PostFooData = { body?: never; path?: never; @@ -24,3 +20,7 @@ export type PostFooResponses = { */ default: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/index.ts index b43a5238d..1fbb9b41c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, MetadataObject, NestedPatternObject, PatternPropertiesResponse, PatternPropertiesTest, PostPatternTestData, PostPatternTestResponse, PostPatternTestResponses, UnionPatternObject } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts index df7deafb0..a99c8e749 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type PatternPropertiesTest = { id?: string; metadata?: MetadataObject; @@ -54,3 +50,7 @@ export type PostPatternTestResponses = { }; export type PostPatternTestResponse = PostPatternTestResponses[keyof PostPatternTestResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts index 2cb208158..feeaafc50 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,61 +9,49 @@ import type { ApiVVersionODataControllerCountData, ApiVVersionODataControllerCou @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public export(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public import(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public fooWow(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); - } - - public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple:operation', - ...options - }); - } + public export(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public import(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); } + + public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple:operation', + ...options + }); } } export class ODataControllerServiceRequests { - public apiVVersionODataControllerCount(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple/$count', - ...options - }); - } + public apiVVersionODataControllerCount(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple/$count', + ...options + }); } } export class VVersionServiceRequests { @@ -76,129 +64,103 @@ export class ApiServiceRequests { @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); - } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); - } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); } apiService = new ApiServiceRequests(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public deleteFoo(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', - ...options - }); - } - - public callWithParameters(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); - } - - public callWithWeirdParameterNames(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); - } - - public getCallWithOptionalParam(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/parameters', - ...options - }); - } - - public postCallWithOptionalParam(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters', - ...options - }); - } + public deleteFoo(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', + ...options + }); } + + public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); } + + public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); } + + public getCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/parameters', + ...options + }); } + + public postCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions', - ...options - }); - } + public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions', + ...options + }); } } @Injectable({ providedIn: 'root' }) @@ -206,406 +168,310 @@ export class DeprecatedServiceRequests { /** * @deprecated */ - public deprecatedCall(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/deprecated', - ...options - }); - } + public deprecatedCall(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/deprecated', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceRequests { - public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/requestBody', - ...options - }); - } + public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/requestBody', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class FormDataServiceRequests { - public postApiVbyApiVersionFormData(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/formData', - ...options - }); - } + public postApiVbyApiVersionFormData(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/formData', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); - } - - public callToTestOrderOfParams(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); - } + public callWithDefaultParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); } + + public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName2(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName3(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); - } - - public duplicateName4(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); - } + public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); } + + public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); - } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } + public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); - } - - public callWithResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithDuplicateResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); - } - - public callWithResponses(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); - } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); } + + public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); } + + public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); - } - - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); } + + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); - } + public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); - } + public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); - } + public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class UploadServiceRequests { - public uploadFile(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/upload', - ...options - }); - } + public uploadFile(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/upload', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceRequests { - public fileResponse(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/file/{id}', - ...options - }); - } + public fileResponse(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/file/{id}', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); - } - - public complexParams(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/complex/{id}', - ...options - }); - } + public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); } + + public complexParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/complex/{id}', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class MultipartServiceRequests { - public multipartResponse(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multipart', - ...options - }); - } - - public multipartRequest(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/multipart', - ...options - }); - } + public multipartResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multipart', + ...options + }); } + + public multipartRequest(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/multipart', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); - } + public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); - } + public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); } /** * Login User */ - public putWithFormUrlEncoded(options: Options): HttpRequest { - return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); - } + public putWithFormUrlEncoded(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public export(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).export(opts) : undefined; - }); - } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; - }); - } - - public import(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).import(opts) : undefined; - }); - } - - public fooWow(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; - }); - } - - public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; - }); - } + public export(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).export(opts) : undefined; }); } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } + + public import(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).import(opts) : undefined; }); } + + public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } + + public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; }); } } export class ODataControllerServiceResources { - public apiVVersionODataControllerCount(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; - }); - } + public apiVVersionODataControllerCount(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; }); } } export class VVersionServiceResources { @@ -618,103 +484,38 @@ export class ApiServiceResources { @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; - }); - } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; - }); - } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } apiService = new ApiServiceResources(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public deleteFoo(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; - }); - } - - public callWithParameters(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; - }); - } - - public callWithWeirdParameterNames(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; - }); - } - - public getCallWithOptionalParam(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; - }); - } - - public postCallWithOptionalParam(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; - }); - } + public deleteFoo(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; }); } + + public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } + + public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } + + public getCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; }); } + + public postCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; - }); - } + public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) @@ -722,291 +523,126 @@ export class DeprecatedServiceResources { /** * @deprecated */ - public deprecatedCall(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; - }); - } + public deprecatedCall(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceResources { - public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; - }); - } + public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class FormDataServiceResources { - public postApiVbyApiVersionFormData(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; - }); - } + public postApiVbyApiVersionFormData(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; - }); - } + public callWithDefaultParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; - }); - } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } - public callToTestOrderOfParams(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; - }); - } + public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; - }); - } - - public duplicateName2(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; - }); - } - - public duplicateName3(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; - }); - } - - public duplicateName4(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; - }); - } + public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } + + public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } + + public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } + + public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; - }); - } + public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; - }); - } - - public callWithResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; - }); - } - - public callWithDuplicateResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; - }); - } - - public callWithResponses(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; - }); - } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + + public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } + + public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } + + public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; - }); - } + public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; - }); - } + public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; - }); - } + public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(TypesServiceRequests).types(opts) : undefined; - }); - } + public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class UploadServiceResources { - public uploadFile(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; - }); - } + public uploadFile(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceResources { - public fileResponse(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; - }); - } + public fileResponse(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; - }); - } + public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } - public complexParams(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; - }); - } + public complexParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class MultipartServiceResources { - public multipartResponse(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; - }); - } + public multipartResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; }); } - public multipartRequest(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; - }); - } + public multipartRequest(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; - }); - } + public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; - }); - } + public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; - }); - } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } /** * Login User */ - public putWithFormUrlEncoded(options: () => Options | undefined) { - return httpResource(() => { - const opts = options ? options() : undefined; - return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; - }); - } + public putWithFormUrlEncoded(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; }); } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts index 474d7c8c6..2aeb7aacc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -348,248 +348,104 @@ export const putWithFormUrlEncodedRequest = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? exportRequest(opts) : undefined; -}); +export const exportResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? exportRequest(opts) : undefined; }); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; -}); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); -export const importResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? importRequest(opts) : undefined; -}); +export const importResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? importRequest(opts) : undefined; }); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? fooWowRequest(opts) : undefined; -}); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); -export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; -}); +export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; }); -export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; -}); +export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; }); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; -}); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); -export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deleteFooRequest(opts) : undefined; -}); +export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteFooRequest(opts) : undefined; }); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDescriptionsRequest(opts) : undefined; -}); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); /** * @deprecated */ -export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? deprecatedCallRequest(opts) : undefined; -}); +export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deprecatedCallRequest(opts) : undefined; }); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithParametersRequest(opts) : undefined; -}); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; -}); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); -export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? getCallWithOptionalParamRequest(opts) : undefined; -}); +export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithOptionalParamRequest(opts) : undefined; }); -export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postCallWithOptionalParamRequest(opts) : undefined; -}); +export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithOptionalParamRequest(opts) : undefined; }); -export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; -}); +export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; }); -export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; -}); +export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; }); -export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultParametersRequest(opts) : undefined; -}); +export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; -}); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callToTestOrderOfParamsRequest(opts) : undefined; -}); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateNameRequest(opts) : undefined; -}); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName2Request(opts) : undefined; -}); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName3Request(opts) : undefined; -}); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? duplicateName4Request(opts) : undefined; -}); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithNoContentResponseRequest(opts) : undefined; -}); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; -}); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyARequest(opts) : undefined; -}); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? dummyBRequest(opts) : undefined; -}); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponseRequest(opts) : undefined; -}); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithDuplicateResponsesRequest(opts) : undefined; -}); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResponsesRequest(opts) : undefined; -}); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? collectionFormatRequest(opts) : undefined; -}); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? typesRequest(opts) : undefined; -}); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); -export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? uploadFileRequest(opts) : undefined; -}); +export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? uploadFileRequest(opts) : undefined; }); -export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? fileResponseRequest(opts) : undefined; -}); +export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fileResponseRequest(opts) : undefined; }); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? complexTypesRequest(opts) : undefined; -}); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); -export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? multipartResponseRequest(opts) : undefined; -}); +export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartResponseRequest(opts) : undefined; }); -export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? multipartRequestRequest(opts) : undefined; -}); +export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartRequestRequest(opts) : undefined; }); -export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? complexParamsRequest(opts) : undefined; -}); +export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexParamsRequest(opts) : undefined; }); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? callWithResultFromHeaderRequest(opts) : undefined; -}); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? testErrorCodeRequest(opts) : undefined; -}); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; -}); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); /** * Login User */ -export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { - const opts = options ? options() : undefined; - return opts ? putWithFormUrlEncodedRequest(opts) : undefined; -}); +export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putWithFormUrlEncodedRequest(opts) : undefined; }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts index c352c1047..bbab0ca10 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, NestedSdkWithInstance, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 42a9481df..88a1b02c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,9 +23,23 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Domains extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } +} + +export class Providers extends HeyApiClient { + domains = new Domains({ client: this.client }); +} + +export class Business extends HeyApiClient { + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + + providers = new Providers({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +55,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Domains extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); - } - - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); - } -} - -export class Providers extends HeyApiClient { - domains = new Domains({ client: this.client }); -} - -export class Business extends HeyApiClient { - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); - } - - providers = new Providers({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class NestedSdkWithInstance extends HeyApiClient { @@ -74,18 +64,11 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - NestedSdkWithInstance.__registry.set(this, args?.key); - } + }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } - public putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); - } + public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/locations', ...options }); - } + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 8952a736a..133a54ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts index c352c1047..19b0bf7f4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Business, Domains, Locations, type Options, Providers } from './sdk.gen'; +export type { BusinessGetData, BusinessGetResponse, BusinessGetResponses, BusinessProvidersDomainsGetData, BusinessProvidersDomainsGetResponse, BusinessProvidersDomainsGetResponses, BusinessProvidersDomainsPostData, BusinessProvidersDomainsPostResponse, BusinessProvidersDomainsPostResponses, ClientOptions, GetData, GetResponse, GetResponses, PutBusinessProvidersDomainsData, PutBusinessProvidersDomainsResponse, PutBusinessProvidersDomainsResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index 8c055a5e4..bc2324ac0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,17 +19,11 @@ export type Options(options?: Options) { - return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } - public static putBusinessProvidersDomains(options?: Options) { - return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); - } + public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } } export class Providers { @@ -37,17 +31,13 @@ export class Providers { } export class Business { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } static providers = Providers; } export class Locations { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/locations', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 8952a736a..133a54ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -83,3 +79,7 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/index.ts index c352c1047..384678da6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { Bar, Foo, type Options, Sdk } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 09d2b380f..5196fa3c5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,9 +23,21 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } + }) { this.client = args?.client ?? client; } +} + +export class Bar extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } +} + +export class Foo extends HeyApiClient { + public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + + public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + + bar = new Bar({ client: this.client }); } class HeyApiRegistry { @@ -41,31 +53,7 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - -export class Bar extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); - } -} - -export class Foo extends HeyApiClient { - public post(options?: Options) { - return (options?.client ?? this.client).post({ url: '/foo', ...options }); - } - - public put(options?: Options) { - return (options?.client ?? this.client).put({ url: '/foo', ...options }); - } - - bar = new Bar({ client: this.client }); + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } } export class Sdk extends HeyApiClient { @@ -74,18 +62,11 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { - super(args); - Sdk.__registry.set(this, args?.key); - } + }) { super(args); Sdk.__registry.set(this, args?.key); } - public getFoo(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo', ...options }); - } + public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } - public getFooBar(options?: Options) { - return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); - } + public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index b443e6ac2..c73c5bad5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,7 +4,6 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -24,7 +23,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index 87d807f95..93212780a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/index.ts index c352c1047..8dc6d0499 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { type Options, postFoo } from './sdk.gen'; +export type { Bar, ClientOptions, Foo, PostFooData, PostFooResponse, PostFooResponses, TypeID, UserId } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index db455df67..37f15d4e5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,7 +2,6 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -22,7 +21,6 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), - responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index cc9dcf841..4d964f9a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,13 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { PostFooResponse } from './types.gen'; - -const fooSchemaResponseTransformer = (data: any) => { - data.foo = BigInt(data.foo.toString()); - return data; -}; - -export const postFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index 87d807f95..93212780a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -34,3 +30,7 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts index b43a5238d..b9f646d00 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Baz, ClientOptions, Foo, Foo2, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, PutFooWriteData, PutFooWriteResponse, PutFooWriteResponses, QuxAllRead, QuxAllWrite, ReadableBarRead, ReadableBarWrite, ReadableCorge, ReadableFooRead, ReadableFooReadWrite, ReadableFooReadWriteRef, ReadableFooReadWriteRef2, ReadableFooWrite, ReadableQuux, WritableBarRead, WritableBarWrite, WritableCorge, WritableFooRead, WritableFooReadWrite, WritableFooReadWriteRef, WritableFooReadWriteRef2, WritableFooWrite, WritableQuux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index 919e7c5de..9ba1ea451 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Baz = { baz?: string; }; @@ -164,3 +160,7 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts index b43a5238d..e1e97a46f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, BarWrite, Baz, ClientOptions, Corge, Foo, Foo2, FooRead, FooReadWrite, FooReadWriteRef, FooReadWriteRef2, FooWrite, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, PutFooWriteData, PutFooWriteResponse, PutFooWriteResponses, Quux, QuxAllRead, QuxAllWrite } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index 2660fdee6..ee224cabf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type FooReadWrite = BarRead & { foo?: string; }; @@ -140,3 +136,7 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index b92ab2076..26abe5f67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,70 +46,52 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 7bcd0d40e..1aef078ed 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,561 +46,423 @@ export const exportQueryKey = (options?: Options) => createQueryKey( export const exportQuery = defineQueryOptions((options?: Options) => ({ key: exportQueryKey(options), - query: async (context) => { - const { data } = await export_({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await export_({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const importMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await import_({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountQuery = defineQueryOptions((options?: Options) => ({ key: apiVVersionODataControllerCountQueryKey(options), - query: async (context) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationQuery = defineQueryOptions((options: Options) => ({ key: getApiVbyApiVersionSimpleOperationQueryKey(options), - query: async (context) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deleteFoo({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); /** * @deprecated */ export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await deprecatedCall({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamQuery = defineQueryOptions((options: Options) => ({ key: getCallWithOptionalParamQueryKey(options), - query: async (context) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options?: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { - const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { - const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { - const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { - const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { - const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { - const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await uploadFile({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseQuery = defineQueryOptions((options: Options) => ({ key: fileResponseQueryKey(options), - query: async (context) => { - const { data } = await fileResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await fileResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { - const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseQuery = defineQueryOptions((options?: Options) => ({ key: multipartResponseQueryKey(options), - query: async (context) => { - const { data } = await multipartResponse({ - ...options, - ...context, - throwOnError: true - }); - return data; - } + query: async (context) => { const { data } = await multipartResponse({ + ...options, + ...context, + throwOnError: true + }); return data; } })); export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await multipartRequest({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await complexParams({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); /** * Login User */ export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } + mutation: async (vars) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...vars, + throwOnError: true + }); return data; } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 6f71bcc40..058ef89f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index 5b07cde6a..d577b3aff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 6cc80fb17..41213b036 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index b144ed7a2..6d7c758df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 74f3f999f..077353a6c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index 38403265b..8f9f18754 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index 378082bd0..d5b97ba94 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 43c90277c..52077bd6b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 908344e1b..3be7126b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index 203534a86..4a5b4971c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index 358caac28..548d90159 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index ba1febdda..6e56543cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 4f7ad47a7..8a3f1dff8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index 9e78e66d2..a66a84de1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { - const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index 7e81c3731..346c579b6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 6a831b5b3..9b44f31cf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { - const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 767635c77..1d7442c84 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/index.ts index c352c1047..bb82b04c1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { BarBazService, BarService, FooBazService, FooService, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 8b221a746..320f1fb34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,39 +19,27 @@ export type Options(options?: Options) { - return (options?.client ?? client).post({ url: '/foo/bar', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo/bar', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } } export class FooService { - public static post(options?: Options) { - return (options?.client ?? client).post({ url: '/foo', ...options }); - } + public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } - public static put(options?: Options) { - return (options?.client ?? client).put({ url: '/foo', ...options }); - } + public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { - return (options?.client ?? client).get({ url: '/foo', ...options }); - } + public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { - return (options?.client ?? client).get({ url: '/foo/bar', ...options }); - } + public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index f839621a3..0d2884d1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,246 +43,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -339,423 +252,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { - const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts index 54ea996fa..c2d694089 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index bbcab4d5a..b68fd8934 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,246 +42,159 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -338,423 +251,285 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/index.ts index c352c1047..62e4bbff0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { apiVVersionODataControllerCount, callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexParams, complexTypes, deleteCallWithoutParametersAndResponse, deleteFoo, deprecatedCall, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, export_, fileResponse, fooWow, getApiVbyApiVersionSimpleOperation, getCallWithOptionalParam, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, import_, multipartRequest, multipartResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionFormData, postApiVbyApiVersionRequestBody, postCallWithOptionalParam, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, putWithFormUrlEncoded, testErrorCode, types, uploadFile } from './sdk.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index bfd35f1d6..6ed25f5f3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,85 +42,55 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { - const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { - const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); - return data; - } - }; - return mutationOptions; -}; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); return data; } +}; return mutationOptions; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/index.ts index c352c1047..b3d19ebcd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { fooBarPost, fooBarPut, fooPost, fooPut, getFoo, getFooBar, type Options } from './sdk.gen'; +export type { ClientOptions, FooBarPostData, FooBarPostResponse, FooBarPostResponses, FooBarPutData, FooBarPutResponse, FooBarPutResponses, FooPostData, FooPostResponse, FooPostResponses, FooPutData, FooPutResponse, FooPutResponses, GetFooBarData, GetFooBarResponse, GetFooBarResponses, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 836288372..4001df3e9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -99,3 +95,7 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/index.ts index b43a5238d..23a520d0c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts index a6d8bf5f5..b16291237 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; - /** * Model with number-only name */ @@ -2089,3 +2085,7 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; + +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts index b6a706cae..f2c944329 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/valibot/default/valibot.gen.ts @@ -343,7 +343,7 @@ export const vDeprecatedModel = v.object({ * This is a model with one property containing a circular reference */ export const vModelWithCircularReference: v.GenericSchema = v.object({ - prop: v.optional(v.lazy(() => vModelWithCircularReference2)) + prop: v.optional(v.lazy(() => vModelWithCircularReference)) }); /** diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/index.ts index b43a5238d..ca48b1c64 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts index 1f0922044..ec2aea840 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: Array<{ baz: Bar | null; @@ -29,3 +25,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts index afabab20e..a40131f08 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: string; baz?: string; @@ -14,3 +10,7 @@ export type Bar = Foo & { foo: string; baz: string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts index ac23756f1..2faa0ef99 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: string; baz?: string; @@ -12,3 +8,7 @@ export type Foo = { export type Bar = Foo & { bar: number; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/index.ts index b43a5238d..757bc07b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts index ac23756f1..2faa0ef99 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: string; baz?: string; @@ -12,3 +8,7 @@ export type Foo = { export type Bar = Foo & { bar: number; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts index 678965434..692c9e20a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: 'foo'; bar?: 3.2; @@ -39,3 +35,7 @@ export type Foo = { stringInt64?: '-9223372036854775808'; stringUint64?: '18446744073709551615'; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/index.ts index c352c1047..afbfb3822 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getBar, getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetBarData, GetBarResponses, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts index 41519aa51..7cd25c229 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -31,3 +27,7 @@ export type GetBarResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/index.ts index c352c1047..14b322279 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts index f0896eeea..579f645ec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -17,3 +13,7 @@ export type GetFooResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts index d7a0ac461..02482e56a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -19,3 +15,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts index d3fe8ca92..ea6b3e42a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts index e8552bf4d..a360dc82e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts index d3fe8ca92..ea6b3e42a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts index d3fe8ca92..ea6b3e42a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts index e8552bf4d..a360dc82e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/index.ts index c352c1047..f08474c60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { eventSubscribe, type Options } from './sdk.gen'; +export type { AgentPart, AssistantMessage, ClientOptions, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, FilePart, FilePartSource, FilePartSourceText, FileSource, Message, MessageAbortedError, MessageOutputLengthError, Part, PatchPart, Permission, ProviderAuthError, Range, ReasoningPart, Session, SnapshotPart, StepFinishPart, StepStartPart, SymbolSource, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, UnknownError, UserMessage } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts index d3fe8ca92..ea6b3e42a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Range = { start: { line: number; @@ -525,3 +521,7 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts index 21f18eeea..521723fb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts @@ -1,9 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo?: Array; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/index.ts index b43a5238d..2a71f7a3a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { Bar, Baz, ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses, Qux } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts index 1aa399baf..d535c1ec3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts @@ -1,31 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetFooResponse } from './types.gen'; +const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { + data.baz = new Date(data.baz); +} return data; }; -const fooSchemaResponseTransformer = (data: any) => { - data.foo = data.foo.map((item: any) => barSchemaResponseTransformer(item)); - return data; -}; - -const barSchemaResponseTransformer = (data: any) => { - data.foo = data.foo.map((item: any) => bazSchemaResponseTransformer(item)); - return data; -}; - -const bazSchemaResponseTransformer = (data: any) => { - data = quxSchemaResponseTransformer(data); - data.bar = new Date(data.bar); - return data; -}; - -const quxSchemaResponseTransformer = (data: any) => { - if (data.baz) { - data.baz = new Date(data.baz); - } - return data; -}; - -export const getFooResponseTransformer = async (data: any): Promise => { - data = fooSchemaResponseTransformer(data); - return data; -}; +const bazSchemaResponseTransformer = (data: any) => { data.bar = new Date(data.bar); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts index f3fe6fe4c..e2bd16164 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { foo: Array; }; @@ -44,3 +40,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/index.ts index b43a5238d..29d14e875 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo, GetFooData, GetFooResponse, GetFooResponses, NestedDateObject, NestedDateObjectData, NestedDateObjectResponse, NestedDateObjectResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts index 3d9ad6386..7f1d0859a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts @@ -1,7 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetFooResponse, NestedDateObjectResponse } from './types.gen'; - const fooSchemaResponseTransformer = (data: any) => { if (data.foo) { data.foo = new Date(data.foo); @@ -18,21 +16,8 @@ const fooSchemaResponseTransformer = (data: any) => { return data; }; -export const getFooResponseTransformer = async (data: any): Promise => { - data = data.map((item: any) => fooSchemaResponseTransformer(item)); - return data; -}; - -const nestedDateObjectSchemaResponseTransformer = (data: any) => { - if (data.foo) { - if (data.foo.bar) { - data.foo.bar = new Date(data.foo.bar); - } +const nestedDateObjectSchemaResponseTransformer = (data: any) => { if (data.foo) { + if (data.foo.bar) { + data.foo.bar = new Date(data.foo.bar); } - return data; -}; - -export const nestedDateObjectResponseTransformer = async (data: any): Promise => { - data = nestedDateObjectSchemaResponseTransformer(data); - return data; -}; +} return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts index 354c5b6e2..ab403042b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - /** * Object with a nested date structure */ @@ -51,3 +47,7 @@ export type NestedDateObjectResponses = { }; export type NestedDateObjectResponse = NestedDateObjectResponses[keyof NestedDateObjectResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/index.ts index b43a5238d..f389f8554 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts index fc50ee927..55875bf9f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts @@ -2,10 +2,4 @@ import type { GetFooResponse } from './types.gen'; -export const getFooResponseTransformer = async (data: any): Promise => { - data.foo = data.foo.map((item: any) => { - item.baz = new Date(item.baz); - return item; - }); - return data; -}; +export const getFooResponseTransformer = async (data: any): Promise => { data.foo = data.foo.map((item: any) => { item.baz = new Date(item.baz); return item; }); return data; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts index fd57de924..89be77eab 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -23,3 +19,7 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/index.ts index b43a5238d..23bdcc7e3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, GetTreeData, GetTreeResponse, GetTreeResponses, TreeNode } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts index 397ecdc84..deb93e030 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts @@ -1,7 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { GetTreeResponse } from './types.gen'; - const treeNodeSchemaResponseTransformer = (data: any) => { if (data.createdAt) { data.createdAt = new Date(data.createdAt); @@ -11,8 +9,3 @@ const treeNodeSchemaResponseTransformer = (data: any) => { } return data; }; - -export const getTreeResponseTransformer = async (data: any): Promise => { - data = data.map((item: any) => treeNodeSchemaResponseTransformer(item)); - return data; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts index 5a46bbbd8..359bc54e8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type TreeNode = { id?: string; name?: string; @@ -26,3 +22,7 @@ export type GetTreeResponses = { }; export type GetTreeResponse = GetTreeResponses[keyof GetTreeResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/index.ts index b43a5238d..8bcf14534 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, CreateItemRequest, CreateItemRequestWritable, ItemCreateData, ItemCreateResponses, Payload, PayloadWritable } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts index 13302b480..ba16391c9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type CreateItemRequest = { payload: Payload; }; @@ -37,3 +33,7 @@ export type ItemCreateResponses = { */ 201: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/index.ts index b43a5238d..035710042 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Item, ItemListData, ItemListResponse, ItemListResponse2, ItemListResponses, ItemListResponseWritable, ItemWritable } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts index 266d69175..9ae71d221 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type ItemListResponse = { items: Array; }; @@ -43,3 +39,7 @@ export type ItemListResponses = { }; export type ItemListResponse2 = ItemListResponses[keyof ItemListResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/index.ts index b43a5238d..60381d055 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { BarRead, BarReadWritable, BarWrite, BarWriteWritable, Baz, ClientOptions, Corge, CorgeWritable, Foo, Foo2, FooRead, FooReadWritable, FooReadWrite, FooReadWriteRef, FooReadWriteRef2, FooReadWriteRef2Writable, FooReadWriteRefWritable, FooReadWriteWritable, FooWrite, FooWriteWritable, PostFooReadData, PostFooReadResponse, PostFooReadResponses, PostFooReadWriteData, PostFooReadWriteResponse, PostFooReadWriteResponses, PostFooWriteData, PostFooWriteResponse, PostFooWriteResponses, PutFooWriteData, PutFooWriteResponse, PutFooWriteResponses, Quux, QuuxWritable, QuxAllRead, QuxAllWrite } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts index 039f4a8ef..a23498084 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type FooReadWrite = BarRead; export type FooRead = BarRead & { @@ -164,3 +160,7 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts index 28b3e9b1c..b507475fd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts @@ -1,7 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +export type Foo = unknown; + export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; - -export type Foo = unknown; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/index.ts index b43a5238d..555bf9ff2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, Foo } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts index 248263eaf..36097cc14 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts @@ -1,9 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Foo = { bar?: number | boolean | string; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts index e687e2f6b..1dc875c6b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref-2/valibot.gen.ts @@ -3,7 +3,7 @@ import * as v from 'valibot'; export const vBar: v.GenericSchema = v.strictObject({ - bar: v.union([v.array(v.lazy(() => vBar2)), v.null()]) + bar: v.union([v.array(v.lazy(() => vBar)), v.null()]) }); export const vFoo = v.strictObject({ diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts index 6ce5d2980..090aa6a3a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-circular-ref/valibot.gen.ts @@ -3,14 +3,14 @@ import * as v from 'valibot'; export const vBar: v.GenericSchema = v.object({ - bar: v.optional(v.array(v.lazy(() => vBar2))) + bar: v.optional(v.array(v.lazy(() => vBar))) }); export const vFoo = v.object({ foo: v.optional(vBar) }); -export const vBaz: v.GenericSchema = v.lazy(() => vQux2); +export const vBaz: v.GenericSchema = v.lazy(() => vQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts index c238f261c..149a0044b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-metadata/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/)), v.metadata({ description: 'This is foo property.' }))), - bar: v.optional(v.lazy(() => vBar2)), - baz: v.optional(v.pipe(v.array(v.lazy(() => vFoo4)), v.metadata({ description: 'This is baz property.' }))), + bar: v.optional(v.lazy(() => vBar)), + baz: v.optional(v.pipe(v.array(v.lazy(() => vFoo)), v.metadata({ description: 'This is baz property.' }))), qux: v.optional(v.pipe(v.pipe(v.number(), v.integer(), v.gtValue(0)), v.metadata({ description: 'This is qux property.' })), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts index 64eb904ba..b5a5dfce3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators-types/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar2)), - baz: v.optional(v.array(v.lazy(() => vFoo4))), + bar: v.optional(v.lazy(() => vBar)), + baz: v.optional(v.array(v.lazy(() => vFoo))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts index 64eb904ba..b5a5dfce3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/validators/valibot.gen.ts @@ -13,8 +13,8 @@ export const vQux = v.record(v.string(), v.object({ */ export const vFoo: v.GenericSchema = v.optional(v.union([v.object({ foo: v.optional(v.pipe(v.string(), v.regex(/^\d{3}-\d{2}-\d{4}$/))), - bar: v.optional(v.lazy(() => vBar2)), - baz: v.optional(v.array(v.lazy(() => vFoo4))), + bar: v.optional(v.lazy(() => vBar)), + baz: v.optional(v.array(v.lazy(() => vFoo))), qux: v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0)), 0) }), v.null()]), null); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/index.ts index b43a5238d..2acb41800 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; +export type { ClientOptions, SessionAlertWebhookPayload, SessionAlertWebhookRequest, SessionEndedWebhookPayload, SessionEndedWebhookRequest, SessionLiveStreamingStartedWebhookPayload, SessionLiveStreamingStartedWebhookRequest, SessionLiveStreamingStoppedWebhookPayload, SessionLiveStreamingStoppedWebhookRequest, SessionRecordingCompletedWebhookPayload, SessionRecordingCompletedWebhookRequest, SessionRecordingDeletedWebhookPayload, SessionRecordingDeletedWebhookRequest, SessionRecordingPausedWebhookPayload, SessionRecordingPausedWebhookRequest, SessionRecordingRecoveredWebhookPayload, SessionRecordingRecoveredWebhookRequest, SessionRecordingResumedWebhookPayload, SessionRecordingResumedWebhookRequest, SessionRecordingStartedWebhookPayload, SessionRecordingStartedWebhookRequest, SessionRecordingStoppedWebhookPayload, SessionRecordingStoppedWebhookRequest, SessionRecordingTranscriptCompletedWebhookPayload, SessionRecordingTranscriptCompletedWebhookRequest, SessionRecordingTranscriptFailedWebhookPayload, SessionRecordingTranscriptFailedWebhookRequest, SessionRecordingTrashedWebhookPayload, SessionRecordingTrashedWebhookRequest, SessionSharingEndedWebhookPayload, SessionSharingEndedWebhookRequest, SessionSharingStartedWebhookPayload, SessionSharingStartedWebhookRequest, SessionStartedWebhookPayload, SessionStartedWebhookRequest, SessionStreamIngestionConnectedWebhookPayload, SessionStreamIngestionConnectedWebhookRequest, SessionStreamIngestionDisconnectedWebhookPayload, SessionStreamIngestionDisconnectedWebhookRequest, SessionStreamIngestionStartedWebhookPayload, SessionStreamIngestionStartedWebhookRequest, SessionStreamIngestionStoppedWebhookPayload, SessionStreamIngestionStoppedWebhookRequest, SessionStreamIngestionUnbindWebhookPayload, SessionStreamIngestionUnbindWebhookRequest, SessionUserJoinedWebhookPayload, SessionUserJoinedWebhookRequest, SessionUserLeftWebhookPayload, SessionUserLeftWebhookRequest, SessionUserPhoneCalloutAcceptedWebhookPayload, SessionUserPhoneCalloutAcceptedWebhookRequest, SessionUserPhoneCalloutCanceledWebhookPayload, SessionUserPhoneCalloutCanceledWebhookRequest, SessionUserPhoneCalloutMissedWebhookPayload, SessionUserPhoneCalloutMissedWebhookRequest, SessionUserPhoneCalloutRejectedWebhookPayload, SessionUserPhoneCalloutRejectedWebhookRequest, SessionUserPhoneCalloutRingingWebhookPayload, SessionUserPhoneCalloutRingingWebhookRequest, SessionUserRoomSystemCalloutAcceptedWebhookPayload, SessionUserRoomSystemCalloutAcceptedWebhookRequest, SessionUserRoomSystemCalloutFailedWebhookPayload, SessionUserRoomSystemCalloutFailedWebhookRequest, SessionUserRoomSystemCalloutMissedWebhookPayload, SessionUserRoomSystemCalloutMissedWebhookRequest, SessionUserRoomSystemCalloutRejectedWebhookPayload, SessionUserRoomSystemCalloutRejectedWebhookRequest, SessionUserRoomSystemCalloutRingingWebhookPayload, SessionUserRoomSystemCalloutRingingWebhookRequest, Webhooks } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts index 96b1cbfb0..975abdc96 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts @@ -1,11 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - -export type Webhooks = SessionUserPhoneCalloutRingingWebhookRequest | SessionUserRoomSystemCalloutRingingWebhookRequest | SessionRecordingStartedWebhookRequest | SessionRecordingResumedWebhookRequest | SessionLiveStreamingStoppedWebhookRequest | SessionStreamIngestionStoppedWebhookRequest | SessionUserRoomSystemCalloutRejectedWebhookRequest | SessionAlertWebhookRequest | SessionSharingEndedWebhookRequest | SessionRecordingPausedWebhookRequest | SessionEndedWebhookRequest | SessionStartedWebhookRequest | SessionStreamIngestionUnbindWebhookRequest | SessionLiveStreamingStartedWebhookRequest | SessionUserRoomSystemCalloutMissedWebhookRequest | SessionUserPhoneCalloutAcceptedWebhookRequest | SessionUserLeftWebhookRequest | SessionSharingStartedWebhookRequest | SessionUserPhoneCalloutCanceledWebhookRequest | SessionRecordingTranscriptCompletedWebhookRequest | SessionRecordingDeletedWebhookRequest | SessionUserRoomSystemCalloutFailedWebhookRequest | SessionRecordingCompletedWebhookRequest | SessionRecordingTranscriptFailedWebhookRequest | SessionRecordingTrashedWebhookRequest | SessionUserJoinedWebhookRequest | SessionStreamIngestionStartedWebhookRequest | SessionStreamIngestionConnectedWebhookRequest | SessionStreamIngestionDisconnectedWebhookRequest | SessionRecordingRecoveredWebhookRequest | SessionUserPhoneCalloutMissedWebhookRequest | SessionUserPhoneCalloutRejectedWebhookRequest | SessionUserRoomSystemCalloutAcceptedWebhookRequest | SessionRecordingStoppedWebhookRequest; - /** * # session.user_phone_callout_ringing * @@ -3337,3 +3331,9 @@ export type SessionRecordingStoppedWebhookRequest = { path?: never; query?: never; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + +export type Webhooks = SessionUserPhoneCalloutRingingWebhookRequest | SessionUserRoomSystemCalloutRingingWebhookRequest | SessionRecordingStartedWebhookRequest | SessionRecordingResumedWebhookRequest | SessionLiveStreamingStoppedWebhookRequest | SessionStreamIngestionStoppedWebhookRequest | SessionUserRoomSystemCalloutRejectedWebhookRequest | SessionAlertWebhookRequest | SessionSharingEndedWebhookRequest | SessionRecordingPausedWebhookRequest | SessionEndedWebhookRequest | SessionStartedWebhookRequest | SessionStreamIngestionUnbindWebhookRequest | SessionLiveStreamingStartedWebhookRequest | SessionUserRoomSystemCalloutMissedWebhookRequest | SessionUserPhoneCalloutAcceptedWebhookRequest | SessionUserLeftWebhookRequest | SessionSharingStartedWebhookRequest | SessionUserPhoneCalloutCanceledWebhookRequest | SessionRecordingTranscriptCompletedWebhookRequest | SessionRecordingDeletedWebhookRequest | SessionUserRoomSystemCalloutFailedWebhookRequest | SessionRecordingCompletedWebhookRequest | SessionRecordingTranscriptFailedWebhookRequest | SessionRecordingTrashedWebhookRequest | SessionUserJoinedWebhookRequest | SessionStreamIngestionStartedWebhookRequest | SessionStreamIngestionConnectedWebhookRequest | SessionStreamIngestionDisconnectedWebhookRequest | SessionRecordingRecoveredWebhookRequest | SessionUserPhoneCalloutMissedWebhookRequest | SessionUserPhoneCalloutRejectedWebhookRequest | SessionUserRoomSystemCalloutAcceptedWebhookRequest | SessionRecordingStoppedWebhookRequest; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts index a168141eb..5068e1622 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -62,15 +59,12 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts index 5a6a25034..0d9548a97 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -62,15 +59,12 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts index 8b6d32356..4058551ff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -62,15 +59,12 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts index 4c50bd620..164a8f8e5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -62,15 +59,12 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts index 4793f41da..f642547c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts @@ -42,15 +42,12 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -62,15 +59,12 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { - const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); - return data; - }, + queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); return data; }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/index.ts index c352c1047..afbfb3822 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { getBar, getFoo, type Options } from './sdk.gen'; +export type { ClientOptions, GetBarData, GetBarResponses, GetFooData, GetFooResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts index 41519aa51..7cd25c229 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type GetFooData = { body?: never; path?: never; @@ -31,3 +27,7 @@ export type GetBarResponses = { */ 200: unknown; }; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts index 2f1bff95d..94fadaece 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts @@ -19,682 +19,460 @@ export type Options(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/accounting-company-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1AccountingCompanyMembershipsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static putApiV1AccountingCompanyMemberships(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/accounting-company-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1AccountingCompanyMembershipsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); } + + public static get api() { return Api; } } export class BankAccounts { - public static putApiV1BankAccounts(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/bank-accounts', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1BankAccountsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static putApiV1BankAccounts(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/bank-accounts', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1BankAccountsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); } + + public static get api() { return Api; } } export class BusinessAccountantAssignments { - public static putApiV1BusinessAccountantAssignments(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/business-accountant-assignments', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1BusinessAccountantAssignmentsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static putApiV1BusinessAccountantAssignments(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/business-accountant-assignments', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1BusinessAccountantAssignmentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); } + + public static get api() { return Api; } } export class BusinessDocumentActivities { - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); - } + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); } } export class BusinessDocuments { - public static getApiV1BusinessDocumentsByIdRaw(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); - } - - public static postApiV1BusinessDocuments(options?: Options) { - return (options?.client ?? client).post({ - ...formDataBodySerializer, - url: '/api/v1/business-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); - } - - public static deleteApiV1BusinessDocumentsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/business-documents/{id}', ...options }); - } - - public static putApiV1BusinessDocumentsById(options: Options) { - return (options.client ?? client).put({ - url: '/api/v1/business-documents/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1BusinessDocumentsByIdApprove(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); - } - - public static postApiV1BusinessDocumentsByIdUnapprove(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); - } - - public static postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); - } - - public static postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/business-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static getApiV1BusinessDocumentsByIdRaw(options: Options) { return (options.client ?? client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); } + + public static postApiV1BusinessDocuments(options?: Options) { return (options?.client ?? client).post({ + ...formDataBodySerializer, + url: '/api/v1/business-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); } + + public static deleteApiV1BusinessDocumentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/business-documents/{id}', ...options }); } + + public static putApiV1BusinessDocumentsById(options: Options) { return (options.client ?? client).put({ + url: '/api/v1/business-documents/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1BusinessDocumentsByIdApprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); } + + public static postApiV1BusinessDocumentsByIdUnapprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); } + + public static postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); } + + public static postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/business-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); } + + public static get api() { return Api; } } export class BusinessDocumentsSummaries { /** * @deprecated */ - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); - } + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); } - public static get api() { - return Api2; - } + public static get api() { return Api; } } export class Businesses { - public static getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); - } - - public static postApiV1Businesses(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/businesses', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1BusinessesById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/businesses/{id}', ...options }); - } - - public static putApiV1BusinessesById(options: Options) { - return (options.client ?? client).put({ - url: '/api/v1/businesses/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static putApiV1BusinessesByIdContact(options: Options) { - return (options.client ?? client).put({ - url: '/api/v1/businesses/{id}/contact', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1BusinessesByIdDisconnect(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); - } - - public static key(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); - } - - public static get api() { - return Api2; - } + public static getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { return (options.client ?? client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); } + + public static postApiV1Businesses(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/businesses', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1BusinessesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/businesses/{id}', ...options }); } + + public static putApiV1BusinessesById(options: Options) { return (options.client ?? client).put({ + url: '/api/v1/businesses/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static putApiV1BusinessesByIdContact(options: Options) { return (options.client ?? client).put({ + url: '/api/v1/businesses/{id}/contact', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1BusinessesByIdDisconnect(options: Options) { return (options.client ?? client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); } + + public static key(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); } + + public static get api() { return Api; } } export class BusinessSummaries { - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); - } + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); } - public static get api() { - return Api2; - } + public static get api() { return Api; } } export class Counterparties { - public static postApiV1Counterparties(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/counterparties', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1CounterpartiesById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/counterparties/{id}', ...options }); - } - - public static patchApiV1CounterpartiesById(options: Options) { - return (options.client ?? client).patch({ - url: '/api/v1/counterparties/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static postApiV1Counterparties(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/counterparties', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1CounterpartiesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/counterparties/{id}', ...options }); } + + public static patchApiV1CounterpartiesById(options: Options) { return (options.client ?? client).patch({ + url: '/api/v1/counterparties/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); } + + public static get api() { return Api; } } export class DataBoxCredentials { - public static putApiV1DataBoxCredentials(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/data-box-credentials', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1DataBoxCredentialsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static putApiV1DataBoxCredentials(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/data-box-credentials', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1DataBoxCredentialsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); } + + public static get api() { return Api; } } export class DocumentTypes { - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); - } + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); } - public static get api() { - return Api2; - } + public static get api() { return Api; } } export class Invitations { - public static postApiV1Invitations(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/invitations', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static postApiV1InvitationsByIdAccept(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/invitations/{id}/accept', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1InvitationsByIdReject(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); - } - - public static deleteApiV1InvitationsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/invitations/{id}', ...options }); - } - - public static patchApiV1InvitationsById(options: Options) { - return (options.client ?? client).patch({ - url: '/api/v1/invitations/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static postApiV1Invitations(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/invitations', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static postApiV1InvitationsByIdAccept(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/invitations/{id}/accept', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1InvitationsByIdReject(options: Options) { return (options.client ?? client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); } + + public static deleteApiV1InvitationsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/invitations/{id}', ...options }); } + + public static patchApiV1InvitationsById(options: Options) { return (options.client ?? client).patch({ + url: '/api/v1/invitations/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); } + + public static get api() { return Api; } } export class Invoices { - public static postApiV1Invoices(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/invoices', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1InvoicesById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/invoices/{id}', ...options }); - } - - public static patchApiV1InvoicesById(options: Options) { - return (options.client ?? client).patch({ - url: '/api/v1/invoices/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static getApiV1InvoicesByIdPreview(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); - } - - public static postApiV1InvoicesByIdSend(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/invoices/{id}/send', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1InvoicesByIdSnapshot(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static postApiV1Invoices(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/invoices', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1InvoicesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/invoices/{id}', ...options }); } + + public static patchApiV1InvoicesById(options: Options) { return (options.client ?? client).patch({ + url: '/api/v1/invoices/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static getApiV1InvoicesByIdPreview(options: Options) { return (options.client ?? client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); } + + public static postApiV1InvoicesByIdSend(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/invoices/{id}/send', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1InvoicesByIdSnapshot(options: Options) { return (options.client ?? client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); } + + public static get api() { return Api; } } export class InvoiceSettings { - public static putApiV1InvoiceSettings(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/invoice-settings', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static putApiV1InvoiceSettings(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/invoice-settings', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); } + + public static get api() { return Api; } } export class Licenses { - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); - } + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); } - public static get api() { - return Api2; - } + public static get api() { return Api; } } export class PersonalDocuments { - public static getApiV1PersonalDocumentsByIdRaw(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); - } - - public static postApiV1PersonalDocuments(options?: Options) { - return (options?.client ?? client).post({ - ...formDataBodySerializer, - url: '/api/v1/personal-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); - } - - public static postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/personal-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static deleteApiV1PersonalDocumentsById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); - } - - public static getApiV1PersonalDocumentsSummary(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/personal-documents/summary', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static getApiV1PersonalDocumentsByIdRaw(options: Options) { return (options.client ?? client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); } + + public static postApiV1PersonalDocuments(options?: Options) { return (options?.client ?? client).post({ + ...formDataBodySerializer, + url: '/api/v1/personal-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); } + + public static postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/personal-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static deleteApiV1PersonalDocumentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); } + + public static getApiV1PersonalDocumentsSummary(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/personal-documents/summary', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); } + + public static get api() { return Api; } } export class RecurringTasks { - public static postApiV1RecurringTasks(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/recurring-tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1RecurringTasksById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); - } - - public static patchApiV1RecurringTasksById(options: Options) { - return (options.client ?? client).patch({ - url: '/api/v1/recurring-tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); - } - - public static get api() { - return Api2; - } + public static postApiV1RecurringTasks(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/recurring-tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1RecurringTasksById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); } + + public static patchApiV1RecurringTasksById(options: Options) { return (options.client ?? client).patch({ + url: '/api/v1/recurring-tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); } + + public static get api() { return Api; } } export class Tasks { - public static postApiV1Tasks(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static putApiV1TasksById(options: Options) { - return (options.client ?? client).put({ - url: '/api/v1/tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1TasksByIdSubmit(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/tasks/{id}/submit', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static postApiV1TasksByIdApprove(options: Options) { - return (options.client ?? client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); - } - - public static postApiV1TasksByIdReject(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/tasks/{id}/reject', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static getApiV1TasksByIdComments(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); - } - - public static getApiV1TasksByIdDocuments(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); - } - - public static key(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); - } - - public static get api() { - return Api2; - } + public static postApiV1Tasks(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static putApiV1TasksById(options: Options) { return (options.client ?? client).put({ + url: '/api/v1/tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1TasksByIdSubmit(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/tasks/{id}/submit', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static postApiV1TasksByIdApprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); } + + public static postApiV1TasksByIdReject(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/tasks/{id}/reject', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static getApiV1TasksByIdComments(options: Options) { return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); } + + public static getApiV1TasksByIdDocuments(options: Options) { return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); } + + public static key(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); } + + public static get api() { return Api; } } export class Odata { - public static accountingCompanies(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); - } + public static accountingCompanies(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); } - public static accountingCompanyMemberships(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); - } + public static accountingCompanyMemberships(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); } - public static bankAccounts(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts', ...options }); - } + public static bankAccounts(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts', ...options }); } - public static businessAccountantAssignments(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); - } + public static businessAccountantAssignments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); } - public static businessDocumentActivities(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); - } + public static businessDocumentActivities(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); } - public static businessDocuments(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); - } + public static businessDocuments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); } /** * @deprecated */ - public static businessDocumentsSummaries(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); - } + public static businessDocumentsSummaries(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); } - public static businesses(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses', ...options }); - } + public static businesses(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses', ...options }); } - public static businessesKey(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); - } + public static businessesKey(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); } - public static businessSummaries(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); - } + public static businessSummaries(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); } - public static counterparties(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties', ...options }); - } + public static counterparties(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties', ...options }); } - public static dataBoxCredentials(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); - } + public static dataBoxCredentials(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); } - public static documentTypes(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); - } + public static documentTypes(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); } - public static invitations(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations', ...options }); - } + public static invitations(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations', ...options }); } - public static invoices(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices', ...options }); - } + public static invoices(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices', ...options }); } - public static invoiceSettings(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); - } + public static invoiceSettings(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); } - public static licenses(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses', ...options }); - } + public static licenses(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses', ...options }); } - public static personalDocuments(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); - } + public static personalDocuments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); } - public static recurringTasks(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); - } + public static recurringTasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); } - public static tasks(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks', ...options }); - } + public static tasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks', ...options }); } - public static tasksKey(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); - } + public static tasksKey(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); } - public static get accountingCompanies2() { - return AccountingCompanies2; - } + public static get accountingCompanies2() { return AccountingCompanies; } static accountingCompanyMemberships2 = AccountingCompanyMemberships; @@ -734,129 +512,101 @@ export class Odata { } export class MapIdentityApi { - public static get api() { - return Api2; - } + public static get api() { return Api; } } export class User { - public static postApiV1UserRegister(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/register', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserLogin(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/login', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserRefresh(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/refresh', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static confirmEmail(options: Options) { - return (options.client ?? client).get({ url: '/api/v1/user/confirmEmail', ...options }); - } - - public static postApiV1UserResendConfirmationEmail(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/resendConfirmationEmail', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserForgotPassword(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/forgotPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserResetPassword(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/resetPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserManage2Fa(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/manage/2fa', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static getApiV1UserManageInfo(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/user/manage/info', ...options }); - } - - public static postApiV1UserManageInfo(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/user/manage/info', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } - - public static postApiV1UserLogout(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/user/logout', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public static postApiV1UserRegister(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserLogin(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserRefresh(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/refresh', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static confirmEmail(options: Options) { return (options.client ?? client).get({ url: '/api/v1/user/confirmEmail', ...options }); } + + public static postApiV1UserResendConfirmationEmail(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/resendConfirmationEmail', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserForgotPassword(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/forgotPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserResetPassword(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/resetPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserManage2Fa(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/manage/2fa', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static getApiV1UserManageInfo(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/user/manage/info', ...options }); } + + public static postApiV1UserManageInfo(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/user/manage/info', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public static postApiV1UserLogout(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/user/logout', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } /** * @deprecated */ - public static getApiV1UserDocumentsSummary(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/user/documents-summary', ...options }); - } + public static getApiV1UserDocumentsSummary(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/user/documents-summary', ...options }); } - public static deleteApiV1User(options?: Options) { - return (options?.client ?? client).delete({ url: '/api/v1/user', ...options }); - } + public static deleteApiV1User(options?: Options) { return (options?.client ?? client).delete({ url: '/api/v1/user', ...options }); } static mapIdentityApi = MapIdentityApi; } @@ -872,175 +622,125 @@ export class Api { } export class AccountingCompanies { - public static postApiV1AccountingCompanies(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/accounting-companies', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static deleteApiV1AccountingCompaniesById(options: Options) { - return (options.client ?? client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); - } - - public static postApiV1AccountingCompaniesById(options: Options) { - return (options.client ?? client).post({ - url: '/api/v1/accounting-companies/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public static count(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); - } + public static postApiV1AccountingCompanies(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/accounting-companies', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static deleteApiV1AccountingCompaniesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); } + + public static postApiV1AccountingCompaniesById(options: Options) { return (options.client ?? client).post({ + url: '/api/v1/accounting-companies/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); } static api = Api; } export class BusinessesMemberships { - public static putApiV1BusinessMemberships(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/business-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public static putApiV1BusinessMemberships(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/business-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } } export class Dev { - public static getApiDev(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev', ...options }); - } + public static getApiDev(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev', ...options }); } - public static getApiDevReseedDb(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/reseed-db', ...options }); - } + public static getApiDevReseedDb(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/reseed-db', ...options }); } - public static getApiDevDbReset(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/db-reset', ...options }); - } + public static getApiDevDbReset(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db-reset', ...options }); } - public static getApiDevDbReset2(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/db/reset', ...options }); - } + public static getApiDevDbReset2(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/reset', ...options }); } - public static getApiDevDbCreate(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/db/create', ...options }); - } + public static getApiDevDbCreate(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/create', ...options }); } - public static getApiDevDbTouch(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/db/touch', ...options }); - } + public static getApiDevDbTouch(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/touch', ...options }); } - public static getApiDevSeed(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/seed', ...options }); - } + public static getApiDevSeed(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed', ...options }); } - public static getApiDevSeedAll(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/seed-all', ...options }); - } + public static getApiDevSeedAll(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed-all', ...options }); } - public static getApiDevSeedProd(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/seed-prod', ...options }); - } + public static getApiDevSeedProd(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed-prod', ...options }); } - public static getApiDevJobProcessRecurringTasks(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); - } + public static getApiDevJobProcessRecurringTasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); } - public static getApiDevNotificationsSendTest(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/notifications/send-test', ...options }); - } + public static getApiDevNotificationsSendTest(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/notifications/send-test', ...options }); } - public static getApiDevConfirmEmail(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/confirm-email', ...options }); - } + public static getApiDevConfirmEmail(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/confirm-email', ...options }); } - public static getApiDevEmailSendTest(options?: Options) { - return (options?.client ?? client).get({ url: '/api/dev/email/send-test', ...options }); - } + public static getApiDevEmailSendTest(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/email/send-test', ...options }); } } export class DeviceTokens { - public static deleteApiV1NotificationsDeviceTokens(options?: Options) { - return (options?.client ?? client).delete({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public static putApiV1NotificationsDeviceTokens(options?: Options) { - return (options?.client ?? client).put({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public static deleteApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? client).delete({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public static putApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? client).put({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } } export class Feedback { - public static postApiV1Feedback(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/feedback', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public static postApiV1Feedback(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/feedback', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } } export class Notifications { - public static postApiV1NotificationsTest(options?: Options) { - return (options?.client ?? client).post({ - url: '/api/v1/notifications/test', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public static postApiV1NotificationsTest(options?: Options) { return (options?.client ?? client).post({ + url: '/api/v1/notifications/test', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } } export class Root { - public static get(options?: Options) { - return (options?.client ?? client).get({ url: '/', ...options }); - } + public static get(options?: Options) { return (options?.client ?? client).get({ url: '/', ...options }); } } export class Users { - public static getApiV1UsersMe(options?: Options) { - return (options?.client ?? client).get({ url: '/api/v1/users/me', ...options }); - } - - public static patchApiV1UsersById(options: Options) { - return (options.client ?? client).patch({ - url: '/api/v1/users/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public static getApiV1UsersMe(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/users/me', ...options }); } + + public static patchApiV1UsersById(options: Options) { return (options.client ?? client).patch({ + url: '/api/v1/users/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } } diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts index c3ffbb01d..482679acd 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4187,3 +4183,7 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts index c3ffbb01d..482679acd 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4187,3 +4183,7 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts index 2ba6a8fb3..27d3debd2 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts @@ -23,241 +23,137 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { - this.client = args?.client ?? client; - } -} - -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } + }) { this.client = args?.client ?? client; } } export class AccountingCompanies extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); } } export class AccountingCompanyMemberships extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); } } export class BankAccounts extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); } } export class BusinessAccountantAssignments extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); } } export class BusinessDocumentActivities extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); } } export class BusinessDocuments extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); } } export class BusinessDocumentsSummaries extends HeyApiClient { /** * @deprecated */ - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); } } export class Businesses extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); } - public key(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); - } + public key(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); } } export class BusinessSummaries extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); } } export class Counterparties extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); } } export class DataBoxCredentials extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); } } export class DocumentTypes extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); } } export class Invitations extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); } } export class Invoices extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); } } export class InvoiceSettings extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); } } export class Licenses extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); } } export class PersonalDocuments extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); } } export class RecurringTasks extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); } } export class Tasks extends HeyApiClient { - public count(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); - } + public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); } - public key(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); - } + public key(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); } } export class Odata extends HeyApiClient { - public accountingCompanies(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); - } + public accountingCompanies(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); } - public accountingCompanyMemberships(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); - } + public accountingCompanyMemberships(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); } - public bankAccounts(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts', ...options }); - } + public bankAccounts(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts', ...options }); } - public businessAccountantAssignments(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); - } + public businessAccountantAssignments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); } - public businessDocumentActivities(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); - } + public businessDocumentActivities(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); } - public businessDocuments(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); - } + public businessDocuments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); } /** * @deprecated */ - public businessDocumentsSummaries(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); - } + public businessDocumentsSummaries(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); } - public businesses(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses', ...options }); - } + public businesses(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses', ...options }); } - public businessesKey(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); - } + public businessesKey(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); } - public businessSummaries(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); - } + public businessSummaries(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); } - public counterparties(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties', ...options }); - } + public counterparties(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties', ...options }); } - public dataBoxCredentials(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); - } + public dataBoxCredentials(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); } - public documentTypes(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); - } + public documentTypes(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); } - public invitations(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations', ...options }); - } + public invitations(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations', ...options }); } - public invoices(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices', ...options }); - } + public invoices(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices', ...options }); } - public invoiceSettings(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); - } + public invoiceSettings(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); } - public licenses(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses', ...options }); - } + public licenses(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses', ...options }); } - public personalDocuments(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); - } + public personalDocuments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); } - public recurringTasks(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); - } + public recurringTasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); } - public tasks(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks', ...options }); - } + public tasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks', ...options }); } - public tasksKey(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); - } + public tasksKey(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); } accountingCompanies2 = new AccountingCompanies({ client: this.client }); @@ -299,9 +195,7 @@ export class Odata extends HeyApiClient { } export class User extends HeyApiClient { - public confirmEmail(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/user/confirmEmail', ...options }); - } + public confirmEmail(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/user/confirmEmail', ...options }); } } export class VVersionApiVersion extends HeyApiClient { @@ -318,681 +212,518 @@ export class MapIdentityApi extends HeyApiClient { api = new Api({ client: this.client }); } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } +} + export class Sdk extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); constructor(args?: { client?: Client; key?: string; - }) { - super(args); - Sdk.__registry.set(this, args?.key); - } - - public postApiV1AccountingCompanies(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/accounting-companies', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public deleteApiV1AccountingCompaniesById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); - } - - public postApiV1AccountingCompaniesById(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/accounting-companies/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public putApiV1AccountingCompanyMemberships(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/accounting-company-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public deleteApiV1AccountingCompanyMembershipsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); - } - - public putApiV1BankAccounts(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/bank-accounts', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public deleteApiV1BankAccountsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); - } - - public putApiV1BusinessAccountantAssignments(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/business-accountant-assignments', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public deleteApiV1BusinessAccountantAssignmentsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); - } - - public getApiV1BusinessDocumentsByIdRaw(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); - } - - public postApiV1BusinessDocuments(options?: Options) { - return (options?.client ?? this.client).post({ - ...formDataBodySerializer, - url: '/api/v1/business-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); - } - - public deleteApiV1BusinessDocumentsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/business-documents/{id}', ...options }); - } - - public putApiV1BusinessDocumentsById(options: Options) { - return (options.client ?? this.client).put({ - url: '/api/v1/business-documents/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public postApiV1BusinessDocumentsByIdApprove(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); - } - - public postApiV1BusinessDocumentsByIdUnapprove(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); - } - - public postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); - } - - public postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/business-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } - - public getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); - } - - public postApiV1Businesses(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/businesses', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } - - public deleteApiV1BusinessesById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/businesses/{id}', ...options }); - } + }) { super(args); Sdk.__registry.set(this, args?.key); } + + public postApiV1AccountingCompanies(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/accounting-companies', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public putApiV1BusinessesById(options: Options) { - return (options.client ?? this.client).put({ - url: '/api/v1/businesses/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public deleteApiV1AccountingCompaniesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); } - public putApiV1BusinessesByIdContact(options: Options) { - return (options.client ?? this.client).put({ - url: '/api/v1/businesses/{id}/contact', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public postApiV1AccountingCompaniesById(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/accounting-companies/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public putApiV1AccountingCompanyMemberships(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/accounting-company-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public postApiV1BusinessesByIdDisconnect(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); - } + public deleteApiV1AccountingCompanyMembershipsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); } - public putApiV1BusinessMemberships(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/business-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public putApiV1BankAccounts(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/bank-accounts', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public postApiV1Counterparties(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/counterparties', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public deleteApiV1BankAccountsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); } - public deleteApiV1CounterpartiesById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/counterparties/{id}', ...options }); - } + public putApiV1BusinessAccountantAssignments(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/business-accountant-assignments', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public patchApiV1CounterpartiesById(options: Options) { - return (options.client ?? this.client).patch({ - url: '/api/v1/counterparties/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public deleteApiV1BusinessAccountantAssignmentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); } - public putApiV1DataBoxCredentials(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/data-box-credentials', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public getApiV1BusinessDocumentsByIdRaw(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); } - public deleteApiV1DataBoxCredentialsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); - } + public postApiV1BusinessDocuments(options?: Options) { return (options?.client ?? this.client).post({ + ...formDataBodySerializer, + url: '/api/v1/business-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); } - public getApiDev(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev', ...options }); - } + public deleteApiV1BusinessDocumentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/business-documents/{id}', ...options }); } - public getApiDevReseedDb(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/reseed-db', ...options }); - } + public putApiV1BusinessDocumentsById(options: Options) { return (options.client ?? this.client).put({ + url: '/api/v1/business-documents/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public getApiDevDbReset(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/db-reset', ...options }); - } + public postApiV1BusinessDocumentsByIdApprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); } - public getApiDevDbReset2(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/db/reset', ...options }); - } + public postApiV1BusinessDocumentsByIdUnapprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); } - public getApiDevDbCreate(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/db/create', ...options }); - } + public postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); } - public getApiDevDbTouch(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/db/touch', ...options }); - } + public postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/business-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public getApiDevSeed(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/seed', ...options }); - } + public getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); } - public getApiDevSeedAll(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/seed-all', ...options }); - } + public postApiV1Businesses(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/businesses', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public getApiDevSeedProd(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/seed-prod', ...options }); - } + public deleteApiV1BusinessesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/businesses/{id}', ...options }); } - public getApiDevJobProcessRecurringTasks(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); - } + public putApiV1BusinessesById(options: Options) { return (options.client ?? this.client).put({ + url: '/api/v1/businesses/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public putApiV1BusinessesByIdContact(options: Options) { return (options.client ?? this.client).put({ + url: '/api/v1/businesses/{id}/contact', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public getApiDevNotificationsSendTest(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/notifications/send-test', ...options }); - } + public postApiV1BusinessesByIdDisconnect(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); } - public getApiDevConfirmEmail(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/confirm-email', ...options }); - } - - public getApiDevEmailSendTest(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/dev/email/send-test', ...options }); - } + public putApiV1BusinessMemberships(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/business-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public postApiV1Counterparties(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/counterparties', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public deleteApiV1NotificationsDeviceTokens(options?: Options) { - return (options?.client ?? this.client).delete({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public deleteApiV1CounterpartiesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/counterparties/{id}', ...options }); } - public putApiV1NotificationsDeviceTokens(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public patchApiV1CounterpartiesById(options: Options) { return (options.client ?? this.client).patch({ + url: '/api/v1/counterparties/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public putApiV1DataBoxCredentials(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/data-box-credentials', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public postApiV1Feedback(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/feedback', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public deleteApiV1DataBoxCredentialsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); } - public postApiV1Invitations(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/invitations', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public getApiDev(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev', ...options }); } - public postApiV1InvitationsByIdAccept(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/invitations/{id}/accept', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiDevReseedDb(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/reseed-db', ...options }); } - public postApiV1InvitationsByIdReject(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); - } + public getApiDevDbReset(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db-reset', ...options }); } - public deleteApiV1InvitationsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/invitations/{id}', ...options }); - } + public getApiDevDbReset2(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/reset', ...options }); } - public patchApiV1InvitationsById(options: Options) { - return (options.client ?? this.client).patch({ - url: '/api/v1/invitations/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiDevDbCreate(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/create', ...options }); } - public postApiV1Invoices(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/invoices', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public getApiDevDbTouch(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/touch', ...options }); } - public deleteApiV1InvoicesById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/invoices/{id}', ...options }); - } + public getApiDevSeed(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed', ...options }); } - public patchApiV1InvoicesById(options: Options) { - return (options.client ?? this.client).patch({ - url: '/api/v1/invoices/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiDevSeedAll(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed-all', ...options }); } - public getApiV1InvoicesByIdPreview(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); - } + public getApiDevSeedProd(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed-prod', ...options }); } - public postApiV1InvoicesByIdSend(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/invoices/{id}/send', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiDevJobProcessRecurringTasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); } - public postApiV1InvoicesByIdSnapshot(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); - } + public getApiDevNotificationsSendTest(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/notifications/send-test', ...options }); } - public putApiV1InvoiceSettings(options?: Options) { - return (options?.client ?? this.client).put({ - url: '/api/v1/invoice-settings', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public getApiDevConfirmEmail(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/confirm-email', ...options }); } - public postApiV1NotificationsTest(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/notifications/test', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public getApiDevEmailSendTest(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/email/send-test', ...options }); } - public getApiV1PersonalDocumentsByIdRaw(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); - } + public deleteApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? this.client).delete({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public putApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public postApiV1Feedback(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/feedback', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public postApiV1Invitations(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/invitations', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public postApiV1InvitationsByIdAccept(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/invitations/{id}/accept', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public postApiV1PersonalDocuments(options?: Options) { - return (options?.client ?? this.client).post({ - ...formDataBodySerializer, - url: '/api/v1/personal-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); - } + public postApiV1InvitationsByIdReject(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); } - public postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/personal-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public deleteApiV1InvitationsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/invitations/{id}', ...options }); } - public deleteApiV1PersonalDocumentsById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); - } + public patchApiV1InvitationsById(options: Options) { return (options.client ?? this.client).patch({ + url: '/api/v1/invitations/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public postApiV1Invoices(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/invoices', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public getApiV1PersonalDocumentsSummary(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/personal-documents/summary', ...options }); - } + public deleteApiV1InvoicesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/invoices/{id}', ...options }); } - public postApiV1RecurringTasks(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/recurring-tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public patchApiV1InvoicesById(options: Options) { return (options.client ?? this.client).patch({ + url: '/api/v1/invoices/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public deleteApiV1RecurringTasksById(options: Options) { - return (options.client ?? this.client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); - } + public getApiV1InvoicesByIdPreview(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); } - public patchApiV1RecurringTasksById(options: Options) { - return (options.client ?? this.client).patch({ - url: '/api/v1/recurring-tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public postApiV1InvoicesByIdSend(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/invoices/{id}/send', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public get(options?: Options) { - return (options?.client ?? this.client).get({ url: '/', ...options }); - } + public postApiV1InvoicesByIdSnapshot(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); } - public postApiV1Tasks(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public putApiV1InvoiceSettings(options?: Options) { return (options?.client ?? this.client).put({ + url: '/api/v1/invoice-settings', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public postApiV1NotificationsTest(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/notifications/test', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public putApiV1TasksById(options: Options) { - return (options.client ?? this.client).put({ - url: '/api/v1/tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiV1PersonalDocumentsByIdRaw(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); } - public postApiV1TasksByIdSubmit(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/tasks/{id}/submit', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public postApiV1PersonalDocuments(options?: Options) { return (options?.client ?? this.client).post({ + ...formDataBodySerializer, + url: '/api/v1/personal-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); } + + public postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/personal-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public postApiV1TasksByIdApprove(options: Options) { - return (options.client ?? this.client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); - } + public deleteApiV1PersonalDocumentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); } - public postApiV1TasksByIdReject(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/tasks/{id}/reject', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public getApiV1PersonalDocumentsSummary(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/personal-documents/summary', ...options }); } - public getApiV1TasksByIdComments(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); - } + public postApiV1RecurringTasks(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/recurring-tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } - public getApiV1TasksByIdDocuments(options: Options) { - return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); - } + public deleteApiV1RecurringTasksById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); } - public postApiV1UserRegister(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/register', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public patchApiV1RecurringTasksById(options: Options) { return (options.client ?? this.client).patch({ + url: '/api/v1/recurring-tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public postApiV1UserLogin(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/login', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/', ...options }); } - public postApiV1UserRefresh(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/refresh', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public postApiV1Tasks(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } + + public putApiV1TasksById(options: Options) { return (options.client ?? this.client).put({ + url: '/api/v1/tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } + + public postApiV1TasksByIdSubmit(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/tasks/{id}/submit', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public postApiV1UserResendConfirmationEmail(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/resendConfirmationEmail', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public postApiV1TasksByIdApprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); } - public postApiV1UserForgotPassword(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/forgotPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public postApiV1TasksByIdReject(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/tasks/{id}/reject', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } - public postApiV1UserResetPassword(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/resetPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public getApiV1TasksByIdComments(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); } - public postApiV1UserManage2Fa(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/manage/2fa', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public getApiV1TasksByIdDocuments(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); } - public getApiV1UserManageInfo(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/user/manage/info', ...options }); - } + public postApiV1UserRegister(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserLogin(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserRefresh(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/refresh', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserResendConfirmationEmail(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/resendConfirmationEmail', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserForgotPassword(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/forgotPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserResetPassword(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/resetPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserManage2Fa(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/manage/2fa', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } - public postApiV1UserManageInfo(options: Options) { - return (options.client ?? this.client).post({ - url: '/api/v1/user/manage/info', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); - } + public getApiV1UserManageInfo(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/user/manage/info', ...options }); } - public postApiV1UserLogout(options?: Options) { - return (options?.client ?? this.client).post({ - url: '/api/v1/user/logout', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); - } + public postApiV1UserManageInfo(options: Options) { return (options.client ?? this.client).post({ + url: '/api/v1/user/manage/info', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); } + + public postApiV1UserLogout(options?: Options) { return (options?.client ?? this.client).post({ + url: '/api/v1/user/logout', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); } /** * @deprecated */ - public getApiV1UserDocumentsSummary(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/user/documents-summary', ...options }); - } + public getApiV1UserDocumentsSummary(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/user/documents-summary', ...options }); } - public deleteApiV1User(options?: Options) { - return (options?.client ?? this.client).delete({ url: '/api/v1/user', ...options }); - } + public deleteApiV1User(options?: Options) { return (options?.client ?? this.client).delete({ url: '/api/v1/user', ...options }); } - public getApiV1UsersMe(options?: Options) { - return (options?.client ?? this.client).get({ url: '/api/v1/users/me', ...options }); - } + public getApiV1UsersMe(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/users/me', ...options }); } - public patchApiV1UsersById(options: Options) { - return (options.client ?? this.client).patch({ - url: '/api/v1/users/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); - } + public patchApiV1UsersById(options: Options) { return (options.client ?? this.client).patch({ + url: '/api/v1/users/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); } api = new Api({ client: this.client }); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts index c3ffbb01d..482679acd 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4187,3 +4183,7 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts index c352c1047..63cb483a9 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { appAgents, appGet, appInit, appLog, authSet, configGet, configProviders, eventSubscribe, fileRead, fileStatus, findFiles, findSymbols, findText, type Options, postSessionByIdPermissionsByPermissionId, sessionAbort, sessionChat, sessionChildren, sessionCreate, sessionDelete, sessionGet, sessionInit, sessionList, sessionMessage, sessionMessages, sessionRevert, sessionShare, sessionShell, sessionSummarize, sessionUnrevert, sessionUnshare, sessionUpdate, tuiAppendPrompt, tuiClearPrompt, tuiExecuteCommand, tuiOpenHelp, tuiOpenModels, tuiOpenSessions, tuiOpenThemes, tuiShowToast, tuiSubmitPrompt } from './sdk.gen'; +export type { _Error, Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts index f694c0d7e..7fafff603 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts @@ -49,47 +49,38 @@ export const sessionList = (options?: Opti export const sessionCreate = (parameters?: { parentID?: string; title?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'body', key: 'parentID' }, { in: 'body', key: 'title' }]); - return (options?.client ?? client).post({ - url: '/session', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'body', key: 'parentID' }, { in: 'body', key: 'title' }]); return (options?.client ?? client).post({ + url: '/session', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Delete a session and all its data */ export const sessionDelete = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).delete({ - url: '/session/{id}', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).delete({ + url: '/session/{id}', + ...options, + ...params +}); }; /** * Get session */ export const sessionGet = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).get({ - url: '/session/{id}', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).get({ + url: '/session/{id}', + ...options, + ...params +}); }; /** * Update session properties @@ -97,33 +88,27 @@ export const sessionGet = (parameters: { export const sessionUpdate = (parameters: { id: string; title?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, { in: 'body', key: 'title' }]); - return (options?.client ?? client).patch({ - url: '/session/{id}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, { in: 'body', key: 'title' }]); return (options?.client ?? client).patch({ + url: '/session/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Get a session's children */ export const sessionChildren = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).get({ - url: '/session/{id}/children', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).get({ + url: '/session/{id}/children', + ...options, + ...params +}); }; /** * Analyze the app and create an AGENTS.md file @@ -133,66 +118,54 @@ export const sessionInit = (parameters: { messageID?: string; providerID?: string; modelID?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/init', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/init', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Abort a session */ export const sessionAbort = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).post({ - url: '/session/{id}/abort', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).post({ + url: '/session/{id}/abort', + ...options, + ...params +}); }; /** * Unshare the session */ export const sessionUnshare = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).delete({ - url: '/session/{id}/share', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).delete({ + url: '/session/{id}/share', + ...options, + ...params +}); }; /** * Share a session */ export const sessionShare = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).post({ - url: '/session/{id}/share', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).post({ + url: '/session/{id}/share', + ...options, + ...params +}); }; /** * Summarize the session @@ -201,37 +174,31 @@ export const sessionSummarize = (parameter id: string; providerID?: string; modelID?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/summarize', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/summarize', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * List messages for a session */ export const sessionMessages = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).get({ - url: '/session/{id}/message', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).get({ + url: '/session/{id}/message', + ...options, + ...params +}); }; /** * Create and send a new message to a session @@ -253,28 +220,25 @@ export const sessionChat = (parameters: { } & FilePartInput) | ({ type: 'agent'; } & AgentPartInput)>; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' }, - { in: 'body', key: 'agent' }, - { in: 'body', key: 'system' }, - { in: 'body', key: 'tools' }, - { in: 'body', key: 'parts' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/message', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'system' }, + { in: 'body', key: 'tools' }, + { in: 'body', key: 'parts' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/message', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Get a message from a session @@ -282,14 +246,11 @@ export const sessionChat = (parameters: { export const sessionMessage = (parameters: { id: string; messageID: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, { in: 'path', key: 'messageID' }]); - return (options?.client ?? client).get({ - url: '/session/{id}/message/{messageID}', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, { in: 'path', key: 'messageID' }]); return (options?.client ?? client).get({ + url: '/session/{id}/message/{messageID}', + ...options, + ...params +}); }; /** * Run a shell command @@ -298,23 +259,20 @@ export const sessionShell = (parameters: { id: string; agent?: string; command?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'agent' }, - { in: 'body', key: 'command' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/shell', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'command' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/shell', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Revert a message @@ -323,37 +281,31 @@ export const sessionRevert = (parameters: id: string; messageID?: string; partID?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'partID' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/revert', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'partID' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/revert', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Restore all reverted messages */ export const sessionUnrevert = (parameters: { id: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); - return (options?.client ?? client).post({ - url: '/session/{id}/unrevert', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }]); return (options?.client ?? client).post({ + url: '/session/{id}/unrevert', + ...options, + ...params +}); }; /** * Respond to a permission request @@ -362,23 +314,20 @@ export const postSessionByIdPermissionsByPermissionId = ) => { - const params = buildClientParams([parameters], [ - { in: 'path', key: 'id' }, - { in: 'path', key: 'permissionID' }, - { in: 'body', key: 'response' } - ]); - return (options?.client ?? client).post({ - url: '/session/{id}/permissions/{permissionID}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'path', key: 'id' }, + { in: 'path', key: 'permissionID' }, + { in: 'body', key: 'response' } +]); return (options?.client ?? client).post({ + url: '/session/{id}/permissions/{permissionID}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * List all providers @@ -390,56 +339,44 @@ export const configProviders = (options?: */ export const findText = (parameters: { pattern: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'query', key: 'pattern' }]); - return (options?.client ?? client).get({ - url: '/find', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'query', key: 'pattern' }]); return (options?.client ?? client).get({ + url: '/find', + ...options, + ...params +}); }; /** * Find files */ export const findFiles = (parameters: { query: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'query', key: 'query' }]); - return (options?.client ?? client).get({ - url: '/find/file', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'query', key: 'query' }]); return (options?.client ?? client).get({ + url: '/find/file', + ...options, + ...params +}); }; /** * Find workspace symbols */ export const findSymbols = (parameters: { query: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'query', key: 'query' }]); - return (options?.client ?? client).get({ - url: '/find/symbol', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'query', key: 'query' }]); return (options?.client ?? client).get({ + url: '/find/symbol', + ...options, + ...params +}); }; /** * Read a file */ export const fileRead = (parameters: { path: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'query', key: 'path' }]); - return (options?.client ?? client).get({ - url: '/file', - ...options, - ...params - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'query', key: 'path' }]); return (options?.client ?? client).get({ + url: '/file', + ...options, + ...params +}); }; /** * Get file status @@ -456,24 +393,21 @@ export const appLog = (parameters?: { extra?: { [key: string]: unknown; }; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'body', key: 'service' }, - { in: 'body', key: 'level' }, - { in: 'body', key: 'message' }, - { in: 'body', key: 'extra' } - ]); - return (options?.client ?? client).post({ - url: '/log', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'body', key: 'service' }, + { in: 'body', key: 'level' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'extra' } +]); return (options?.client ?? client).post({ + url: '/log', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * List all agents @@ -485,19 +419,16 @@ export const appAgents = (options?: Option */ export const tuiAppendPrompt = (parameters?: { text?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'body', key: 'text' }]); - return (options?.client ?? client).post({ - url: '/tui/append-prompt', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'body', key: 'text' }]); return (options?.client ?? client).post({ + url: '/tui/append-prompt', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Open the help dialog @@ -534,19 +465,16 @@ export const tuiClearPrompt = (options?: O */ export const tuiExecuteCommand = (parameters?: { command?: string; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'body', key: 'command' }]); - return (options?.client ?? client).post({ - url: '/tui/execute-command', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'body', key: 'command' }]); return (options?.client ?? client).post({ + url: '/tui/execute-command', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Show a toast notification in the TUI @@ -555,23 +483,20 @@ export const tuiShowToast = (parameters?: title?: string; message?: string; variant?: 'info' | 'success' | 'warning' | 'error'; -}, options?: Options) => { - const params = buildClientParams([parameters], [ - { in: 'body', key: 'title' }, - { in: 'body', key: 'message' }, - { in: 'body', key: 'variant' } - ]); - return (options?.client ?? client).post({ - url: '/tui/show-toast', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [ + { in: 'body', key: 'title' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'variant' } +]); return (options?.client ?? client).post({ + url: '/tui/show-toast', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; /** * Set authentication credentials @@ -579,16 +504,13 @@ export const tuiShowToast = (parameters?: export const authSet = (parameters: { id: string; auth?: Auth; -}, options?: Options) => { - const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, {}]); - return (options?.client ?? client).put({ - url: '/auth/{id}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } - }); -}; +}, options?: Options) => { const params = buildClientParams([parameters], [{ in: 'path', key: 'id' }, {}]); return (options?.client ?? client).put({ + url: '/auth/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } +}); }; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts index 81a523f49..71e65f5eb 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Event = ({ type: 'installation.updated'; } & EventInstallationUpdated) | ({ @@ -1941,3 +1937,7 @@ export type AuthSetResponses = { }; export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts index c352c1047..63cb483a9 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export type * from './types.gen'; -export * from './sdk.gen'; +export { appAgents, appGet, appInit, appLog, authSet, configGet, configProviders, eventSubscribe, fileRead, fileStatus, findFiles, findSymbols, findText, type Options, postSessionByIdPermissionsByPermissionId, sessionAbort, sessionChat, sessionChildren, sessionCreate, sessionDelete, sessionGet, sessionInit, sessionList, sessionMessage, sessionMessages, sessionRevert, sessionShare, sessionShell, sessionSummarize, sessionUnrevert, sessionUnshare, sessionUpdate, tuiAppendPrompt, tuiClearPrompt, tuiExecuteCommand, tuiOpenHelp, tuiOpenModels, tuiOpenSessions, tuiOpenThemes, tuiShowToast, tuiSubmitPrompt } from './sdk.gen'; +export type { _Error, Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts index 81a523f49..71e65f5eb 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts @@ -1,9 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - export type Event = ({ type: 'installation.updated'; } & EventInstallationUpdated) | ({ @@ -1941,3 +1937,7 @@ export type AuthSetResponses = { }; export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]; + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts index 460a92e52..f6a63bdfb 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -293,9 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts index 0105d59cd..99cb26f2e 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts @@ -293,7 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts index c108394b3..e34794d23 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -293,9 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts index cdd79ae78..aadb23437 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -3,30 +3,22 @@ import * as z from 'zod/v4-mini'; export const zFoo = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zBar = z.object({ - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.lazy((): any => zBaz2)); - } + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.lazy((): any => zBaz)); } }); export const zBaz = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zQux = z.union([ z.intersection(z.object({ type: z.literal('struct') - }), z.lazy(() => z.lazy((): any => zCorge2))), + }), z.lazy(() => z.lazy((): any => zCorge))), z.intersection(z.object({ type: z.literal('array') }), zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts index 192ec3f4f..72313099e 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -391,9 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts index 312cc05d2..9644b01c7 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -7,12 +7,8 @@ export const zBaz = z._default(z.readonly(z.string().check(z.regex(/foo\nbar/))) export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo2))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts index 8a00210b0..4caa3fbd4 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/circular/zod.gen.ts @@ -3,22 +3,22 @@ import { z } from 'zod'; export const zFoo: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux2).optional() + quux: z.lazy(() => zQuux).optional() }); export const zBar: z.AnyZodObject = z.object({ - bar: z.lazy(() => zBar2).optional(), - baz: z.lazy(() => zBaz2).optional() + bar: z.lazy(() => zBar).optional(), + baz: z.lazy(() => zBaz).optional() }); export const zBaz: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux2).optional() + quux: z.lazy(() => zQuux).optional() }); export const zQux: z.ZodTypeAny = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => zCorge2)), + }).and(z.lazy(() => zCorge)), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts index c4839a4e1..e7fb6be96 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/default/zod.gen.ts @@ -391,7 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts index fb3dee2e9..9d727f32d 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v3/validators/zod.gen.ts @@ -7,8 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo2)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts index fc6459c19..0dc77975f 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -3,30 +3,22 @@ import { z } from 'zod/v4'; export const zFoo = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zBar = z.object({ - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.lazy((): any => zBaz2)); - } + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.lazy((): any => zBaz)); } }); export const zBaz = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zQux = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => z.lazy((): any => zCorge2))), + }).and(z.lazy(() => z.lazy((): any => zCorge))), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts index 5c2b4db65..f2fa36f97 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -391,9 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts index c68523155..6bdc62661 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -7,12 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo2))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts index c9bcbd41e..4e4c40e30 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -394,9 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts index d1f109637..3a8f1806c 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/v4-mini'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar2)), + z.array(z.lazy((): any => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index 1a31df18a..ee92d9cc8 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -3,16 +3,14 @@ import * as z from 'zod/v4-mini'; export const zBar = z.object({ - get bar() { - return z.optional(z.array(z.lazy((): any => zBar2))); - } + get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } }); export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux2); +export const zBaz = z.lazy((): any => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index 111c93c54..d95cd6972 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index b81bbff61..daeeaf964 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -16,14 +16,10 @@ export const zFoo = z._default(z.union([ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/)).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { - description: 'This is baz property.' - })); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); }, qux: z._default(z.optional(z.int().check(z.gt(0)).register(z.globalRegistry, { description: 'This is qux property.' })), 0) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index 477ec22ef..ddfe89ba5 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -18,12 +18,8 @@ export type QuxZodType = z.infer; export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts index 6573ca690..667648417 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts index 811635f69..75782a6a3 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/default/zod.gen.ts @@ -394,7 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts index 17d8767ab..f2c188be3 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; export const zBar: z.AnyZodObject = z.object({ bar: z.union([ - z.array(z.lazy(() => zBar2)), + z.array(z.lazy(() => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts index b345598be..d1f4aaa4b 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts @@ -3,14 +3,14 @@ import { z } from 'zod'; export const zBar: z.AnyZodObject = z.object({ - bar: z.array(z.lazy(() => zBar2)).optional() + bar: z.array(z.lazy(() => zBar)).optional() }); export const zFoo = z.object({ foo: zBar.optional() }); -export const zBaz: z.ZodTypeAny = z.lazy(() => zQux2); +export const zBaz: z.ZodTypeAny = z.lazy(() => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts index c95401299..c9317d591 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts index b6145c9a6..58ea4d7b8 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).describe('This is foo property.').optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).describe('This is baz property.').optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).describe('This is baz property.').optional(), qux: z.number().int().gt(0).describe('This is qux property.').optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts index a212842ca..c26d40cf3 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts @@ -18,8 +18,8 @@ export type QuxZodType = z.infer; export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts index b1c07a86e..8e5318a8c 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v3/validators/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts index ad62250b4..e1b593189 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -394,9 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts index ee8197c49..0560094fd 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v4'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar2)), + z.array(z.lazy((): any => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index f79413d94..c46324e4c 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -3,16 +3,14 @@ import { z } from 'zod/v4'; export const zBar = z.object({ - get bar() { - return z.optional(z.array(z.lazy((): any => zBar2))); - } + get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } }); export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux2); +export const zBaz = z.lazy((): any => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index 112a30355..694d2be0f 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index 2e20f5b8e..6ddadeae6 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -16,14 +16,10 @@ export const zFoo = z.union([ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { - description: 'This is baz property.' - })); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); }, qux: z.optional(z.int().gt(0).register(z.globalRegistry, { description: 'This is qux property.' })).default(0) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index 8813506b6..ef33309b4 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -18,12 +18,8 @@ export type QuxZodType = z.infer; export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts index 6601c24f4..063713a58 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts index 2620039bd..b2d142120 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -293,9 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts index 5f6638135..93c84d92c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v3/default/zod.gen.ts @@ -293,7 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts index 6f19e6c24..f5bab7f05 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -293,9 +293,7 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts index d96af8123..1e156472c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -3,30 +3,22 @@ import * as z from 'zod/mini'; export const zFoo = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zBar = z.object({ - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.lazy((): any => zBaz2)); - } + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.lazy((): any => zBaz)); } }); export const zBaz = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zQux = z.union([ z.intersection(z.object({ type: z.literal('struct') - }), z.lazy(() => z.lazy((): any => zCorge2))), + }), z.lazy(() => z.lazy((): any => zCorge))), z.intersection(z.object({ type: z.literal('array') }), zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts index 9506b878d..e69859e42 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -391,9 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts index a41e99873..c71c7449e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -7,12 +7,8 @@ export const zBaz = z._default(z.readonly(z.string().check(z.regex(/foo\nbar/))) export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo2))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts index 75646c4eb..89c43bbd9 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/circular/zod.gen.ts @@ -3,22 +3,22 @@ import { z } from 'zod/v3'; export const zFoo: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux2).optional() + quux: z.lazy(() => zQuux).optional() }); export const zBar: z.AnyZodObject = z.object({ - bar: z.lazy(() => zBar2).optional(), - baz: z.lazy(() => zBaz2).optional() + bar: z.lazy(() => zBar).optional(), + baz: z.lazy(() => zBaz).optional() }); export const zBaz: z.AnyZodObject = z.object({ - quux: z.lazy(() => zQuux2).optional() + quux: z.lazy(() => zQuux).optional() }); export const zQux: z.ZodTypeAny = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => zCorge2)), + }).and(z.lazy(() => zCorge)), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts index 3fbd59e4e..dc5b79a54 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/default/zod.gen.ts @@ -391,7 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts index ebbe71b83..bdddc5775 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v3/validators/zod.gen.ts @@ -7,8 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo2)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts index 00911017c..160ab1e1e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -3,30 +3,22 @@ import { z } from 'zod'; export const zFoo = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zBar = z.object({ - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.lazy((): any => zBaz2)); - } + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.lazy((): any => zBaz)); } }); export const zBaz = z.object({ - get quux() { - return z.optional(z.lazy((): any => zQuux2)); - } + get quux() { return z.optional(z.lazy((): any => zQuux)); } }); export const zQux = z.union([ z.object({ type: z.literal('struct') - }).and(z.lazy(() => z.lazy((): any => zCorge2))), + }).and(z.lazy(() => z.lazy((): any => zCorge))), z.object({ type: z.literal('array') }).and(zFoo) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts index 9d4c97f48..dba143ae4 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -391,9 +391,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts index adde4f7f0..3a803fda8 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -7,12 +7,8 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo2))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts index 84828113f..69ab0decd 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -394,9 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts index 4ed3f70ef..6014595af 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import * as z from 'zod/mini'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar2)), + z.array(z.lazy((): any => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index 39b46eb56..3d850cb99 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -3,16 +3,14 @@ import * as z from 'zod/mini'; export const zBar = z.object({ - get bar() { - return z.optional(z.array(z.lazy((): any => zBar2))); - } + get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } }); export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux2); +export const zBaz = z.lazy((): any => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index ceb1549b4..781fa9b97 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index fb296fd0d..c58e0e748 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -16,14 +16,10 @@ export const zFoo = z._default(z.union([ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/)).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { - description: 'This is baz property.' - })); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); }, qux: z._default(z.optional(z.int().check(z.gt(0)).register(z.globalRegistry, { description: 'This is qux property.' })), 0) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index 65fbcd47c..543de1610 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -18,12 +18,8 @@ export type QuxZodType = z.infer; export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts index 62cbdbe1b..dcff7fd86 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts index 3fe7311bf..6d118b7c7 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/default/zod.gen.ts @@ -394,7 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference: z.AnyZodObject = z.object({ - prop: z.lazy(() => zModelWithCircularReference2).optional() + prop: z.lazy(() => zModelWithCircularReference).optional() }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts index fa92f18d5..4d47e4d61 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v3'; export const zBar: z.AnyZodObject = z.object({ bar: z.union([ - z.array(z.lazy(() => zBar2)), + z.array(z.lazy(() => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts index 402e1414b..02708822c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-circular-ref/zod.gen.ts @@ -3,14 +3,14 @@ import { z } from 'zod/v3'; export const zBar: z.AnyZodObject = z.object({ - bar: z.array(z.lazy(() => zBar2)).optional() + bar: z.array(z.lazy(() => zBar)).optional() }); export const zFoo = z.object({ foo: zBar.optional() }); -export const zBaz: z.ZodTypeAny = z.lazy(() => zQux2); +export const zBaz: z.ZodTypeAny = z.lazy(() => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts index bee23c297..68a0a720f 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-dates/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts index e2ef988c4..10af4babe 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-metadata/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).describe('This is foo property.').optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).describe('This is baz property.').optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).describe('This is baz property.').optional(), qux: z.number().int().gt(0).describe('This is qux property.').optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts index f837d12dd..2b0fa9eed 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators-types/zod.gen.ts @@ -18,8 +18,8 @@ export type QuxZodType = z.infer; export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts index 9ebcd26ae..15850f6a2 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v3/validators/zod.gen.ts @@ -14,8 +14,8 @@ export const zQux = z.record(z.object({ export const zFoo: z.ZodTypeAny = z.union([ z.object({ foo: z.string().regex(/^\d{3}-\d{2}-\d{4}$/).optional(), - bar: z.lazy(() => zBar2).optional(), - baz: z.array(z.lazy(() => zFoo4)).optional(), + bar: z.lazy(() => zBar).optional(), + baz: z.array(z.lazy(() => zFoo)).optional(), qux: z.number().int().gt(0).optional().default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts index 088a5b89e..b8cbda150 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -394,9 +394,7 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { - return z.optional(z.lazy((): any => zModelWithCircularReference2)); - } + get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts index 26841bbb9..696338aab 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref-2/zod.gen.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; export const zBar = z.object({ bar: z.union([ - z.array(z.lazy((): any => zBar2)), + z.array(z.lazy((): any => zBar)), z.null() ]) }); diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index 9c5d6dae6..cac0d9b3e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -3,16 +3,14 @@ import { z } from 'zod'; export const zBar = z.object({ - get bar() { - return z.optional(z.array(z.lazy((): any => zBar2))); - } + get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } }); export const zFoo = z.object({ foo: z.optional(zBar) }); -export const zBaz = z.lazy((): any => zQux2); +export const zBaz = z.lazy((): any => zQux); /** * description caused circular reference error diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index 3ce85de8f..ca8abb2a0 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index 35bbb17e8..834510109 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -16,14 +16,10 @@ export const zFoo = z.union([ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4)).register(z.globalRegistry, { - description: 'This is baz property.' - })); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); }, qux: z.optional(z.int().gt(0).register(z.globalRegistry, { description: 'This is qux property.' })).default(0) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index c7065d54c..7d7a5eabd 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -18,12 +18,8 @@ export type QuxZodType = z.infer; export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts index e5188fb7f..c3b743103 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -14,12 +14,8 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { - return z.optional(z.lazy((): any => zBar2)); - }, - get baz() { - return z.optional(z.array(z.lazy((): any => zFoo4))); - }, + get bar() { return z.optional(z.lazy((): any => zBar)); }, + get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts/src/config/output.ts b/packages/openapi-ts/src/config/output.ts index 98ac0563c..ddac601bf 100644 --- a/packages/openapi-ts/src/config/output.ts +++ b/packages/openapi-ts/src/config/output.ts @@ -24,6 +24,7 @@ export const getOutput = (userConfig: UserConfig): Config['output'] => { indexFile: true, lint: null, path: '', + preferExportAll: false, }, mappers: { object: (fields, defaultValue) => ({ diff --git a/packages/openapi-ts/src/generate/__tests__/renderer.test.ts b/packages/openapi-ts/src/generate/__tests__/renderer.test.ts deleted file mode 100644 index a6a1b1081..000000000 --- a/packages/openapi-ts/src/generate/__tests__/renderer.test.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import { TypeScriptRenderer } from '../renderer'; - -// Minimal local BiMap for tests to avoid importing runtime-only class -class LocalBiMap { - private map = new Map(); - private reverse = new Map>(); - get(key: Key) { - return this.map.get(key); - } - getKeys(value: Value) { - return this.reverse.get(value); - } - set(key: Key, value: Value) { - this.map.set(key, value); - this.reverse.set(value, new Set([key])); - return this; - } - hasValue(value: Value) { - return this.reverse.has(value); - } -} - -describe('TypeScriptRenderer', () => { - describe('default import placeholder replacement', () => { - it('should replace placeholders in default imports correctly', () => { - const renderer = new TypeScriptRenderer(); - - // Create a mock project with symbols that have placeholders - const project = { - symbolIdToFiles: () => [], - symbols: new Map(), - } as any; - - // Create a symbol with a placeholder - const symbolId = 95; - const symbol = { - id: symbolId, - name: 'foo', - placeholder: '_heyapi_95_', - }; - project.symbols.set(symbolId, symbol); - - // Create a mock file - const file = { - resolvedNames: new Map([[symbolId, 'foo']]), - } as any; - - // Create bindings with a default import that has a placeholder - const bindings = new Map(); - bindings.set('foo', { - aliases: {}, - defaultBinding: '_heyapi_95_', // Contains placeholder that should be replaced - from: 'foo', - names: [], - typeNames: [], - }); - - // Generate import lines - const importLines = renderer['getImportLines'](bindings, file, project); - - // The import should use 'foo' not '_heyapi_95_' - expect(importLines).toEqual(["import foo from 'foo';"]); - }); - }); - - describe('replacer duplicate name handling', () => { - it('allows duplicate names when kinds differ (type vs value)', () => { - const renderer = new TypeScriptRenderer(); - - // Prepare a mock file and project - const file: any = { - resolvedNames: new LocalBiMap(), - symbols: { body: [], exports: [], imports: [] }, - }; - - const project = { - symbolIdToFiles: () => [file], - symbols: new Map(), - } as any; - - // Two symbols with the same name but different kinds - const typeSymbolId = 1; - const valueSymbolId = 2; - - const typeSymbol: any = { - exportFrom: [], - id: typeSymbolId, - kind: 'type', - meta: {}, - name: 'Foo', - placeholder: '_heyapi_1_', - }; - const valueSymbol: any = { - exportFrom: [], - id: valueSymbolId, - meta: {}, - name: 'Foo', - placeholder: '_heyapi_2_', - }; - - project.symbols.set(typeSymbolId, typeSymbol); - project.symbols.set(valueSymbolId, valueSymbol); - - // First replacement should register the name 'Foo' - const first = renderer['replacerFn']({ - file, - project, - symbol: typeSymbol, - }); - expect(first).toEqual('Foo'); - - // Second replacement (different kind) should be allowed to also use 'Foo' - const second = renderer['replacerFn']({ - file, - project, - symbol: valueSymbol, - }); - expect(second).toEqual('Foo'); - }); - }); -}); diff --git a/packages/openapi-ts/src/generate/output.ts b/packages/openapi-ts/src/generate/output.ts index e8bb64192..e2788c5b1 100644 --- a/packages/openapi-ts/src/generate/output.ts +++ b/packages/openapi-ts/src/generate/output.ts @@ -1,8 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; -import type { ProjectRenderMeta } from '@hey-api/codegen-core'; - import type { Context } from '~/ir/context'; import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; @@ -17,10 +15,6 @@ export const generateOutput = async ({ context }: { context: Context }) => { } } - const meta: ProjectRenderMeta = { - importFileExtension: context.config.output.importFileExtension, - }; - const client = getClientPlugin(context.config); if ( 'bundle' in client.config && @@ -30,7 +24,9 @@ export const generateOutput = async ({ context }: { context: Context }) => { // not proud of this one // @ts-expect-error context.config._FRAGILE_CLIENT_BUNDLE_RENAMED = generateClientBundle({ - meta, + meta: { + importFileExtension: context.config.output.importFileExtension, + }, outputPath, // @ts-expect-error plugin: client, @@ -42,7 +38,7 @@ export const generateOutput = async ({ context }: { context: Context }) => { await plugin.run(); } - for (const file of context.gen.render(meta)) { + for (const file of context.gen.render()) { const filePath = path.resolve(outputPath, file.path); const dir = path.dirname(filePath); if (!context.config.dryRun) { diff --git a/packages/openapi-ts/src/generate/renderer.ts b/packages/openapi-ts/src/generate/renderer.ts deleted file mode 100644 index 2f96ea45b..000000000 --- a/packages/openapi-ts/src/generate/renderer.ts +++ /dev/null @@ -1,627 +0,0 @@ -import path from 'node:path'; - -import type { - Binding, - File, - IProject, - PlannedImport, - PlannedReexport, - Project, - ProjectRenderMeta, - Renderer, - Symbol, -} from '@hey-api/codegen-core'; -import { createBinding, mergeBindings, renderIds } from '@hey-api/codegen-core'; -import ts from 'typescript'; - -import { ensureValidIdentifier } from '~/openApi/shared/utils/identifier'; -import { $, isTsDsl } from '~/ts-dsl'; - -const printer = ts.createPrinter({ - newLine: ts.NewLineKind.LineFeed, - removeComments: false, -}); - -const createSourceFile = (sourceText: string): ts.SourceFile => - ts.createSourceFile( - '', - sourceText, - ts.ScriptTarget.ESNext, - false, - ts.ScriptKind.TS, - ); - -const blankSourceFile = createSourceFile(''); - -const unescapeUnicode = (value: string) => - value.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex: string) => - String.fromCharCode(Number.parseInt(hex, 16)), - ); - -/** Print a TypeScript node to a string. */ -function nodeToString(node: ts.Node): string { - const result = printer.printNode( - ts.EmitHint.Unspecified, - node, - blankSourceFile, - ); - - try { - /** - * TypeScript Compiler API escapes unicode characters by default and there - * is no way to disable this behavior - * {@link https://github.com/microsoft/TypeScript/issues/36174} - */ - return unescapeUnicode(result); - } catch { - return result; - } -} - -const nodeBuiltins = new Set([ - 'buffer', - 'child_process', - 'cluster', - 'console', - 'constants', - 'crypto', - 'dgram', - 'dns', - 'domain', - 'events', - 'freelist', - 'fs', - 'http', - 'https', - 'module', - 'net', - 'os', - 'path', - 'process', - 'punycode', - 'querystring', - 'readline', - 'repl', - 'stream', - 'string_decoder', - 'timers', - 'tls', - 'tty', - 'url', - 'util', - 'v8', - 'vm', - 'worker_threads', - 'zlib', -]); - -export class TypeScriptRenderer implements Renderer { - render(file: File, project: Project, meta?: ProjectRenderMeta): string { - let output = ''; - const header = '// This file is auto-generated by @hey-api/openapi-ts'; - output += `${header}\n`; - - let outputImports = ''; - for (const plan of file.imports) { - outputImports += nodeToString( - this.renderImport(plan, file, project, meta), - ); - outputImports += '\n'; - } - output = `${output}${output && outputImports ? '\n' : ''}${outputImports}`; - - let outputSymbols = ''; - for (const symbol of file.symbols) { - if (outputSymbols) outputSymbols += '\n'; - const node = symbol.node; - if (isTsDsl(node)) { - outputSymbols += nodeToString(node.$render()); - } - outputSymbols += '\n'; - } - output = `${output}${output && outputSymbols ? '\n' : ''}${outputSymbols}`; - - let outputReexports = ''; - for (const plan of file.reexports) { - if (!outputReexports && outputSymbols) outputReexports += '\n'; - outputReexports += nodeToString( - this.renderExport(plan, file, project, meta), - ); - outputReexports += '\n'; - } - output = `${output}${output && outputReexports ? '\n' : ''}${outputReexports}`; - - return output; - } - - private renderExport( - plan: PlannedReexport, - file: File, - project: Project, - meta?: ProjectRenderMeta, - ): ts.ExportDeclaration { - const modulePath = this.getBindingPath( - file, - project.files.get(plan.from)!, - meta, - ); - const specifier = ts.factory.createExportSpecifier( - false, - plan.importedName !== plan.exportedName - ? $.id(plan.importedName).$render() - : undefined, - $.id(plan.exportedName).$render(), - ); - return ts.factory.createExportDeclaration( - undefined, - plan.isTypeOnly, - ts.factory.createNamedExports([specifier]), - $.literal(modulePath).$render(), - ); - } - - private renderImport( - plan: PlannedImport, - file: File, - project: Project, - meta?: ProjectRenderMeta, - ): ts.ImportDeclaration { - const modulePath = this.getBindingPath( - file, - project.files.get(plan.from)!, - meta, - ); - const localName = $.id(plan.localName).$render(); - const specifier = ts.factory.createImportSpecifier( - false, - plan.importedName !== plan.localName - ? $.id(plan.importedName).$render() - : undefined, - localName, - ); - const importClause = ts.factory.createImportClause( - false, - plan.kind === 'default' ? localName : undefined, - plan.kind === 'namespace' - ? ts.factory.createNamespaceImport(localName) - : ts.factory.createNamedImports([specifier]), - ); - return ts.factory.createImportDeclaration( - undefined, - importClause, - $.literal(modulePath).$render(), - ); - } - - renderFile( - symbolsAndExports: string, - file: File, - project: IProject, - meta?: ProjectRenderMeta, - ): string { - const imports: Map = new Map(); - symbolsAndExports = renderIds(symbolsAndExports, (symbolId) => { - const symbol = project.symbols.get(symbolId); - const replaced = this.replacerFn({ file, project, symbol }); - if (symbol) { - this.addBinding({ bindings: imports, file, meta, project, symbol }); - } - return replaced; - }); - if (!symbolsAndExports.length) return ''; - let output = ''; - const headerLines = this.getHeaderLines(); - output += `${headerLines.join('\n')}${headerLines.length ? '\n\n' : ''}`; - const importLines = this.getImportLines(imports, file, project); - output += `${importLines.join('\n')}${importLines.length ? '\n\n' : ''}`; - return `${output}${symbolsAndExports}`; - } - - renderSymbols(file: File, project: IProject): string { - const exports: Map = new Map(); - let output = ''; - const bodyLines: Array = []; - output += `${bodyLines.join('\n\n')}${bodyLines.length ? '\n' : ''}`; - // cast everything into namespace exports for now - for (const binding of exports.values()) { - binding.namespaceBinding = true; - binding.typeNamespaceBinding = - binding.names && - binding.typeNames && - binding.names.length === binding.typeNames.length && - binding.names.every((name) => (binding.typeNames ?? []).includes(name)); - } - const exportLines = this.getExportLines(exports, file, project); - output += `${exportLines.join('\n')}${exportLines.length ? '\n' : ''}`; - return output; - } - - private addBinding({ - bindings, - file, - meta, - project, - symbol, - }: { - bindings: Map; - file: File; - meta?: ProjectRenderMeta; - project: IProject; - symbol: Symbol; - }): void { - if (!symbol.external && !project.symbols.hasValue(symbol.id)) { - return; - } - - const symbolFile: File | undefined = undefined; - if (!symbolFile || file === symbolFile) return; - - const modulePath = this.getBindingPath(file, symbolFile, meta); - const existing = bindings.get(modulePath); - const binding = createBinding({ - file, - modulePath, - symbol, - symbolFile, - }); - if (existing) { - mergeBindings(existing, binding); - bindings.set(modulePath, existing); - } else { - bindings.set(modulePath, binding); - } - } - - private getBindingPath( - currentFile: File, - symbolFile: File, - meta?: ProjectRenderMeta, - ): string { - if (!currentFile.path || !symbolFile.path) { - return ''; - } - if (symbolFile.external && !path.isAbsolute(symbolFile.path)) { - return symbolFile.path; - } - let relativePath = path.posix.relative( - path.posix.dirname( - currentFile.path.split(path.sep).join(path.posix.sep), // normalize to posix - ), - symbolFile.path.split(path.sep).join(path.posix.sep), // normalize to posix - ); - if (!relativePath.startsWith('.') && relativePath !== '') { - relativePath = `./${relativePath}`; - } - if (symbolFile.extension === '.ts') { - if (relativePath.endsWith(symbolFile.extension)) { - relativePath = relativePath.slice(0, -symbolFile.extension.length); - } - if (meta?.importFileExtension) { - relativePath += meta.importFileExtension; - } else if (relativePath.endsWith('/index')) { - relativePath = relativePath.slice(0, -'/index'.length); - } - } - return relativePath; - } - - private getExportLines( - bindings: Map, - file: File, - project: IProject, - ): Array { - const lines: Array = []; - - for (const [from, value] of bindings.entries()) { - const specifiers: Array = []; - let namespaceBinding: string | undefined; - let isTypeOnly = false; - - if (value.namespaceBinding !== undefined) { - if (typeof value.namespaceBinding === 'string') { - namespaceBinding = renderIds(value.namespaceBinding, (symbolId) => { - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }); - } - if (value.typeNamespaceBinding) { - isTypeOnly = true; - } - } else if (value.names && value.names.length > 0) { - if ( - value.names.every((name) => (value.typeNames ?? []).includes(name)) - ) { - isTypeOnly = true; - } - - for (const name of value.names) { - const alias = value.aliases?.[name]; - let finalName = name; - let finalAlias: string | undefined; - if (alias && alias !== finalName) { - finalAlias = finalName; - finalName = alias; - } - finalName = renderIds(finalName, (symbolId) => { - const symbol = project.symbols.get(symbolId); - const name = this.replacerFn({ file, project, symbol }); - const symbolFile: File | undefined = undefined; - const sourceName = symbolFile - ? // @ts-expect-error - symbolFile.resolvedNames.get(symbolId) - : undefined; - if (sourceName && sourceName !== name) { - // handle only simple imports for now - if (!finalAlias) { - finalAlias = sourceName; - } - } - return name; - }); - if (finalAlias) { - finalAlias = renderIds(finalAlias, (symbolId) => { - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }); - // remove redundant alias - if (finalAlias === finalName) { - finalAlias = undefined; - } - } - const specifier = ts.factory.createExportSpecifier( - isTypeOnly ? false : (value.typeNames?.includes(name) ?? false), - finalAlias ? $.id(finalAlias).$render() : undefined, - $.id(finalName).$render(), - ); - specifiers.push(specifier); - } - } - - const exportClause = namespaceBinding - ? ts.factory.createNamespaceExport($.id(namespaceBinding).$render()) - : specifiers.length - ? ts.factory.createNamedExports(specifiers) - : undefined; - - const node = ts.factory.createExportDeclaration( - undefined, - isTypeOnly, - exportClause, - $.literal(from).$render(), - ); - lines.push(nodeToString(node)); - } - - return lines; - } - - private getHeaderLines(): Array { - return ['// This file is auto-generated by @hey-api/openapi-ts']; - } - - private getImportLines( - bindings: Map, - file: File, - project: IProject, - ): Array { - const lines: Array = []; - - let lastGroup = -1; - const importSortKey = (binding: Binding): [number, number, string] => { - const path = binding.from; - if (!path.startsWith('.')) { - // Node.js built-in - if (nodeBuiltins.has(path.split('/')[0]!)) { - return [0, 0, path]; - } - // external package - return [1, 0, path]; - } - // sibling relative - if (path.startsWith('./')) { - return [2, 0, path]; - } - // parent relative - const parentCount = path.match(/\.\.\//g)?.length ?? 0; - return [2, parentCount, path]; - }; - - const sortedBindings = Array.from(bindings.values()) - .map((value) => ({ - ...value, - k: importSortKey(value), - })) - .sort( - (a, b) => - a.k[0] - b.k[0] || a.k[1] - b.k[1] || a.k[2].localeCompare(b.k[2]), - ); - - for (const value of sortedBindings) { - let specifiers: Array = []; - let defaultBinding: ts.Identifier | undefined; - let namespaceBinding: string | undefined; - let isTypeOnly = false; - - if (value.defaultBinding) { - const processedDefaultBinding = renderIds( - value.defaultBinding, - (symbolId) => { - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }, - ); - defaultBinding = $.id(processedDefaultBinding).$render(); - if (value.typeDefaultBinding) { - isTypeOnly = true; - } - } else if (typeof value.namespaceBinding === 'string') { - namespaceBinding = renderIds(value.namespaceBinding, (symbolId) => { - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }); - if (value.typeNamespaceBinding) { - isTypeOnly = true; - } - } else if (value.names && value.names.length > 0) { - if (value.names.every((name) => value.typeNames?.includes(name))) { - isTypeOnly = true; - } - - const namedImports: Array<{ - isTypeOnly: boolean; - name: string; - propertyName: ts.ModuleExportName | undefined; - }> = []; - - for (const name of value.names) { - const alias = value.aliases?.[name]; - let finalName = name; - let finalAlias: string | undefined; - if (alias && alias !== finalName) { - finalAlias = finalName; - finalName = alias; - } - finalName = renderIds(finalName, (symbolId) => { - const symbol = project.symbols.get(symbolId); - const name = this.replacerFn({ file, project, symbol }); - const symbolFile: File | undefined = undefined; - const sourceName = symbolFile - ? // @ts-expect-error - symbolFile.resolvedNames.get(symbolId) - : undefined; - if (sourceName && sourceName !== name) { - // handle only simple imports for now - if (!finalAlias) { - finalAlias = sourceName; - } - } - return name; - }); - if (finalAlias) { - finalAlias = renderIds(finalAlias, (symbolId) => { - const symbol = project.symbols.get(symbolId); - return this.replacerFn({ file, project, symbol }); - }); - // remove redundant alias - if (finalAlias === finalName) { - finalAlias = undefined; - } - } - namedImports.push({ - isTypeOnly: isTypeOnly - ? false - : (value.typeNames?.includes(name) ?? false), - name: finalName, - propertyName: finalAlias ? $.id(finalAlias).$render() : undefined, - }); - } - - specifiers = namedImports - .sort((a, b) => a.name.localeCompare(b.name)) - .map(({ isTypeOnly, name, propertyName }) => - ts.factory.createImportSpecifier( - isTypeOnly, - propertyName, - $.id(name).$render(), - ), - ); - } - - const importClause = ts.factory.createImportClause( - isTypeOnly, - defaultBinding, - namespaceBinding - ? ts.factory.createNamespaceImport($.id(namespaceBinding).$render()) - : specifiers.length - ? ts.factory.createNamedImports(specifiers) - : undefined, - ); - - const node = ts.factory.createImportDeclaration( - undefined, - importClause, - $.literal(value.from).$render(), - ); - - if (lastGroup !== -1 && value.k[0] !== lastGroup) { - lines.push(''); // add empty line between groups - } - - lines.push(nodeToString(node)); - lastGroup = value.k[0]; - } - - return lines; - } - - private getUniqueName({ - base, - file, - index, - project, - symbol, - }: { - base: string; - file: File; - index: number; - project: IProject; - symbol: Symbol; - }): string { - let name = index > 1 ? `${base}${index}` : base; - if (!file.resolvedNames.hasValue(name)) { - return name; - } - const conflictIds = file.resolvedNames.getKeys(name) ?? new Set(); - const conflictSymbols = [...conflictIds] - .map((id) => project.symbols.get(id)) - .filter((s): s is NonNullable => s !== undefined); - if (conflictSymbols.length > 0) { - const conflictKinds = conflictSymbols.map((s) => s.kind); - // avoid conflicts between class and type of the same name - if ( - (symbol.kind === 'type' && - (conflictKinds.includes('type') || - conflictKinds.includes('class'))) || - (symbol.kind !== 'type' && - conflictKinds.some((kind) => kind !== 'type')) || - (symbol.kind === 'class' && conflictKinds.includes('type')) - ) { - name = this.getUniqueName({ - base, - file, - index: index + 1, - project, - symbol, - }); - } - } - return name; - } - - private replacerFn({ - file, - project, - symbol, - }: { - file: File; - project: IProject; - symbol: Symbol | undefined; - }): string | undefined { - if (!symbol) return; - const cached = file.resolvedNames.get(symbol.id); - if (cached) return cached; - if (!symbol.name) return; - const symbolFile: File | undefined = undefined; - // @ts-expect-error - const symbolFileResolvedName = symbolFile?.resolvedNames.get(symbol.id); - const name = this.getUniqueName({ - base: ensureValidIdentifier(symbolFileResolvedName ?? symbol.name), - file, - index: 1, - project, - symbol, - }); - file.resolvedNames.set(symbol.id, name); - return name; - } -} diff --git a/packages/openapi-ts/src/ir/context.ts b/packages/openapi-ts/src/ir/context.ts index 27889adec..e666452fe 100644 --- a/packages/openapi-ts/src/ir/context.ts +++ b/packages/openapi-ts/src/ir/context.ts @@ -2,12 +2,12 @@ import { Project } from '@hey-api/codegen-core'; import type { Package } from '~/config/utils/package'; import { packageFactory } from '~/config/utils/package'; -import { TypeScriptRenderer } from '~/generate/renderer'; import type { Graph } from '~/graph'; import { buildName } from '~/openApi/shared/utils/name'; import type { PluginConfigMap } from '~/plugins/config'; import { PluginInstance } from '~/plugins/shared/utils/instance'; import type { PluginNames } from '~/plugins/types'; +import { TypeScriptRenderer } from '~/ts-dsl'; import type { Config } from '~/types/config'; import type { Logger } from '~/utils/logger'; import { resolveRef } from '~/utils/ref'; @@ -83,10 +83,14 @@ export class Context = any> { ? name : `${name}${suffix}`; }, - renderers: { - // TODO: allow overriding via config with custom renderers - '.ts': new TypeScriptRenderer(), - }, + // TODO: allow overriding via config + renderers: [ + new TypeScriptRenderer({ + preferExportAll: config.output.preferExportAll, + preferFileExtension: config.output.importFileExtension || undefined, + resolveModuleName: config.output.resolveModuleName, + }), + ], root: config.output.path, }); this.logger = logger; diff --git a/packages/openapi-ts/src/openApi/__tests__/index.test.ts b/packages/openapi-ts/src/openApi/__tests__/index.test.ts index 9629b2b9d..89e685e6a 100644 --- a/packages/openapi-ts/src/openApi/__tests__/index.test.ts +++ b/packages/openapi-ts/src/openApi/__tests__/index.test.ts @@ -44,8 +44,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -63,8 +66,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -82,8 +88,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -101,8 +110,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -120,8 +132,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -138,8 +153,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); @@ -156,8 +174,11 @@ describe('OpenAPI parser', () => { }; parseOpenApiSpec({ config: { - // @ts-expect-error - output: {}, + output: { + // @ts-expect-error + fileName: {}, + path: '', + }, }, spec, }); diff --git a/packages/openapi-ts/src/openApi/common/parser/sanitize.ts b/packages/openapi-ts/src/openApi/common/parser/sanitize.ts index dba46d2a8..c8803f974 100644 --- a/packages/openapi-ts/src/openApi/common/parser/sanitize.ts +++ b/packages/openapi-ts/src/openApi/common/parser/sanitize.ts @@ -11,6 +11,8 @@ * JavaScript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers * * The output of this is expected to be converted to PascalCase + * + * @deprecated */ export const sanitizeNamespaceIdentifier = (name: string) => name diff --git a/packages/openapi-ts/src/openApi/shared/utils/identifier.ts b/packages/openapi-ts/src/openApi/shared/utils/identifier.ts deleted file mode 100644 index 3b9ce2464..000000000 --- a/packages/openapi-ts/src/openApi/shared/utils/identifier.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { - illegalStartCharactersRegExp, - reservedBrowserGlobalsRegExp, - reservedJavaScriptGlobalsRegExp, - reservedJavaScriptKeywordsRegExp, - reservedNodeGlobalsRegExp, - reservedTypeScriptKeywordsRegExp, -} from '~/utils/regexp'; - -const regexps = [ - reservedJavaScriptKeywordsRegExp, - reservedTypeScriptKeywordsRegExp, - reservedJavaScriptGlobalsRegExp, - reservedNodeGlobalsRegExp, - reservedBrowserGlobalsRegExp, -]; - -export const ensureValidIdentifier = (name: string): string => { - let identifier = name.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu, '_'); - - illegalStartCharactersRegExp.lastIndex = 0; - if (illegalStartCharactersRegExp.test(identifier)) { - return `_${identifier}`; - } - - for (const regexp of regexps) { - if (identifier.startsWith('_')) { - return identifier; - } - - identifier = identifier.replace(regexp, '_$1'); - } - - return identifier; -}; diff --git a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts index ceb4cf545..552ae323d 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts @@ -3,7 +3,6 @@ import type { Context } from '~/ir/context'; import type { OpenApiV2_0_XTypes } from '~/openApi/2.0.x'; import type { OpenApiV3_0_XTypes } from '~/openApi/3.0.x'; import type { OpenApiV3_1_XTypes } from '~/openApi/3.1.x'; -import { ensureValidIdentifier } from '~/openApi/shared/utils/identifier'; import type { OpenApi } from '~/openApi/types'; import { $ } from '~/ts-dsl'; @@ -352,7 +351,7 @@ const schemaName = ({ customName = `${name}Schema`; } - return ensureValidIdentifier(customName); + return customName; }; const schemasV2_0_X = ({ diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts index c7c10fd3c..745933e91 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts @@ -47,11 +47,11 @@ type SdkClassEntry = { export const registryName = '__registry'; const createRegistryClass = ({ - sdkName, + sdkSymbol, symbol, }: { plugin: HeyApiSdkPlugin['Instance']; - sdkName: string; + sdkSymbol: Symbol; symbol: Symbol; }): TsDsl => { const defaultKey = 'defaultKey'; @@ -84,7 +84,7 @@ const createRegistryClass = ({ $.if($.not('instance')).do( $.throw('Error').message( $.template('No SDK client found. Create one with "new ') - .add(sdkName) + .add(sdkSymbol) .add('()" to fix this error.'), ), ), @@ -400,10 +400,7 @@ export const generateClassSdk = ({ } } - if ( - symbolHeyApiClient && - !plugin.gen.symbols.hasValue(symbolHeyApiClient.id) - ) { + if (symbolHeyApiClient && !symbolHeyApiClient.node) { const node = createClientClass({ plugin, symbol: symbolHeyApiClient, @@ -459,7 +456,7 @@ export const generateClassSdk = ({ const node = createRegistryClass({ plugin, - sdkName: symbol.placeholder, + sdkSymbol: symbol, symbol: symbolHeyApiRegistry, }); plugin.addNode(node); diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts index e24b74b18..fe1d5b612 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts @@ -4,8 +4,7 @@ import { createOperationComment, isOperationOptionsRequired, } from '~/plugins/shared/utils/operation'; -import { $ } from '~/ts-dsl'; -import { reservedJavaScriptKeywordsRegExp } from '~/utils/regexp'; +import { $, reservedJavaScriptKeywordsRegExp } from '~/ts-dsl'; import type { HeyApiSdkPlugin } from '../types'; import { nuxtTypeComposable, nuxtTypeDefault } from './constants'; diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts index de2b73c82..bf0687092 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts @@ -1,13 +1,12 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { refs } from '@hey-api/codegen-core'; import type { Context } from '~/ir/context'; import { statusCodeToGroup } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { sanitizeNamespaceIdentifier } from '~/openApi/common/parser/sanitize'; import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; -import { toRefs } from '~/plugins/shared/utils/refs'; -import { $ } from '~/ts-dsl'; -import { reservedJavaScriptKeywordsRegExp } from '~/utils/regexp'; +import { $, reservedJavaScriptKeywordsRegExp } from '~/ts-dsl'; import { stringCase } from '~/utils/stringCase'; import { transformClassName } from '~/utils/transform'; @@ -157,7 +156,7 @@ export const operationOptionsType = ({ operation: IR.OperationObject; plugin: HeyApiSdkPlugin['Instance']; throwOnError?: string; -}) => { +}): ReturnType => { const client = getClientPlugin(plugin.context.config); const isNuxtClient = client.name === '@hey-api/client-nuxt'; @@ -244,7 +243,7 @@ export const operationParameters = ({ pluginTypeScript.api.schemaToType({ plugin: pluginTypeScript, schema: parameter.schema, - state: toRefs({ + state: refs({ path: [], }), }), diff --git a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts index d74b2e908..c76298dc5 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; -import ts from 'typescript'; +import type ts from 'typescript'; import { createOperationKey, operationResponsesMap } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; -import { $, isTsDsl } from '~/ts-dsl'; +import { $ } from '~/ts-dsl'; import { refToName } from '~/utils/ref'; import type { HeyApiTransformersPlugin } from './types'; @@ -17,21 +17,7 @@ const buildingSymbols = new Set(); type Expr = ReturnType; -const ensureStatements = ( - nodes: Array, -): Array> => - nodes.map((node) => $.stmt(node).$render()); - -const isNodeReturnStatement = ({ - node, -}: { - node: ts.Expression | ts.Statement | Expr; -}) => { - if (isTsDsl(node)) { - node = node.$render(); - } - return node.kind === ts.SyntaxKind.ReturnStatement; -}; +const isNodeReturnStatement = (node: Expr) => node['~dsl'] === 'ReturnTsDsl'; const schemaResponseTransformerNodes = ({ plugin, @@ -48,7 +34,7 @@ const schemaResponseTransformerNodes = ({ // append return statement if one does not already exist if (nodes.length) { const last = nodes[nodes.length - 1]!; - if (!isNodeReturnStatement({ node: last })) { + if (!isNodeReturnStatement(last)) { nodes.push($.return(dataVariableName)); } } @@ -66,7 +52,7 @@ const processSchemaType = ({ | ReturnType; plugin: HeyApiTransformersPlugin['Instance']; schema: IR.SchemaObject; -}): Array => { +}): Array => { if (schema.$ref) { const query: SymbolMeta = { category: 'transform', @@ -115,7 +101,7 @@ const processSchemaType = ({ // TODO: parser - add types, generate types without transforms $.func() .param(dataVariableName, (p) => p.type('any')) - .do(...ensureStatements(nodes)), + .do(...nodes), ); plugin.addNode(node); } @@ -172,10 +158,11 @@ const processSchemaType = ({ return []; } + // TODO: remove // Ensure the map callback has a return statement for the item - const mapCallbackStatements = ensureStatements(nodes); + const mapCallbackStatements: Array = nodes; const hasReturnStatement = mapCallbackStatements.some((stmt) => - isNodeReturnStatement({ node: stmt }), + isNodeReturnStatement(stmt), ); if (!hasReturnStatement) { @@ -196,7 +183,7 @@ const processSchemaType = ({ } if (schema.type === 'object') { - let nodes: Array = []; + let nodes: Array = []; const required = schema.required ?? []; for (const name in schema.properties) { @@ -225,7 +212,7 @@ const processSchemaType = ({ // todo: Probably, it would make more sense to go with if(x !== undefined && x !== null) instead of if(x) // this place influences all underlying transformers, while it's not exactly transformer itself // Keep in mind that !!0 === false, so it already makes output for Bigint undesirable - $.if(propertyAccessExpression).do(...ensureStatements(propertyNodes)), + $.if(propertyAccessExpression).do(...propertyNodes), ); } } @@ -242,7 +229,7 @@ const processSchemaType = ({ }); } - let arrayNodes: Array = []; + let arrayNodes: Array = []; // process 2 items if one of them is null if ( schema.logicalOperator === 'and' || @@ -262,10 +249,7 @@ const processSchemaType = ({ arrayNodes = arrayNodes.concat(nodes); } else { // processed means the item was transformed - arrayNodes.push( - $.if('item').do(...ensureStatements(nodes)), - $.return('item'), - ); + arrayNodes.push($.if('item').do(...nodes), $.return('item')); } } } @@ -358,7 +342,7 @@ export const handler: HeyApiTransformersPlugin['Handler'] = ({ plugin }) => { .async() .param(dataVariableName, (p) => p.type('any')) .returns($.type('Promise').generic(symbolResponse)) - .do(...ensureStatements(nodes)), + .do(...nodes), ); plugin.addNode(value); }, diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts index 1cf7b2ac3..a68ffd8aa 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts @@ -1,10 +1,11 @@ +import { fromRef } from '@hey-api/codegen-core'; + import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import { createSchemaComment } from '~/plugins/shared/utils/schema'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; -import { $ } from '~/ts-dsl'; +import { $, numberRegExp } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; -import { numberRegExp } from '~/utils/regexp'; import { stringCase } from '~/utils/stringCase'; import type { HeyApiTypeScriptPlugin } from '../types'; @@ -90,7 +91,7 @@ export const exportType = ({ schema: IR.SchemaObject; type: MaybeTsDsl; }) => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); // root enums have an additional export if (schema.type === 'enum' && plugin.config.enums.enabled) { @@ -110,10 +111,10 @@ export const exportType = ({ const symbolObject = plugin.registerSymbol({ meta: { category: 'utility', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -138,10 +139,10 @@ export const exportType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -153,7 +154,9 @@ export const exportType = ({ .alias(symbol) .export() .$if(createSchemaComment(schema), (t, v) => t.doc(v)) - .type($.type(symbol).idx($.type(symbol).typeof().keyof()).typeof()); + .type( + $.type(symbol).idx($.type(symbol).typeofType().keyof()).typeofType(), + ); plugin.addNode(node); return; } else if ( @@ -168,10 +171,10 @@ export const exportType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -199,10 +202,10 @@ export const exportType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts index 872a819ee..40bd6e739 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts @@ -1,3 +1,5 @@ +import { fromRef } from '@hey-api/codegen-core'; + import { operationResponsesMap } from '~/ir/operation'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; @@ -123,11 +125,11 @@ const operationToDataType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -164,11 +166,11 @@ export const operationToType = ({ const symbolErrors = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'errors', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -192,11 +194,11 @@ export const operationToType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'error', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -219,11 +221,11 @@ export const operationToType = ({ const symbolResponses = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'responses', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -247,11 +249,11 @@ export const operationToType = ({ const symbol = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'response', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/types.d.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/types.d.ts index 7a58fb3b3..398b5ff6f 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/types.d.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/types.d.ts @@ -1,12 +1,10 @@ -import type { SymbolMeta } from '@hey-api/codegen-core'; - -import type { ToRefs } from '~/plugins'; +import type { Refs, SymbolMeta } from '@hey-api/codegen-core'; import type { HeyApiTypeScriptPlugin } from '../types'; export type IrSchemaToAstOptions = { plugin: HeyApiTypeScriptPlugin['Instance']; - state: ToRefs; + state: Refs; }; export type PluginState = Pick, 'path'> & diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts index b46c67b90..775f3a0cd 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts @@ -1,4 +1,5 @@ import type { Symbol } from '@hey-api/codegen-core'; +import { fromRef } from '@hey-api/codegen-core'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -28,11 +29,11 @@ const operationToDataType = ({ const symbolWebhookPayload = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'webhook', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ @@ -76,11 +77,11 @@ const operationToDataType = ({ const symbolWebhookRequest = plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'webhook', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'typescript', }, name: buildName({ diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts index 859fa6a97..393426a3e 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts @@ -1,10 +1,10 @@ import type { Symbol } from '@hey-api/codegen-core'; +import { refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins'; -import { toRefs } from '~/plugins/shared/utils/refs'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; @@ -127,7 +127,7 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { 'server', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ path: event._path, tags: event.tags, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/array.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/array.ts index b2d3e1239..e3142631b 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/array.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; @@ -29,7 +30,7 @@ export const arrayToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); itemTypes.push(type); diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts index 228da0495..ea594c535 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { IR } from '~/ir/types'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { createSchemaComment } from '~/plugins/shared/utils/schema'; import type { TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; @@ -28,7 +29,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); const isRequired = required.includes(name); diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/tuple.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/tuple.ts index 4fa50add0..cb87a71e5 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/tuple.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; import { $ } from '~/ts-dsl'; @@ -24,7 +25,7 @@ export const tupleToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); itemTypes.push(type); diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts index 419567dd5..baecd8563 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/mutationOptions.ts @@ -1,11 +1,12 @@ import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; +import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; import { createOperationComment } from '~/plugins/shared/utils/operation'; import { $ } from '~/ts-dsl'; import { handleMeta } from './meta'; import type { PiniaColadaPlugin } from './types'; -import { useTypeData, useTypeError, useTypeResponse } from './useType'; +import { useTypeError, useTypeResponse } from './useType'; import { getPublicTypeData } from './utils'; export const createMutationOptions = ({ @@ -15,32 +16,26 @@ export const createMutationOptions = ({ }: { operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; - queryFn: string; + queryFn: ReturnType; }): void => { const symbolMutationOptionsType = plugin.referenceSymbol({ category: 'external', resource: `${plugin.name}.UseMutationOptions`, }); - const typeData = useTypeData({ operation, plugin }); - const typeError = useTypeError({ operation, plugin }); - const typeResponse = useTypeResponse({ operation, plugin }); - const { isNuxtClient, strippedTypeData } = getPublicTypeData({ - plugin, - typeData, - }); - // TODO: better types syntax - const mutationType = isNuxtClient - ? `${symbolMutationOptionsType.placeholder}<${typeResponse}, ${strippedTypeData}, ${typeError}>` - : `${symbolMutationOptionsType.placeholder}<${typeResponse}, ${typeData}, ${typeError}>`; + const client = getClientPlugin(plugin.context.config); + const isNuxtClient = client.name === '@hey-api/client-nuxt'; + + const typeData = getPublicTypeData({ isNuxtClient, operation, plugin }); - const fnOptions = 'fnOptions'; + const options = plugin.symbol('options'); + const fnOptions = plugin.symbol('vars'); const awaitSdkFn = $(queryFn) .call( $.object() .pretty() - .spread('options') + .spread(options) .spread(fnOptions) .prop('throwOnError', $.literal(true)), ) @@ -64,7 +59,9 @@ export const createMutationOptions = ({ $.func() .async() .param(fnOptions, (p) => - p.$if(isNuxtClient, (f) => f.type(`Partial<${strippedTypeData}>`)), + p.$if(isNuxtClient, (f) => + f.type($.type('Partial').generic(typeData)), + ), ) .do(...statements), ) @@ -84,10 +81,15 @@ export const createMutationOptions = ({ ) .assign( $.func() - .param('options', (p) => - p.optional().type(`Partial<${strippedTypeData}>`), + .param(options, (p) => + p.optional().type($.type('Partial').generic(typeData)), + ) + .returns( + $.type(symbolMutationOptionsType) + .generic(useTypeResponse({ operation, plugin })) + .generic(typeData) + .generic(useTypeError({ operation, plugin })), ) - .returns(mutationType) .do($.return(mutationOpts)), ); plugin.addNode(statement); diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts index 3c9ace091..3573fa904 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryKey.ts @@ -4,11 +4,13 @@ import { clientFolderAbsolutePath } from '~/generate/client'; import { hasOperationDataRequired } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; -import { getClientBaseUrlKey } from '~/plugins/@hey-api/client-core/utils'; +import { + getClientBaseUrlKey, + getClientPlugin, +} from '~/plugins/@hey-api/client-core/utils'; import { $ } from '~/ts-dsl'; import type { PiniaColadaPlugin } from './types'; -import { useTypeData } from './useType'; import { getPublicTypeData } from './utils'; const TOptionsType = 'TOptions'; @@ -79,7 +81,18 @@ export const createQueryKeyFunction = ({ .prop('_id', 'id') .prop( baseUrlKey, - `options?.${baseUrlKey} || (options?.client ?? ${symbolClient?.placeholder}).getConfig().${baseUrlKey}`, + $('options') + .attr(baseUrlKey) + .optional() + .or( + $('options') + .attr('client') + .optional() + .$if(symbolClient, (a, v) => a.coalesce(v)) + .attr('getConfig') + .call() + .attr(baseUrlKey), + ), ) .as(returnType), ), @@ -196,8 +209,8 @@ export const queryKeyStatement = ({ plugin: PiniaColadaPlugin['Instance']; symbol: Symbol; }) => { - const typeData = useTypeData({ operation, plugin }); - const { strippedTypeData } = getPublicTypeData({ plugin, typeData }); + const client = getClientPlugin(plugin.context.config); + const isNuxtClient = client.name === '@hey-api/client-nuxt'; const statement = $.const(symbol) .export() .assign( @@ -205,7 +218,7 @@ export const queryKeyStatement = ({ .param('options', (p) => p .required(hasOperationDataRequired(operation)) - .type(strippedTypeData), + .type(getPublicTypeData({ isNuxtClient, operation, plugin })), ) .do( createQueryKeyLiteral({ diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts index 6d1e43595..8111f156a 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/queryOptions.ts @@ -1,5 +1,6 @@ import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; +import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; import { createOperationComment, hasOperationSse, @@ -14,7 +15,6 @@ import { queryKeyStatement, } from './queryKey'; import type { PiniaColadaPlugin } from './types'; -import { useTypeData } from './useType'; import { getPublicTypeData } from './utils'; const optionsParamName = 'options'; @@ -27,7 +27,7 @@ export const createQueryOptions = ({ }: { operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; - queryFn: string; + queryFn: ReturnType; }): void => { if (hasOperationSse({ operation })) { return; @@ -85,11 +85,9 @@ export const createQueryOptions = ({ ); } - const typeData = useTypeData({ operation, plugin }); - const { strippedTypeData } = getPublicTypeData({ - plugin, - typeData, - }); + const client = getClientPlugin(plugin.context.config); + const isNuxtClient = client.name === '@hey-api/client-nuxt'; + const typeData = getPublicTypeData({ isNuxtClient, operation, plugin }); const awaitSdkFn = $(queryFn) .call( $.object() @@ -149,7 +147,7 @@ export const createQueryOptions = ({ $(symbolDefineQueryOptions).call( $.func() .param(optionsParamName, (p) => - p.required(isRequiredOptions).type(strippedTypeData), + p.required(isRequiredOptions).type(typeData), ) .do($.return(queryOpts)), ), diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/useType.ts b/packages/openapi-ts/src/plugins/@pinia/colada/useType.ts index a0215d091..274580b5c 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/useType.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/useType.ts @@ -1,6 +1,7 @@ import type { IR } from '~/ir/types'; import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; import { operationOptionsType } from '~/plugins/@hey-api/sdk/shared/operation'; +import { $ } from '~/ts-dsl'; import type { PiniaColadaPlugin } from './types'; @@ -10,10 +11,9 @@ export const useTypeData = ({ }: { operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; -}): string => { +}): ReturnType => { const pluginSdk = plugin.getPluginOrThrow('@hey-api/sdk'); - const typeData = operationOptionsType({ operation, plugin: pluginSdk }); - return typeData; + return operationOptionsType({ operation, plugin: pluginSdk }); }; export const useTypeError = ({ @@ -22,28 +22,23 @@ export const useTypeError = ({ }: { operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; -}): string => { +}): ReturnType => { const client = getClientPlugin(plugin.context.config); - const symbolErrorType = plugin.querySymbol({ category: 'type', resource: 'operation', resourceId: operation.id, role: 'error', }); - - let typeErrorName: string | undefined = symbolErrorType?.placeholder; - if (!typeErrorName) { - typeErrorName = 'Error'; - } + const symbolError = symbolErrorType || 'Error'; if (client.name === '@hey-api/client-axios') { const symbol = plugin.referenceSymbol({ category: 'external', resource: 'axios.AxiosError', }); - typeErrorName = `${symbol.placeholder}<${typeErrorName}>`; + return $.type(symbol).generic(symbolError); } - return typeErrorName; + return $.type(symbolError); }; export const useTypeResponse = ({ @@ -52,12 +47,12 @@ export const useTypeResponse = ({ }: { operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; -}): string => { +}): ReturnType => { const symbolResponseType = plugin.querySymbol({ category: 'type', resource: 'operation', resourceId: operation.id, role: 'response', }); - return symbolResponseType?.placeholder || 'unknown'; + return $.type(symbolResponseType ?? 'unknown'); }; diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/utils.ts b/packages/openapi-ts/src/plugins/@pinia/colada/utils.ts index 9164b3ee7..19f0f9039 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/utils.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/utils.ts @@ -1,19 +1,20 @@ -import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; +import type { IR } from '~/ir/types'; +import { $ } from '~/ts-dsl'; import type { PiniaColadaPlugin } from './types'; +import { useTypeData } from './useType'; export const getPublicTypeData = ({ + isNuxtClient, + operation, plugin, - typeData, }: { + isNuxtClient: boolean; + operation: IR.OperationObject; plugin: PiniaColadaPlugin['Instance']; - typeData: string; }) => { - const client = getClientPlugin(plugin.context.config); - const isNuxtClient = client.name === '@hey-api/client-nuxt'; - const strippedTypeData = isNuxtClient - ? `Omit<${typeData}, 'composable'>` + const typeData = useTypeData({ operation, plugin }); + return isNuxtClient + ? $.type('Omit').generic(typeData).generic('composable') : typeData; - - return { isNuxtClient, strippedTypeData }; }; diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/v0/plugin.ts b/packages/openapi-ts/src/plugins/@pinia/colada/v0/plugin.ts index 57ddd4317..07e9d645b 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/v0/plugin.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/v0/plugin.ts @@ -1,5 +1,6 @@ import { registryName } from '~/plugins/@hey-api/sdk/shared/class'; import { operationClasses } from '~/plugins/@hey-api/sdk/shared/operation'; +import { $ } from '~/ts-dsl'; import { stringCase } from '~/utils/stringCase'; import { createMutationOptions } from '../mutationOptions'; @@ -67,7 +68,7 @@ export const handlerV0: PiniaColadaPlugin['Handler'] = ({ plugin }) => { const entry = classes ? classes.values().next().value : undefined; // TODO: this should use class graph to determine correct path string // as it's really easy to break once we change the class casing - let queryFn: string; + let queryFn: ReturnType; if (entry) { const symbolClass = plugin.referenceSymbol({ category: 'utility', @@ -75,25 +76,24 @@ export const handlerV0: PiniaColadaPlugin['Handler'] = ({ plugin }) => { resourceId: entry.path[0], tool: 'sdk', }); - queryFn = [ - symbolClass.placeholder, - ...(sdkPlugin.config.instance ? [registryName, 'get()'] : []), - ...entry.path.slice(1).map((className) => - stringCase({ - case: 'camelCase', - value: className, - }), - ), - entry.methodName, - ] - .filter(Boolean) - .join('.'); + queryFn = $(symbolClass).$if(sdkPlugin.config.instance, (e) => + e.attr(registryName).attr('get').call(), + ); + for (const className of entry.path.slice(1)) { + const cls = stringCase({ + case: 'camelCase', + value: className, + }); + queryFn = queryFn.attr(cls); + } + queryFn = queryFn.attr(entry.methodName); } else { - queryFn = plugin.referenceSymbol({ + const symbol = plugin.referenceSymbol({ category: 'sdk', resource: 'operation', resourceId: operation.id, - }).placeholder; + }); + queryFn = $(symbol); } if (plugin.hooks.operation.isQuery(operation)) { diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts index c0a01602b..03b6592cb 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/queryKey.ts @@ -67,7 +67,18 @@ export const createQueryKeyFunction = ({ .prop('_id', 'id') .prop( baseUrlKey, - `options?.${baseUrlKey} || (options?.client ?? ${symbolClient?.placeholder}).getConfig().${baseUrlKey}`, + $('options') + .attr(baseUrlKey) + .optional() + .or( + $('options') + .attr('client') + .optional() + .$if(symbolClient, (a, v) => a.coalesce(v)) + .attr('getConfig') + .call() + .attr(baseUrlKey), + ), ) .as(returnType), ), @@ -169,7 +180,7 @@ export const queryKeyStatement = ({ operation: IR.OperationObject; plugin: PluginInstance; symbol: Symbol; - typeQueryKey?: string; + typeQueryKey?: ReturnType; }) => { const typeData = useTypeData({ operation, plugin }); const statement = $.const(symbol) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/shared/useType.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/shared/useType.ts index 7fce33fe5..b135e983b 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/shared/useType.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/shared/useType.ts @@ -1,6 +1,7 @@ import type { IR } from '~/ir/types'; import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; import { operationOptionsType } from '~/plugins/@hey-api/sdk/shared/operation'; +import { $ } from '~/ts-dsl'; import type { PluginInstance } from '../types'; @@ -10,10 +11,9 @@ export const useTypeData = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; -}): string => { +}): ReturnType => { const pluginSdk = plugin.getPluginOrThrow('@hey-api/sdk'); - const typeData = operationOptionsType({ operation, plugin: pluginSdk }); - return typeData; + return operationOptionsType({ operation, plugin: pluginSdk }); }; export const useTypeError = ({ @@ -22,32 +22,28 @@ export const useTypeError = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; -}): string => { +}): ReturnType => { const client = getClientPlugin(plugin.context.config); - const symbolErrorType = plugin.querySymbol({ category: 'type', resource: 'operation', resourceId: operation.id, role: 'error', }); - - let typeErrorName: string | undefined = symbolErrorType?.placeholder; - if (!typeErrorName) { - const symbol = plugin.referenceSymbol({ + const symbolError = + symbolErrorType || + plugin.referenceSymbol({ category: 'external', resource: `${plugin.name}.DefaultError`, }); - typeErrorName = symbol.placeholder; - } if (client.name === '@hey-api/client-axios') { const symbol = plugin.referenceSymbol({ category: 'external', resource: 'axios.AxiosError', }); - typeErrorName = `${symbol.placeholder}<${typeErrorName}>`; + return $.type(symbol).generic(symbolError); } - return typeErrorName; + return $.type(symbolError); }; export const useTypeResponse = ({ @@ -56,12 +52,12 @@ export const useTypeResponse = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; -}): string => { +}): ReturnType => { const symbolResponseType = plugin.querySymbol({ category: 'type', resource: 'operation', resourceId: operation.id, role: 'response', }); - return symbolResponseType?.placeholder || 'unknown'; + return $.type(symbolResponseType ?? 'unknown'); }; diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts index 817992360..57ae8d17b 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/infiniteQueryOptions.ts @@ -1,3 +1,5 @@ +import { ref } from '@hey-api/codegen-core'; + import { operationPagination } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -40,7 +42,15 @@ const createInfiniteParamsFunction = ({ $.func() .generic('K', (g) => g.extends( - "Pick[0], 'body' | 'headers' | 'path' | 'query'>", + $.type('Pick').generics( + $.type('QueryKey').generic('Options').idx(0), + $.type.or( + $.type.literal('body'), + $.type.literal('headers'), + $.type.literal('path'), + $.type.literal('query'), + ), + ), ), ) .param('queryKey', (p) => p.type('QueryKey')) @@ -100,7 +110,7 @@ export const createInfiniteQueryOptions = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; - queryFn: string; + queryFn: ReturnType; }): void => { const pagination = operationPagination({ context: plugin.context, @@ -147,7 +157,6 @@ export const createInfiniteQueryOptions = ({ }); const typeData = useTypeData({ operation, plugin }); - const typeError = useTypeError({ operation, plugin }); const typeResponse = useTypeResponse({ operation, plugin }); const symbolQueryKeyType = plugin.referenceSymbol({ @@ -155,16 +164,22 @@ export const createInfiniteQueryOptions = ({ resource: 'QueryKey', tool: plugin.name, }); - const typeQueryKey = `${symbolQueryKeyType.placeholder}<${typeData}>`; - const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`; + const typeQueryKey = $.type(symbolQueryKeyType).generic(typeData); + const typePageObjectParam = $.type('Pick').generics( + typeQueryKey.idx(0), + $.type.or( + $.type.literal('body'), + $.type.literal('headers'), + $.type.literal('path'), + $.type.literal('query'), + ), + ); const pluginTypeScript = plugin.getPluginOrThrow('@hey-api/typescript'); const type = pluginTypeScript.api.schemaToType({ plugin: pluginTypeScript, schema: pagination.schema, state: { - path: { - value: [], - }, + path: ref([]), }, }); @@ -204,7 +219,7 @@ export const createInfiniteQueryOptions = ({ .type(typePageObjectParam) .hint('@ts-ignore') .assign( - $.ternary($('pageParam').typeof().eq($.literal('object'))) + $.ternary($('pageParam').typeofExpr().eq($.literal('object'))) .do('pageParam') .otherwise( $.object() @@ -264,10 +279,9 @@ export const createInfiniteQueryOptions = ({ ), ) .generics( - // TODO: better types syntax typeResponse, - typeError || 'unknown', - `${symbolInfiniteDataType.placeholder}<${typeResponse}>`, + useTypeError({ operation, plugin }), + $.type(symbolInfiniteDataType).generic(typeResponse), typeQueryKey, $.type.or(type, typePageObjectParam), ), diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts index 6aad6b0f1..69c5fb3c9 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/mutationOptions.ts @@ -15,7 +15,7 @@ export const createMutationOptions = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; - queryFn: string; + queryFn: ReturnType; }): void => { const symbolMutationOptionsType = plugin.referenceSymbol({ category: 'external', @@ -23,10 +23,10 @@ export const createMutationOptions = ({ }); const typeData = useTypeData({ operation, plugin }); - const typeError = useTypeError({ operation, plugin }); - const typeResponse = useTypeResponse({ operation, plugin }); - // TODO: better types syntax - const mutationType = `${symbolMutationOptionsType.placeholder}<${typeResponse}, ${typeError}, ${typeData}>`; + const mutationType = $.type(symbolMutationOptionsType) + .generic(useTypeResponse({ operation, plugin })) + .generic(useTypeError({ operation, plugin })) + .generic(typeData); const fnOptions = 'fnOptions'; @@ -63,7 +63,9 @@ export const createMutationOptions = ({ ) .assign( $.func() - .param('options', (p) => p.optional().type(`Partial<${typeData}>`)) + .param('options', (p) => + p.optional().type($.type('Partial').generic(typeData)), + ) .returns(mutationType) .do( $.const(mutationOptionsFn) diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/plugin.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/plugin.ts index 4dbd74c71..3adc0421b 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/plugin.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/plugin.ts @@ -1,5 +1,6 @@ import { registryName } from '~/plugins/@hey-api/sdk/shared/class'; import { operationClasses } from '~/plugins/@hey-api/sdk/shared/operation'; +import { $ } from '~/ts-dsl'; import { stringCase } from '~/utils/stringCase'; import type { PluginHandler } from '../types'; @@ -91,7 +92,7 @@ export const handlerV5: PluginHandler = ({ plugin }) => { const entry = classes ? classes.values().next().value : undefined; // TODO: this should use class graph to determine correct path string // as it's really easy to break once we change the class casing - let queryFn: string; + let queryFn: ReturnType; if (entry) { const symbolClass = plugin.referenceSymbol({ category: 'utility', @@ -99,25 +100,24 @@ export const handlerV5: PluginHandler = ({ plugin }) => { resourceId: entry.path[0], tool: 'sdk', }); - queryFn = [ - symbolClass.placeholder, - ...(sdkPlugin.config.instance ? [registryName, 'get()'] : []), - ...entry.path.slice(1).map((className) => - stringCase({ - case: 'camelCase', - value: className, - }), - ), - entry.methodName, - ] - .filter(Boolean) - .join('.'); + queryFn = $(symbolClass).$if(sdkPlugin.config.instance, (e) => + e.attr(registryName).attr('get').call(), + ); + for (const className of entry.path.slice(1)) { + const cls = stringCase({ + case: 'camelCase', + value: className, + }); + queryFn = queryFn.attr(cls); + } + queryFn = queryFn.attr(entry.methodName); } else { - queryFn = plugin.referenceSymbol({ + const symbol = plugin.referenceSymbol({ category: 'sdk', resource: 'operation', resourceId: operation.id, - }).placeholder; + }); + queryFn = $(symbol); } if (plugin.hooks.operation.isQuery(operation)) { diff --git a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts index bec556434..72156aa31 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/query-core/v5/queryOptions.ts @@ -26,7 +26,7 @@ export const createQueryOptions = ({ }: { operation: IR.OperationObject; plugin: PluginInstance; - queryFn: string; + queryFn: ReturnType; }): void => { if (hasOperationSse({ operation })) { return; @@ -67,8 +67,6 @@ export const createQueryOptions = ({ }); plugin.addNode(node); - const typeData = useTypeData({ operation, plugin }); - const typeError = useTypeError({ operation, plugin }); const typeResponse = useTypeResponse({ operation, plugin }); const awaitSdkFn = $(queryFn) @@ -128,14 +126,16 @@ export const createQueryOptions = ({ .assign( $.func() .param(optionsParamName, (p) => - p.required(isRequiredOptions).type(typeData), + p + .required(isRequiredOptions) + .type(useTypeData({ operation, plugin })), ) .do( $(symbolQueryOptions) .call(queryOptionsObj) .generics( typeResponse, - typeError, + useTypeError({ operation, plugin }), typeResponse, $(symbolQueryKey).returnType(), ) diff --git a/packages/openapi-ts/src/plugins/arktype/shared/types.d.ts b/packages/openapi-ts/src/plugins/arktype/shared/types.d.ts index c68359fcf..6a558b31e 100644 --- a/packages/openapi-ts/src/plugins/arktype/shared/types.d.ts +++ b/packages/openapi-ts/src/plugins/arktype/shared/types.d.ts @@ -1,8 +1,7 @@ -import type { SymbolMeta } from '@hey-api/codegen-core'; +import type { Refs, SymbolMeta } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { IR } from '~/ir/types'; -import type { ToRefs } from '~/plugins'; import type { $ } from '~/ts-dsl'; import type { ArktypePlugin } from '../types'; @@ -16,7 +15,7 @@ export type Ast = { export type IrSchemaToAstOptions = { plugin: ArktypePlugin['Instance']; - state: ToRefs; + state: Refs; }; export type PluginState = Pick, 'path'> & diff --git a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts index c890969d0..fb8273a0a 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { fromRef, refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins/shared/types/schema'; -import { toRefs } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; @@ -53,7 +53,7 @@ export const irSchemaToAst = ({ .call($.func().returns('any').do($.return(refSymbol))); ast.expression = lazyExpression; ast.hasLazyExpression = true; - state.hasLazyExpression.value = true; + state.hasLazyExpression['~ref'] = true; } } else if (schema.type) { const typeAst = irSchemaWithTypeToAst({ @@ -239,16 +239,16 @@ const handleComponent = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): void => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'arktype', }, name: buildName({ @@ -260,7 +260,7 @@ const handleComponent = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, tool: 'arktype', @@ -298,7 +298,7 @@ export const handlerV2: ArktypePlugin['Handler'] = ({ plugin }) => { 'schema', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path: event._path, tags: event.tags, diff --git a/packages/openapi-ts/src/plugins/arktype/v2/toAst/object.ts b/packages/openapi-ts/src/plugins/arktype/v2/toAst/object.ts index 60b5eb8ec..7bcd81afb 100644 --- a/packages/openapi-ts/src/plugins/arktype/v2/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/arktype/v2/toAst/object.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins/shared/types/schema'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; // import { identifiers } from '../../constants'; @@ -31,7 +32,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); if (propertyAst.hasLazyExpression) { @@ -79,7 +80,7 @@ export const objectToAst = ({ schema: schema.additionalProperties, state: { ...state, - path: toRef([...state.path.value, 'additionalProperties']), + path: ref([...fromRef(state.path), 'additionalProperties']), }, }); // name: identifiers.record, diff --git a/packages/openapi-ts/src/plugins/index.ts b/packages/openapi-ts/src/plugins/index.ts index 73f8cec72..2a0d4dd8a 100644 --- a/packages/openapi-ts/src/plugins/index.ts +++ b/packages/openapi-ts/src/plugins/index.ts @@ -1,3 +1,2 @@ -export type { ToRefs } from './shared/types/refs'; export type { SchemaWithType } from './shared/types/schema'; export type { DefinePlugin, Plugin } from './types'; diff --git a/packages/openapi-ts/src/plugins/shared/types/refs.d.ts b/packages/openapi-ts/src/plugins/shared/types/refs.d.ts deleted file mode 100644 index 79c839311..000000000 --- a/packages/openapi-ts/src/plugins/shared/types/refs.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Ref wrapper which ensures a stable reference for a value. - * - * @example - * ```ts - * type NumRef = Ref; // { value: number } - * const num: NumRef = { value: 42 }; - * console.log(num.value); // 42 - * ``` - */ -type Ref = { value: T }; - -/** - * Utility type: wraps a value in a Ref. - * - * @example - * ```ts - * type R = ToRef; // { value: number } - * ``` - */ -export type ToRef = Ref; - -/** - * Utility type: unwraps a Ref to its value type. - * @example - * ```ts - * type N = FromRef<{ value: number }>; // number - * ``` - */ -export type FromRef = T extends Ref ? V : T; - -/** - * Maps every property of a Ref-wrapped object back to its plain value. - * - * @example - * ```ts - * type Foo = { a: number; b: string }; - * type Refs = ToRefs; // { a: Ref; b: Ref } - * type Foo2 = FromRefs; // { a: number; b: string } - * ``` - */ -export type FromRefs = { - [K in keyof T]: T[K] extends Ref ? V : T[K]; -}; - -/** - * Maps every property of `T` to a `Ref` of that property. - * - * @example - * ```ts - * type Foo = { a: number; b: string }; - * type Refs = ToRefs; // { a: Ref; b: Ref } - * const refs: Refs = { a: { value: 1 }, b: { value: 'x' } }; - * console.log(refs.a.value, refs.b.value); // 1 'x' - * ``` - */ -export type ToRefs = { - [K in keyof T]: Ref; -}; diff --git a/packages/openapi-ts/src/plugins/shared/utils/__tests__/refs.test.ts b/packages/openapi-ts/src/plugins/shared/utils/__tests__/refs.test.ts deleted file mode 100644 index afc221d63..000000000 --- a/packages/openapi-ts/src/plugins/shared/utils/__tests__/refs.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import { fromRef, fromRefs, toRef, toRefs } from '../refs'; - -describe('toRef', () => { - it('wraps a primitive value', () => { - expect(toRef(42)).toEqual({ value: 42 }); - expect(toRef('x')).toEqual({ value: 'x' }); - }); - - it('wraps an object', () => { - const obj = { foo: 1 }; - expect(toRef(obj)).toEqual({ value: obj }); - }); -}); - -describe('fromRef', () => { - it('unwraps a primitive value', () => { - expect(fromRef({ value: 42 })).toBe(42); - expect(fromRef({ value: 'x' })).toBe('x'); - }); - - it('unwraps an object', () => { - const obj = { foo: 1 }; - expect(fromRef({ value: obj })).toBe(obj); - }); -}); - -describe('toRef <-> fromRef roundtrip', () => { - it('roundtrips value -> ref -> value', () => { - expect(fromRef(toRef(123))).toBe(123); - const obj = { foo: 'bar' }; - expect(fromRef(toRef(obj))).toBe(obj); - }); -}); - -describe('toRefs', () => { - it('wraps primitives', () => { - expect(toRefs({ a: 1, b: 'x' })).toEqual({ - a: { value: 1 }, - b: { value: 'x' }, - }); - }); - - it('wraps empty object', () => { - expect(toRefs({})).toEqual({}); - }); - - it('wraps nested objects shallowly', () => { - const input = { a: { foo: 1 }, b: [1, 2] }; - const refs = toRefs(input); - expect(refs.a.value).toEqual({ foo: 1 }); - expect(refs.b.value).toEqual([1, 2]); - }); -}); - -describe('fromRefs', () => { - it('unwraps primitives', () => { - expect(fromRefs({ a: { value: 1 }, b: { value: 'x' } })).toEqual({ - a: 1, - b: 'x', - }); - }); - - it('unwraps empty object', () => { - expect(fromRefs({})).toEqual({}); - }); - - it('unwraps nested objects shallowly', () => { - const input = { a: { value: { foo: 1 } }, b: { value: [1, 2] } }; - expect(fromRefs(input)).toEqual({ a: { foo: 1 }, b: [1, 2] }); - }); -}); - -describe('toRefs <-> fromRefs roundtrip', () => { - it('roundtrips plain -> refs -> plain', () => { - const obj = { a: 1, b: 'x', c: [1, 2], d: { foo: 2 } }; - expect(fromRefs(toRefs(obj))).toEqual(obj); - }); - - it('roundtrips refs -> plain -> refs', () => { - const refs = { a: { value: 1 }, b: { value: 'x' }, c: { value: [1, 2] } }; - expect(toRefs(fromRefs(refs))).toEqual(refs); - }); -}); diff --git a/packages/openapi-ts/src/plugins/shared/utils/instance.ts b/packages/openapi-ts/src/plugins/shared/utils/instance.ts index 66e33f6c6..4b0d2ec01 100644 --- a/packages/openapi-ts/src/plugins/shared/utils/instance.ts +++ b/packages/openapi-ts/src/plugins/shared/utils/instance.ts @@ -312,20 +312,38 @@ export class PluginInstance { } registerSymbol(symbol: SymbolIn): Symbol { + return this.symbol(symbol.name, symbol); + } + + /** + * Executes plugin's handler function. + */ + async run(): Promise { + for (const hook of this.eventHooks['plugin:handler:before']) { + hook({ plugin: this }); + } + await this.handler({ plugin: this }); + for (const hook of this.eventHooks['plugin:handler:after']) { + hook({ plugin: this }); + } + } + + symbol(name: SymbolIn['name'], symbol?: Omit): Symbol { const symbolIn: SymbolIn = { ...symbol, exportFrom: - symbol.exportFrom ?? - (!symbol.external && + symbol?.exportFrom ?? + (!symbol?.external && this.context.config.output.indexFile && this.config.exportFromIndex ? ['index'] : undefined), - getFilePath: symbol.getFilePath ?? this.getSymbolFilePath.bind(this), + getFilePath: symbol?.getFilePath ?? this.getSymbolFilePath.bind(this), meta: { pluginName: path.isAbsolute(this.name) ? 'custom' : this.name, - ...symbol.meta, + ...symbol?.meta, }, + name, }; for (const hook of this.eventHooks['symbol:register:before']) { hook({ plugin: this, symbol: symbolIn }); @@ -337,19 +355,6 @@ export class PluginInstance { return symbolOut; } - /** - * Executes plugin's handler function. - */ - async run(): Promise { - for (const hook of this.eventHooks['plugin:handler:before']) { - hook({ plugin: this }); - } - await this.handler({ plugin: this }); - for (const hook of this.eventHooks['plugin:handler:after']) { - hook({ plugin: this }); - } - } - /** * @deprecated use addNode */ diff --git a/packages/openapi-ts/src/plugins/shared/utils/refs.ts b/packages/openapi-ts/src/plugins/shared/utils/refs.ts deleted file mode 100644 index 616136906..000000000 --- a/packages/openapi-ts/src/plugins/shared/utils/refs.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { FromRefs, ToRefs } from '../types/refs'; - -/** - * Wraps a single value in a Ref object. - * - * @example - * ```ts - * const r = toRef(123); // { value: 123 } - * console.log(r.value); // 123 - * ``` - */ -export const toRef = (value: T): { value: T } => ({ value }); - -/** - * Unwraps a single Ref object to its value. - * - * @example - * ```ts - * const r = { value: 42 }; - * const n = fromRef(r); // 42 - * console.log(n); // 42 - * ``` - */ -export const fromRef = (ref: { value: T }): T => ref.value; - -/** - * Converts an object of Refs back to a plain object (unwraps all refs). - * - * @example - * ```ts - * const refs = { a: { value: 1 }, b: { value: "x" } }; - * const plain = fromRefs(refs); // { a: 1, b: "x" } - * ``` - */ -export const fromRefs = >>( - obj: T, -): FromRefs => { - const result = {} as FromRefs; - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - result[key] = fromRef(obj[key]!) as (typeof result)[typeof key]; - } - } - return result; -}; - -/** - * Converts a plain object to an object of Refs (deep, per property). - * - * @example - * ```ts - * const obj = { a: 1, b: "x" }; - * const refs = toRefs(obj); // { a: { value: 1 }, b: { value: "x" } } - * ``` - */ -export const toRefs = >( - obj: T, -): ToRefs => { - const result = {} as ToRefs; - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - result[key] = toRef(obj[key]); - } - } - return result; -}; diff --git a/packages/openapi-ts/src/plugins/swr/v2/plugin.ts b/packages/openapi-ts/src/plugins/swr/v2/plugin.ts index 730e2ebfb..4e5734512 100644 --- a/packages/openapi-ts/src/plugins/swr/v2/plugin.ts +++ b/packages/openapi-ts/src/plugins/swr/v2/plugin.ts @@ -1,5 +1,6 @@ import { registryName } from '~/plugins/@hey-api/sdk/shared/class'; import { operationClasses } from '~/plugins/@hey-api/sdk/shared/operation'; +import { $ } from '~/ts-dsl'; import { stringCase } from '~/utils/stringCase'; import type { SwrPlugin } from '../types'; @@ -32,7 +33,7 @@ export const handlerV2: SwrPlugin['Handler'] = ({ plugin }) => { const entry = classes ? classes.values().next().value : undefined; // TODO: this should use class graph to determine correct path string // as it's really easy to break once we change the class casing - let queryFn: string; + let queryFn: ReturnType; if (entry) { const symbolClass = plugin.referenceSymbol({ category: 'utility', @@ -40,25 +41,24 @@ export const handlerV2: SwrPlugin['Handler'] = ({ plugin }) => { resourceId: entry.path[0], tool: 'sdk', }); - queryFn = [ - symbolClass.placeholder, - ...(sdkPlugin.config.instance ? [registryName, 'get()'] : []), - ...entry.path.slice(1).map((className) => - stringCase({ - case: 'camelCase', - value: className, - }), - ), - entry.methodName, - ] - .filter(Boolean) - .join('.'); + queryFn = $(symbolClass).$if(sdkPlugin.config.instance, (e) => + e.attr(registryName).attr('get').call(), + ); + for (const className of entry.path.slice(1)) { + const cls = stringCase({ + case: 'camelCase', + value: className, + }); + queryFn = queryFn.attr(cls); + } + queryFn = queryFn.attr(entry.methodName); } else { - queryFn = plugin.referenceSymbol({ + const symbol = plugin.referenceSymbol({ category: 'sdk', resource: 'operation', resourceId: operation.id, - }).placeholder; + }); + queryFn = $(symbol); } if (plugin.hooks.operation.isQuery(operation)) { diff --git a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts index 6a66acb91..aa3ccf11c 100644 --- a/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts +++ b/packages/openapi-ts/src/plugins/swr/v2/useSwr.ts @@ -16,7 +16,7 @@ export const createUseSwr = ({ }: { operation: IR.OperationObject; plugin: SwrPlugin['Instance']; - queryFn: string; + queryFn: ReturnType; }): void => { if (hasOperationSse({ operation })) { return; diff --git a/packages/openapi-ts/src/plugins/valibot/shared/export.ts b/packages/openapi-ts/src/plugins/valibot/shared/export.ts index de503e5bf..022f79aef 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/export.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/export.ts @@ -29,7 +29,7 @@ export const exportAst = ({ .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v), ) - .$if(state.hasLazyExpression.value, (c) => + .$if(state.hasLazyExpression['~ref'], (c) => c.type($.type(v).attr(ast.typeName || identifiers.types.GenericSchema)), ) .assign(pipesToAst({ pipes: ast.pipes, plugin })); diff --git a/packages/openapi-ts/src/plugins/valibot/shared/operation.ts b/packages/openapi-ts/src/plugins/valibot/shared/operation.ts index 7d36573c9..60aea87a2 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/operation.ts @@ -1,3 +1,5 @@ +import { fromRef } from '@hey-api/codegen-core'; + import { operationResponsesMap } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -115,15 +117,15 @@ export const irOperationToAst = ({ schemaData.required = [...requiredProperties]; - const ast = getAst(schemaData, state.path.value); + const ast = getAst(schemaData, fromRef(state.path)); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'valibot', }, name: buildName({ @@ -145,7 +147,7 @@ export const irOperationToAst = ({ const { response } = operationResponsesMap(operation); if (response) { - const path = [...state.path.value, 'responses']; + const path = [...fromRef(state.path), 'responses']; const ast = getAst(response, path); const symbol = plugin.registerSymbol({ meta: { @@ -154,7 +156,7 @@ export const irOperationToAst = ({ resource: 'operation', resourceId: operation.id, role: 'responses', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'valibot', }, name: buildName({ diff --git a/packages/openapi-ts/src/plugins/valibot/shared/types.d.ts b/packages/openapi-ts/src/plugins/valibot/shared/types.d.ts index 1ef7efb02..6ba568c47 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/types.d.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/types.d.ts @@ -1,8 +1,7 @@ -import type { SymbolMeta } from '@hey-api/codegen-core'; +import type { Refs, SymbolMeta } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { IR } from '~/ir/types'; -import type { ToRefs } from '~/plugins'; import type { $ } from '~/ts-dsl'; import type { ValibotPlugin } from '../types'; @@ -15,7 +14,7 @@ export type Ast = { export type IrSchemaToAstOptions = { plugin: ValibotPlugin['Instance']; - state: ToRefs; + state: Refs; }; export type PluginState = Pick, 'path'> & diff --git a/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts b/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts index 9c6c79bfc..1480049ff 100644 --- a/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/valibot/shared/webhook.ts @@ -1,3 +1,5 @@ +import { fromRef } from '@hey-api/codegen-core'; + import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -114,15 +116,15 @@ export const irWebhookToAst = ({ schemaData.required = [...requiredProperties]; - const ast = getAst(schemaData, state.path.value); + const ast = getAst(schemaData, fromRef(state.path)); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'webhook', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'valibot', }, name: buildName({ diff --git a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts index e10ec9015..641485704 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { fromRef, ref, refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins'; -import { toRef, toRefs } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; @@ -57,7 +57,7 @@ export const irSchemaToAst = ({ .attr(identifiers.schemas.lazy) .call($.func().do($(refSymbol).return())); ast.pipes.push(lazyExpression); - state.hasLazyExpression.value = true; + state.hasLazyExpression['~ref'] = true; } } else if (schema.type) { const typeAst = irSchemaWithTypeToAst({ @@ -84,7 +84,7 @@ export const irSchemaToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); return pipesToAst({ pipes: itemAst.pipes, plugin }); @@ -155,16 +155,16 @@ const handleComponent = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): void => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'valibot', }, name: buildName({ @@ -199,7 +199,7 @@ export const handlerV1: ValibotPlugin['Handler'] = ({ plugin }) => { 'schema', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path: event._path, tags: event.tags, @@ -208,7 +208,7 @@ export const handlerV1: ValibotPlugin['Handler'] = ({ plugin }) => { case 'operation': irOperationToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, @@ -244,7 +244,7 @@ export const handlerV1: ValibotPlugin['Handler'] = ({ plugin }) => { case 'webhook': irWebhookToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts index 2f9a5ac61..c60ae4504 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/array.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pipesToAst } from '../../shared/pipesToAst'; @@ -47,7 +48,7 @@ export const arrayToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); if (itemAst.hasLazyExpression) { diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts index 2c749d933..e8c145a88 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/object.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pipesToAst } from '../../shared/pipesToAst'; @@ -69,7 +70,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); if (propertyAst.hasLazyExpression) result.hasLazyExpression = true; @@ -87,7 +88,7 @@ export const objectToAst = ({ schema: schema.additionalProperties, state: { ...state, - path: toRef([...state.path.value, 'additionalProperties']), + path: ref([...fromRef(state.path), 'additionalProperties']), }, }); if (additionalAst.hasLazyExpression) result.hasLazyExpression = true; diff --git a/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts b/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts index aa9e92bb7..ab604c9f4 100644 --- a/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/valibot/v1/toAst/tuple.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pipesToAst } from '../../shared/pipesToAst'; @@ -41,7 +42,7 @@ export const tupleToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); if (schemaPipes.hasLazyExpression) { diff --git a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts index b588e9374..711da00db 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { fromRef, ref, refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins'; -import { toRef, toRefs } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; @@ -54,7 +54,7 @@ export const irSchemaToAst = ({ .attr(identifiers.lazy) .call($.func().returns('any').do($(refSymbol).return())); ast.hasLazyExpression = true; - state.hasLazyExpression.value = true; + state.hasLazyExpression['~ref'] = true; } } else if (schema.type) { const typeAst = irSchemaWithTypeToAst({ @@ -85,7 +85,7 @@ export const irSchemaToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }), ); @@ -175,16 +175,16 @@ const handleComponent = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): void => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -196,10 +196,10 @@ const handleComponent = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, @@ -236,7 +236,7 @@ export const handlerMini: ZodPlugin['Handler'] = ({ plugin }) => { 'schema', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path: event._path, tags: event.tags, @@ -245,7 +245,7 @@ export const handlerMini: ZodPlugin['Handler'] = ({ plugin }) => { case 'operation': irOperationToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, @@ -281,7 +281,7 @@ export const handlerMini: ZodPlugin['Handler'] = ({ plugin }) => { case 'webhook': irWebhookToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts index 6fe307e97..20177114d 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/array.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -44,7 +45,7 @@ export const arrayToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); if (itemAst.hasLazyExpression) { diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts index da7f10c66..74a9cc0fb 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/object.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -50,7 +51,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); if (propertyAst.hasLazyExpression) { @@ -74,7 +75,7 @@ export const objectToAst = ({ schema: schema.additionalProperties, state: { ...state, - path: toRef([...state.path.value, 'additionalProperties']), + path: ref([...fromRef(state.path), 'additionalProperties']), }, }); if (additionalAst.hasLazyExpression) result.hasLazyExpression = true; diff --git a/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts index 35b684fcb..9950206c9 100644 --- a/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/mini/toAst/tuple.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -39,7 +40,7 @@ export const tupleToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); tupleElements.push(itemSchema.expression); diff --git a/packages/openapi-ts/src/plugins/zod/shared/operation.ts b/packages/openapi-ts/src/plugins/zod/shared/operation.ts index 4a0497885..d62e6b875 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/operation.ts @@ -1,3 +1,5 @@ +import { fromRef } from '@hey-api/codegen-core'; + import { operationResponsesMap } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -115,15 +117,15 @@ export const irOperationToAst = ({ schemaData.required = [...requiredProperties]; - const ast = getAst(schemaData, state.path.value); + const ast = getAst(schemaData, fromRef(state.path)); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -135,11 +137,11 @@ export const irOperationToAst = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'operation', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, @@ -163,7 +165,7 @@ export const irOperationToAst = ({ const { response } = operationResponsesMap(operation); if (response) { - const path = [...state.path.value, 'responses']; + const path = [...fromRef(state.path), 'responses']; const ast = getAst(response, path); const symbol = plugin.registerSymbol({ meta: { @@ -172,7 +174,7 @@ export const irOperationToAst = ({ resource: 'operation', resourceId: operation.id, role: 'responses', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -188,7 +190,7 @@ export const irOperationToAst = ({ resource: 'operation', resourceId: operation.id, role: 'responses', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, diff --git a/packages/openapi-ts/src/plugins/zod/shared/types.d.ts b/packages/openapi-ts/src/plugins/zod/shared/types.d.ts index d59027099..101530ab3 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/types.d.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/types.d.ts @@ -1,8 +1,7 @@ -import type { SymbolMeta } from '@hey-api/codegen-core'; +import type { Refs, SymbolMeta } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { IR } from '~/ir/types'; -import type { ToRefs } from '~/plugins'; import type { $ } from '~/ts-dsl'; import type { ZodPlugin } from '../types'; @@ -15,7 +14,7 @@ export type Ast = { export type IrSchemaToAstOptions = { plugin: ZodPlugin['Instance']; - state: ToRefs; + state: Refs; }; export type PluginState = Pick, 'path'> & diff --git a/packages/openapi-ts/src/plugins/zod/shared/webhook.ts b/packages/openapi-ts/src/plugins/zod/shared/webhook.ts index 86e581cd9..9fdff26aa 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/webhook.ts @@ -1,3 +1,5 @@ +import { fromRef } from '@hey-api/codegen-core'; + import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; @@ -114,15 +116,15 @@ export const irWebhookToAst = ({ schemaData.required = [...requiredProperties]; - const ast = getAst(schemaData, state.path.value); + const ast = getAst(schemaData, fromRef(state.path)); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'webhook', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -134,11 +136,11 @@ export const irWebhookToAst = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'webhook', resourceId: operation.id, role: 'data', - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, diff --git a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts index ab5838c41..6eedd716c 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { fromRef, ref, refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins'; -import { toRef, toRefs } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; @@ -54,7 +54,7 @@ export const irSchemaToAst = ({ .attr(identifiers.lazy) .call($.func().do($(refSymbol).return())); ast.hasLazyExpression = true; - state.hasLazyExpression.value = true; + state.hasLazyExpression['~ref'] = true; } } else if (schema.type) { const typeAst = irSchemaWithTypeToAst({ @@ -80,7 +80,7 @@ export const irSchemaToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); return typeAst.expression; @@ -149,7 +149,7 @@ export const irSchemaToAst = ({ } } - if (state.hasLazyExpression.value) { + if (state.hasLazyExpression['~ref']) { if (!ast.typeName) { ast.typeName = 'ZodTypeAny'; } @@ -167,16 +167,16 @@ const handleComponent = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): void => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -188,10 +188,10 @@ const handleComponent = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, @@ -227,7 +227,7 @@ export const handlerV3: ZodPlugin['Handler'] = ({ plugin }) => { 'schema', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path: event._path, tags: event.tags, @@ -236,7 +236,7 @@ export const handlerV3: ZodPlugin['Handler'] = ({ plugin }) => { case 'operation': irOperationToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, @@ -272,7 +272,7 @@ export const handlerV3: ZodPlugin['Handler'] = ({ plugin }) => { case 'webhook': irWebhookToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts index c5a4f2555..e87db2572 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/array.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -47,7 +48,7 @@ export const arrayToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); if (itemAst.hasLazyExpression) { diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts index 8be0fb3e5..ed9194192 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/object.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -50,7 +51,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); @@ -70,7 +71,7 @@ export const objectToAst = ({ schema: schema.additionalProperties, state: { ...state, - path: toRef([...state.path.value, 'additionalProperties']), + path: ref([...fromRef(state.path), 'additionalProperties']), }, }); hasLazyExpression = additionalAst.hasLazyExpression || hasLazyExpression; diff --git a/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts index b6c185631..c08e02522 100644 --- a/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/v3/toAst/tuple.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -44,7 +45,7 @@ export const tupleToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); tupleElements.push(itemSchema.expression); diff --git a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts index 9c0c45e96..e7afa63ad 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/plugin.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/plugin.ts @@ -1,10 +1,10 @@ import type { SymbolMeta } from '@hey-api/codegen-core'; +import { fromRef, ref, refs } from '@hey-api/codegen-core'; import { deduplicateSchema } from '~/ir/schema'; import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import type { SchemaWithType } from '~/plugins'; -import { toRef, toRefs } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; @@ -54,7 +54,7 @@ export const irSchemaToAst = ({ .attr(identifiers.lazy) .call($.func().returns('any').do($(refSymbol).return())); ast.hasLazyExpression = true; - state.hasLazyExpression.value = true; + state.hasLazyExpression['~ref'] = true; } } else if (schema.type) { const typeAst = irSchemaWithTypeToAst({ @@ -85,7 +85,7 @@ export const irSchemaToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }), ); @@ -175,16 +175,16 @@ const handleComponent = ({ }: IrSchemaToAstOptions & { schema: IR.SchemaObject; }): void => { - const $ref = pathToJsonPointer(state.path.value); + const $ref = pathToJsonPointer(fromRef(state.path)); const ast = irSchemaToAst({ plugin, schema, state }); const baseName = refToName($ref); const symbol = plugin.registerSymbol({ meta: { category: 'schema', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', }, name: buildName({ @@ -196,10 +196,10 @@ const handleComponent = ({ ? plugin.registerSymbol({ meta: { category: 'type', - path: state.path.value, + path: fromRef(state.path), resource: 'definition', resourceId: $ref, - tags: state.tags?.value, + tags: fromRef(state.tags), tool: 'zod', variant: 'infer', }, @@ -235,7 +235,7 @@ export const handlerV4: ZodPlugin['Handler'] = ({ plugin }) => { 'schema', 'webhook', (event) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path: event._path, tags: event.tags, @@ -244,7 +244,7 @@ export const handlerV4: ZodPlugin['Handler'] = ({ plugin }) => { case 'operation': irOperationToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, @@ -280,7 +280,7 @@ export const handlerV4: ZodPlugin['Handler'] = ({ plugin }) => { case 'webhook': irWebhookToAst({ getAst: (schema, path) => { - const state = toRefs({ + const state = refs({ hasLazyExpression: false, path, tags: event.tags, diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts index c364d7213..02de0b062 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/array.ts @@ -1,6 +1,7 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import { deduplicateSchema } from '~/ir/schema'; import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -44,7 +45,7 @@ export const arrayToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); if (itemAst.hasLazyExpression) { diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts index 1290d4fd6..69d13fe09 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/object.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -50,7 +51,7 @@ export const objectToAst = ({ schema: property, state: { ...state, - path: toRef([...state.path.value, 'properties', name]), + path: ref([...fromRef(state.path), 'properties', name]), }, }); if (propertyAst.hasLazyExpression) { @@ -74,7 +75,7 @@ export const objectToAst = ({ schema: schema.additionalProperties, state: { ...state, - path: toRef([...state.path.value, 'additionalProperties']), + path: ref([...fromRef(state.path), 'additionalProperties']), }, }); if (additionalAst.hasLazyExpression) result.hasLazyExpression = true; diff --git a/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts b/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts index 732db6e02..f9d194db2 100644 --- a/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts +++ b/packages/openapi-ts/src/plugins/zod/v4/toAst/tuple.ts @@ -1,5 +1,6 @@ +import { fromRef, ref } from '@hey-api/codegen-core'; + import type { SchemaWithType } from '~/plugins'; -import { toRef } from '~/plugins/shared/utils/refs'; import { $ } from '~/ts-dsl'; import { identifiers } from '../../constants'; @@ -39,7 +40,7 @@ export const tupleToAst = ({ schema: item, state: { ...state, - path: toRef([...state.path.value, 'items', index]), + path: ref([...fromRef(state.path), 'items', index]), }, }); tupleElements.push(itemSchema.expression); diff --git a/packages/openapi-ts/src/ts-dsl/base.ts b/packages/openapi-ts/src/ts-dsl/base.ts index e25c269e3..0e007a645 100644 --- a/packages/openapi-ts/src/ts-dsl/base.ts +++ b/packages/openapi-ts/src/ts-dsl/base.ts @@ -1,27 +1,39 @@ // TODO: symbol should be protected, but needs to be public to satisfy types -import type { AnalysisContext, Node } from '@hey-api/codegen-core'; -import { Symbol } from '@hey-api/codegen-core'; -import { debug } from '@hey-api/codegen-core'; +import type { + AnalysisContext, + File, + FromRef, + Language, + Node, + Symbol, +} from '@hey-api/codegen-core'; +import { + fromRef, + isNode, + isRef, + isSymbol, + nodeBrand, +} from '@hey-api/codegen-core'; import ts from 'typescript'; export type MaybeArray = T | ReadonlyArray; -export interface ITsDsl extends Node { - /** Render this node into a concrete TypeScript AST. */ - $render(): T; -} - -export const tsDslBrand = globalThis.Symbol('ts-dsl'); - -export abstract class TsDsl implements ITsDsl { - /** Render this node into a concrete TypeScript AST. */ - protected abstract _render(): T; - - readonly '~brand': symbol = tsDslBrand; - +export abstract class TsDsl implements Node { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + analyze(_: AnalysisContext): void {} + exported?: boolean; + file?: File; + language: Language = 'typescript'; parent?: Node; - + root?: Node; symbol?: Symbol; + toAst(): T { + return undefined as unknown as T; + } + readonly '~brand' = nodeBrand; + + /** Branding property to identify the DSL class at runtime. */ + abstract readonly '~dsl': string; /** Conditionally applies a callback to this builder. */ $if( @@ -98,19 +110,6 @@ export abstract class TsDsl implements ITsDsl { return this; } - /** Render this node into a concrete TypeScript AST. */ - $render(): T { - if (!this.parent) { - this._validate(); - } - return this._render(); - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - analyze(_: AnalysisContext): void { - // noop - } - protected $maybeId( expr: T, ): T extends string ? ts.Identifier : T { @@ -123,14 +122,19 @@ export abstract class TsDsl implements ITsDsl { if (value === undefined) { return undefined as NodeOfMaybe; } - if (value instanceof Symbol) { + // @ts-expect-error + if (isRef(value)) value = fromRef(value); + if (isSymbol(value)) { return this.$maybeId(value.finalName) as NodeOfMaybe; } if (typeof value === 'string') { return this.$maybeId(value) as NodeOfMaybe; } if (value instanceof Array) { - return value.map((item) => this.unwrap(item)) as NodeOfMaybe; + return value.map((item) => { + if (isRef(item)) item = fromRef(item); + return this.unwrap(item); + }) as NodeOfMaybe; } return this.unwrap(value as any) as NodeOfMaybe; } @@ -142,7 +146,9 @@ export abstract class TsDsl implements ITsDsl { if (value === undefined) { return undefined as TypeOfMaybe; } - if (value instanceof Symbol) { + // @ts-expect-error + if (isRef(value)) value = fromRef(value); + if (isSymbol(value)) { return ts.factory.createTypeReferenceNode( value.finalName, args, @@ -169,27 +175,16 @@ export abstract class TsDsl implements ITsDsl { } /** Unwraps nested nodes into raw TypeScript AST. */ - protected unwrap(value: I): I extends TsDsl ? N : I { - return (isTsDsl(value) ? value._render() : value) as I extends TsDsl< - infer N - > + private unwrap(value: I): I extends TsDsl ? N : I { + return (isNode(value) ? value.toAst() : value) as I extends TsDsl ? N : I; } - - /** Validate invariants. */ - protected _validate(): void { - if (this.symbol && this.symbol.canonical !== this.symbol) { - const message = `${this.constructor.name}: node is holding a non-canonical (stub) symbol`; - debug(message, 'dsl'); - throw new Error(message); - } - } } type NodeOfMaybe = undefined extends I - ? NodeOf> | undefined - : NodeOf; + ? NodeOf>> | undefined + : NodeOf>; type NodeOf = I extends ReadonlyArray @@ -219,8 +214,8 @@ export abstract class TypeTsDsl< > extends TsDsl {} type TypeOfMaybe = undefined extends I - ? TypeOf> | undefined - : TypeOf; + ? TypeOf>> | undefined + : TypeOf>; type TypeOf = I extends ReadonlyArray @@ -234,9 +229,3 @@ type TypeOf = : I extends ts.TypeNode ? I : never; - -export function isTsDsl(value: unknown): value is TsDsl { - if (!value || typeof value !== 'object' || Array.isArray(value)) return false; - const obj = value as { '~brand'?: unknown }; - return obj['~brand'] === tsDslBrand && Object.hasOwn(obj, '~brand'); -} diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index a20b717c0..7bd3b2155 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -1,14 +1,15 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { NewlineTsDsl } from '../layout/newline'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; import { AbstractMixin, DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; +import { safeSymbolName } from '../utils/name'; import { FieldTsDsl } from './field'; import { InitTsDsl } from './init'; import { MethodTsDsl } from './method'; @@ -26,25 +27,33 @@ const Mixed = AbstractMixin( ); export class ClassTsDsl extends Mixed { - protected baseClass?: Base; + readonly '~dsl' = 'ClassTsDsl'; + + protected baseClass?: Ref; protected body: Body = []; - protected name: Name; + protected name: Ref; constructor(name: Name) { super(); - this.name = name; + this.name = ref(name); if (isSymbol(name)) { name.setKind('class'); + name.setNameSanitizer(safeSymbolName); name.setNode(this); } } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.baseClass)) ctx.addDependency(this.baseClass); - if (isSymbol(this.name)) ctx.addDependency(this.name); - for (const item of this.body) { - if (isTsDsl(item)) item.analyze(ctx); + ctx.analyze(this.baseClass); + ctx.analyze(this.name); + ctx.pushScope(); + try { + for (const item of this.body) { + ctx.analyze(item); + } + } finally { + ctx.popScope(); } } @@ -56,7 +65,7 @@ export class ClassTsDsl extends Mixed { /** Records a base class to extend from. */ extends(base?: Base): this { - this.baseClass = base; + this.baseClass = base ? ref(base) : undefined; return this; } @@ -87,27 +96,26 @@ export class ClassTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { const body = this.$node(this.body) as ReadonlyArray; - return ts.factory.createClassDeclaration( + const node = ts.factory.createClassDeclaration( [...this.$decorators(), ...this.modifiers], // @ts-expect-error need to improve types this.$node(this.name), this.$generics(), - this._renderHeritage(), + this._heritage(), body, ); + return this.$docs(node); } /** Builds heritage clauses (extends). */ - private _renderHeritage(): ReadonlyArray { - if (!this.baseClass) return []; + private _heritage(): ReadonlyArray { + const node = this.$node(this.baseClass); + if (!node) return []; return [ ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [ - ts.factory.createExpressionWithTypeArguments( - this.$node(this.baseClass), - undefined, - ), + ts.factory.createExpressionWithTypeArguments(node, undefined), ]), ]; } diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index be0c1390a..3f1eeec09 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -1,37 +1,39 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; +import { safeSymbolName } from '../utils/name'; export type DecoratorName = Symbol | string | MaybeTsDsl; const Mixed = ArgsMixin(TsDsl); export class DecoratorTsDsl extends Mixed { - protected name: DecoratorName; + readonly '~dsl' = 'DecoratorTsDsl'; + + protected name: Ref; constructor( name: DecoratorName, ...args: ReadonlyArray> ) { super(); - this.name = name; + this.name = ref(name); + if (isSymbol(name)) { + name.setNameSanitizer(safeSymbolName); + } this.args(...args); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.name)) { - ctx.addDependency(this.name); - } else if (isTsDsl(this.name)) { - this.name.analyze(ctx); - } + ctx.analyze(this.name); } - protected override _render() { + override toAst() { const target = this.$node(this.name); const args = this.$args(); return ts.factory.createDecorator( diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index 69661bc02..6665f7355 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -1,11 +1,12 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ConstMixin, ExportMixin } from '../mixins/modifiers'; +import { safeSymbolName } from '../utils/name'; import { EnumMemberTsDsl } from './member'; export type EnumName = Symbol | string; @@ -15,14 +16,17 @@ type ValueFn = Value | ((m: EnumMemberTsDsl) => void); const Mixed = ConstMixin(DocMixin(ExportMixin(TsDsl))); export class EnumTsDsl extends Mixed { + readonly '~dsl' = 'EnumTsDsl'; + private _members: Array = []; - private _name: EnumName; + private _name: Ref; constructor(name: EnumName, fn?: (e: EnumTsDsl) => void) { super(); - this._name = name; + this._name = ref(name); if (isSymbol(name)) { name.setKind('enum'); + name.setNameSanitizer(safeSymbolName); name.setNode(this); } fn?.(this); @@ -30,9 +34,14 @@ export class EnumTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._name)) ctx.addDependency(this._name); - for (const member of this._members) { - member.analyze(ctx); + ctx.analyze(this._name); + ctx.pushScope(); + try { + for (const member of this._members) { + ctx.analyze(member); + } + } finally { + ctx.popScope(); } } @@ -49,12 +58,13 @@ export class EnumTsDsl extends Mixed { return this; } - protected override _render() { - return ts.factory.createEnumDeclaration( + override toAst() { + const node = ts.factory.createEnumDeclaration( this.modifiers, // @ts-expect-error need to improve types this.$node(this._name), this.$node(this._members), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/field.ts b/packages/openapi-ts/src/ts-dsl/decl/field.ts index 6c81f393f..754007af0 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/field.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/field.ts @@ -1,8 +1,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TsDsl, TypeTsDsl } from '../base'; +import { TsDsl, TypeTsDsl } from '../base'; import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; import { @@ -31,6 +30,8 @@ const Mixed = DecoratorMixin( ); export class FieldTsDsl extends Mixed { + readonly '~dsl' = 'FieldTsDsl'; + protected name: string; protected _type?: TypeTsDsl; @@ -42,11 +43,7 @@ export class FieldTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._type)) { - ctx.addDependency(this._type); - } else if (isTsDsl(this._type)) { - this._type.analyze(ctx); - } + ctx.analyze(this._type); } /** Sets the field type. */ @@ -55,13 +52,14 @@ export class FieldTsDsl extends Mixed { return this; } - protected override _render() { - return ts.factory.createPropertyDeclaration( + override toAst() { + const node = ts.factory.createPropertyDeclaration( [...this.$decorators(), ...this.modifiers], this.name, undefined, this.$type(this._type), this.$value(), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index 300233cd3..c3e23e2b1 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -1,5 +1,5 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -17,7 +17,9 @@ import { } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; import { TypeParamsMixin } from '../mixins/type-params'; +import { BlockTsDsl } from '../stmt/block'; import { TypeExprTsDsl } from '../type/expr'; +import { safeSymbolName } from '../utils/name'; export type FuncMode = 'arrow' | 'decl' | 'expr'; export type FuncName = Symbol | string; @@ -45,8 +47,10 @@ const Mixed = AbstractMixin( ); class ImplFuncTsDsl extends Mixed { + readonly '~dsl' = 'FuncTsDsl'; + protected mode?: FuncMode; - protected name?: FuncName; + protected name?: Ref; protected _returns?: TypeTsDsl; constructor(); @@ -63,9 +67,10 @@ class ImplFuncTsDsl extends Mixed { name(this as unknown as FuncTsDsl<'arrow'>); } else if (name) { this.mode = 'decl'; - this.name = name; + this.name = ref(name); if (isSymbol(name)) { name.setKind('function'); + name.setNameSanitizer(safeSymbolName); name.setNode(this); } fn?.(this as unknown as FuncTsDsl<'decl'>); @@ -73,9 +78,14 @@ class ImplFuncTsDsl extends Mixed { } override analyze(ctx: AnalysisContext): void { - super.analyze(ctx); - if (isSymbol(this.name)) ctx.addDependency(this.name); - this._returns?.analyze(ctx); + ctx.pushScope(); + try { + super.analyze(ctx); + ctx.analyze(this.name); + ctx.analyze(this._returns); + } finally { + ctx.popScope(); + } } /** Switches the function to an arrow function form. */ @@ -103,14 +113,16 @@ class ImplFuncTsDsl extends Mixed { } // @ts-expect-error --- need to fix types --- - protected override _render(): M extends 'decl' + override toAst(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction { + const body = this.$node(new BlockTsDsl(...this._do)); + if (this.mode === 'decl') { if (!this.name) throw new Error('Function declaration requires a name'); - return ts.factory.createFunctionDeclaration( + const node = ts.factory.createFunctionDeclaration( [...this.$decorators(), ...this.modifiers], undefined, // @ts-expect-error need to improve types @@ -118,12 +130,13 @@ class ImplFuncTsDsl extends Mixed { this.$generics(), this.$params(), this.$type(this._returns), - ts.factory.createBlock(this.$do(), true), + body, ) as any; + return this.$docs(node); } if (this.mode === 'expr') { - return ts.factory.createFunctionExpression( + const node = ts.factory.createFunctionExpression( this.modifiers, undefined, // @ts-expect-error need to improve types @@ -131,24 +144,24 @@ class ImplFuncTsDsl extends Mixed { this.$generics(), this.$params(), this.$type(this._returns), - ts.factory.createBlock(this.$do(), true), + body, ) as any; + return this.$docs(node); } - const body = this.$do(); - const exprBody = - body.length === 1 && ts.isReturnStatement(body[0]!) - ? (body[0].expression ?? ts.factory.createBlock(body, true)) - : ts.factory.createBlock(body, true); - - return ts.factory.createArrowFunction( + const node = ts.factory.createArrowFunction( this.modifiers, this.$generics(), this.$params(), this.$type(this._returns), undefined, - exprBody, + body.statements.length === 1 && + ts.isReturnStatement(body.statements[0]!) && + body.statements[0].expression + ? body.statements[0].expression + : body, ) as any; + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 8edf951eb..04deca2dc 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -14,6 +14,9 @@ import { StaticMixin, } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; +import { BlockTsDsl } from '../stmt/block'; + +export type GetterName = string | ts.PropertyName; const Mixed = AbstractMixin( AsyncMixin( @@ -34,25 +37,33 @@ const Mixed = AbstractMixin( ); export class GetterTsDsl extends Mixed { - protected name: string | ts.PropertyName; + readonly '~dsl' = 'GetterTsDsl'; + + protected name: GetterName; - constructor(name: string | ts.PropertyName, fn?: (g: GetterTsDsl) => void) { + constructor(name: GetterName, fn?: (g: GetterTsDsl) => void) { super(); this.name = name; fn?.(this); } override analyze(ctx: AnalysisContext): void { - super.analyze(ctx); + ctx.pushScope(); + try { + super.analyze(ctx); + } finally { + ctx.popScope(); + } } - protected override _render() { - return ts.factory.createGetAccessorDeclaration( + override toAst() { + const node = ts.factory.createGetAccessorDeclaration( [...this.$decorators(), ...this.modifiers], this.name, this.$params(), undefined, - ts.factory.createBlock(this.$do(), true), + this.$node(new BlockTsDsl(...this._do)), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index 435881412..71ec9b2c2 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -7,6 +7,7 @@ import { DoMixin } from '../mixins/do'; import { DocMixin } from '../mixins/doc'; import { PrivateMixin, ProtectedMixin, PublicMixin } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; +import { BlockTsDsl } from '../stmt/block'; const Mixed = DecoratorMixin( DoMixin( @@ -21,20 +22,28 @@ const Mixed = DecoratorMixin( ); export class InitTsDsl extends Mixed { + readonly '~dsl' = 'InitTsDsl'; + constructor(fn?: (i: InitTsDsl) => void) { super(); fn?.(this); } override analyze(ctx: AnalysisContext): void { - super.analyze(ctx); + ctx.pushScope(); + try { + super.analyze(ctx); + } finally { + ctx.popScope(); + } } - protected override _render() { - return ts.factory.createConstructorDeclaration( + override toAst() { + const node = ts.factory.createConstructorDeclaration( [...this.$decorators(), ...this.modifiers], this.$params(), - ts.factory.createBlock(this.$do(), true), + this.$node(new BlockTsDsl(...this._do)), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/member.ts b/packages/openapi-ts/src/ts-dsl/decl/member.ts index 3fa06adec..2e519c281 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/member.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/member.ts @@ -2,9 +2,9 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; -import { safeMemberName } from '../utils/prop'; +import { safeMemberName } from '../utils/name'; type Value = string | number | MaybeTsDsl; type ValueFn = Value | ((m: EnumMemberTsDsl) => void); @@ -12,6 +12,8 @@ type ValueFn = Value | ((m: EnumMemberTsDsl) => void); const Mixed = DocMixin(TsDsl); export class EnumMemberTsDsl extends Mixed { + readonly '~dsl' = 'EnumMemberTsDsl'; + private _name: string; private _value?: Value; @@ -27,7 +29,7 @@ export class EnumMemberTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._value)) this._value.analyze(ctx); + ctx.analyze(this._value); } /** Sets the enum member value. */ @@ -36,10 +38,11 @@ export class EnumMemberTsDsl extends Mixed { return this; } - protected override _render() { - return ts.factory.createEnumMember( + override toAst() { + const node = ts.factory.createEnumMember( this.$node(safeMemberName(this._name)), this.$node(this._value), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index 723b62190..3def22f61 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -16,6 +16,7 @@ import { import { OptionalMixin } from '../mixins/optional'; import { ParamMixin } from '../mixins/param'; import { TypeParamsMixin } from '../mixins/type-params'; +import { BlockTsDsl } from '../stmt/block'; import { TokenTsDsl } from '../token'; import { TypeExprTsDsl } from '../type/expr'; @@ -42,6 +43,8 @@ const Mixed = AbstractMixin( ); export class MethodTsDsl extends Mixed { + readonly '~dsl' = 'MethodTsDsl'; + protected name: string; protected _returns?: TypeTsDsl; @@ -52,8 +55,13 @@ export class MethodTsDsl extends Mixed { } override analyze(ctx: AnalysisContext): void { - super.analyze(ctx); - this._returns?.analyze(ctx); + ctx.pushScope(); + try { + super.analyze(ctx); + ctx.analyze(this._returns); + } finally { + ctx.popScope(); + } } /** Sets the return type. */ @@ -62,8 +70,8 @@ export class MethodTsDsl extends Mixed { return this; } - protected override _render() { - return ts.factory.createMethodDeclaration( + override toAst() { + const node = ts.factory.createMethodDeclaration( [...this.$decorators(), ...this.modifiers], undefined, this.name, @@ -71,7 +79,8 @@ export class MethodTsDsl extends Mixed { this.$generics(), this.$params(), this.$type(this._returns), - ts.factory.createBlock(this.$do(), true), + this.$node(new BlockTsDsl(...this._do)), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/param.ts b/packages/openapi-ts/src/ts-dsl/decl/param.ts index 78376211a..f07bfa37e 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/param.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/param.ts @@ -1,4 +1,5 @@ -import type { AnalysisContext } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { fromRef, isSymbolRef, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -9,30 +10,39 @@ import { ValueMixin } from '../mixins/value'; import { TokenTsDsl } from '../token'; import { TypeExprTsDsl } from '../type/expr'; +export type ParamName = Symbol | string; +export type ParamCtor = ( + name: ParamName | ((p: ParamTsDsl) => void), + fn?: (p: ParamTsDsl) => void, +) => ParamTsDsl; + const Mixed = DecoratorMixin( OptionalMixin(PatternMixin(ValueMixin(TsDsl))), ); export class ParamTsDsl extends Mixed { - protected name?: string; + readonly '~dsl' = 'ParamTsDsl'; + + protected name?: Ref; protected _type?: TypeTsDsl; constructor( - name: string | ((p: ParamTsDsl) => void), + name: ParamName | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void, ) { super(); - if (typeof name === 'string') { - this.name = name; - fn?.(this); - } else { + if (typeof name === 'function') { name(this); + } else { + this.name = ref(name); + fn?.(this); } } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - this._type?.analyze(ctx); + ctx.analyze(this.name); + ctx.analyze(this._type); } /** Sets the parameter type. */ @@ -41,8 +51,13 @@ export class ParamTsDsl extends Mixed { return this; } - protected override _render() { - const name = this.$pattern() ?? this.name; + override toAst() { + let name: string | ReturnType = this.$pattern(); + if (!name && this.name) { + name = isSymbolRef(this.name) + ? fromRef(this.name).finalName + : (fromRef(this.name) as string); + } if (!name) throw new Error( 'Param must have either a name or a destructuring pattern', diff --git a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts index f24596f94..7358a684f 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/pattern.ts @@ -12,6 +12,8 @@ const Mixed = TsDsl; * Builds binding patterns (e.g. `{ foo, bar }`, `[a, b, ...rest]`). */ export class PatternTsDsl extends Mixed { + readonly '~dsl' = 'PatternTsDsl'; + protected pattern?: | { kind: 'array'; values: ReadonlyArray } | { kind: 'object'; values: Record }; @@ -51,7 +53,7 @@ export class PatternTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { if (!this.pattern) { throw new Error('PatternTsDsl requires object() or array() pattern'); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index f7647aa60..19c7538dc 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -14,6 +14,9 @@ import { StaticMixin, } from '../mixins/modifiers'; import { ParamMixin } from '../mixins/param'; +import { BlockTsDsl } from '../stmt/block'; + +export type SetterName = string | ts.PropertyName; const Mixed = AbstractMixin( AsyncMixin( @@ -34,24 +37,32 @@ const Mixed = AbstractMixin( ); export class SetterTsDsl extends Mixed { - protected name: string | ts.PropertyName; + readonly '~dsl' = 'SetterTsDsl'; + + protected name: SetterName; - constructor(name: string | ts.PropertyName, fn?: (s: SetterTsDsl) => void) { + constructor(name: SetterName, fn?: (s: SetterTsDsl) => void) { super(); this.name = name; fn?.(this); } override analyze(ctx: AnalysisContext): void { - super.analyze(ctx); + ctx.pushScope(); + try { + super.analyze(ctx); + } finally { + ctx.popScope(); + } } - protected override _render() { - return ts.factory.createSetAccessorDeclaration( + override toAst() { + const node = ts.factory.createSetAccessorDeclaration( [...this.$decorators(), ...this.modifiers], this.name, this.$params(), - ts.factory.createBlock(this.$do(), true), + this.$node(new BlockTsDsl(...this._do)), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/array.ts b/packages/openapi-ts/src/ts-dsl/expr/array.ts index b96a58ffa..536178456 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/array.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/array.ts @@ -2,7 +2,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { LayoutMixin } from '../mixins/layout'; import { LiteralTsDsl } from './literal'; @@ -10,6 +10,8 @@ import { LiteralTsDsl } from './literal'; const Mixed = AsMixin(LayoutMixin(TsDsl)); export class ArrayTsDsl extends Mixed { + readonly '~dsl' = 'ArrayTsDsl'; + protected _elements: Array< | { expr: MaybeTsDsl; kind: 'element' } | { expr: MaybeTsDsl; kind: 'spread' } @@ -25,7 +27,7 @@ export class ArrayTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const item of this._elements) { - if (isTsDsl(item.expr)) item.expr.analyze(ctx); + ctx.analyze(item.expr); } } @@ -57,7 +59,7 @@ export class ArrayTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { const elements = this._elements.map((item) => { const node = this.$node(item.expr); return item.kind === 'spread' diff --git a/packages/openapi-ts/src/ts-dsl/expr/as.ts b/packages/openapi-ts/src/ts-dsl/expr/as.ts index 13765267d..786b2fbb6 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/as.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/as.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { AsMixin, setAsFactory } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; @@ -14,30 +14,24 @@ export type AsCtor = (expr: AsExpr, type: AsType) => AsTsDsl; const Mixed = AsMixin(ExprMixin(TsDsl)); export class AsTsDsl extends Mixed { - protected expr: AsExpr; - protected type: AsType; + readonly '~dsl' = 'AsTsDsl'; + + protected expr: Ref; + protected type: Ref; constructor(expr: AsExpr, type: AsType) { super(); - this.expr = expr; - this.type = type; + this.expr = ref(expr); + this.type = ref(type); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.expr)) { - ctx.addDependency(this.expr); - } else if (isTsDsl(this.expr)) { - this.expr.analyze(ctx); - } - if (isSymbol(this.type)) { - ctx.addDependency(this.type); - } else if (isTsDsl(this.type)) { - this.type.analyze(ctx); - } + ctx.analyze(this.expr); + ctx.analyze(this.type); } - protected override _render() { + override toAst() { return ts.factory.createAsExpression( this.$node(this.expr), this.$type(this.type), diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index 6dfce2267..179da70c1 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -1,16 +1,15 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { fromRef, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { validTypescriptIdentifierRegExp } from '~/utils/regexp'; - import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { ExprMixin, setAttrFactory } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; +import { validTypescriptIdentifierRegExp } from '../utils/regexp'; import { LiteralTsDsl } from './literal'; export type AttrLeft = Symbol | string | MaybeTsDsl; @@ -28,43 +27,41 @@ const Mixed = AsMixin( ); export class AttrTsDsl extends Mixed { - protected left: AttrLeft; - protected right: AttrRight; + readonly '~dsl' = 'AttrTsDsl'; + + protected left: Ref; + protected right: Ref; constructor(left: AttrLeft, right: AttrRight) { super(); - this.left = left; - this.right = right; + this.left = ref(left); + this.right = ref(right); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.left)) { - ctx.addDependency(this.left); - } else if (isTsDsl(this.left)) { - this.left.analyze(ctx); - } - if (isSymbol(this.right)) ctx.addDependency(this.right); + ctx.analyze(this.left); + ctx.analyze(this.right); } - protected override _render() { + override toAst() { const leftNode = this.$node(this.left); validTypescriptIdentifierRegExp.lastIndex = 0; if ( - typeof this.right === 'number' || - (typeof this.right === 'string' && - !validTypescriptIdentifierRegExp.test(this.right)) + typeof fromRef(this.right) === 'number' || + (typeof fromRef(this.right) === 'string' && + !validTypescriptIdentifierRegExp.test(fromRef(this.right) as string)) ) { if (this._optional) { return ts.factory.createElementAccessChain( leftNode, this.$node(new TokenTsDsl().questionDot()), - this.$node(new LiteralTsDsl(this.right)), + this.$node(new LiteralTsDsl(fromRef(this.right) as string)), ); } return ts.factory.createElementAccessExpression( leftNode, - this.$node(new LiteralTsDsl(this.right)), + this.$node(new LiteralTsDsl(fromRef(this.right) as string)), ); } if (this._optional) { diff --git a/packages/openapi-ts/src/ts-dsl/expr/await.ts b/packages/openapi-ts/src/ts-dsl/expr/await.ts index 0841077f6..3bf1f3a62 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/await.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/await.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { ExprMixin, setAwaitFactory } from '../mixins/expr'; export type AwaitExpr = Symbol | string | MaybeTsDsl; @@ -12,23 +12,21 @@ export type AwaitCtor = (expr: AwaitExpr) => AwaitTsDsl; const Mixed = ExprMixin(TsDsl); export class AwaitTsDsl extends Mixed { - protected _awaitExpr: AwaitExpr; + readonly '~dsl' = 'AwaitTsDsl'; + + protected _awaitExpr: Ref; constructor(expr: AwaitExpr) { super(); - this._awaitExpr = expr; + this._awaitExpr = ref(expr); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._awaitExpr)) { - ctx.addDependency(this._awaitExpr); - } else if (isTsDsl(this._awaitExpr)) { - this._awaitExpr.analyze(ctx); - } + ctx.analyze(this._awaitExpr); } - protected override _render() { + override toAst() { return ts.factory.createAwaitExpression(this.$node(this._awaitExpr)); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/binary.ts b/packages/openapi-ts/src/ts-dsl/expr/binary.ts index e366c5697..fced511b7 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/binary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/binary.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; @@ -30,29 +30,23 @@ type Operator = const Mixed = AsMixin(ExprMixin(TsDsl)); export class BinaryTsDsl extends Mixed { - protected _base: Expr; - protected _expr?: Expr; + readonly '~dsl' = 'BinaryTsDsl'; + + protected _base: Ref; + protected _expr?: Ref; protected _op?: Op; constructor(base: Expr, op?: Op, expr?: Expr) { super(); - this._base = base; + this._base = ref(base); this._op = op; - this._expr = expr; + if (expr) this._expr = ref(expr); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._base)) { - ctx.addDependency(this._base); - } else if (isTsDsl(this._base)) { - this._base.analyze(ctx); - } - if (isSymbol(this._expr)) { - ctx.addDependency(this._expr); - } else if (isTsDsl(this._expr)) { - this._expr.analyze(ctx); - } + ctx.analyze(this._base); + ctx.analyze(this._expr); } /** Logical AND — `this && expr` */ @@ -135,15 +129,15 @@ export class BinaryTsDsl extends Mixed { return this.opAndExpr('*', expr); } - protected override _render() { + override toAst() { if (!this._op) { throw new Error('BinaryTsDsl: missing operator'); } - if (this._expr === undefined) { + const expr = this.$node(this._expr); + if (!expr) { throw new Error('BinaryTsDsl: missing right-hand expression'); } const base = this.$node(this._base); - const expr = this.$node(this._expr); const operator = typeof this._op === 'string' ? this.opToToken(this._op) : this._op; return ts.factory.createBinaryExpression(base, operator, expr); @@ -151,7 +145,7 @@ export class BinaryTsDsl extends Mixed { /** Sets the binary operator and right-hand operand for this expression. */ private opAndExpr(op: Op, expr: Expr): this { - this._expr = expr; + this._expr = ref(expr); this._op = op; return this; } diff --git a/packages/openapi-ts/src/ts-dsl/expr/call.ts b/packages/openapi-ts/src/ts-dsl/expr/call.ts index 49282bb9e..73c6d9d39 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/call.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/call.ts @@ -2,7 +2,7 @@ import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; import { AsMixin } from '../mixins/as'; import { ExprMixin, setCallFactory } from '../mixins/expr'; @@ -18,6 +18,8 @@ const Mixed = ArgsMixin( ); export class CallTsDsl extends Mixed { + readonly '~dsl' = 'CallTsDsl'; + protected _callee: CallCallee; constructor(callee: CallCallee, ...args: CallArgs) { @@ -28,10 +30,10 @@ export class CallTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._callee)) this._callee.analyze(ctx); + ctx.analyze(this._callee); } - protected override _render() { + override toAst() { return ts.factory.createCallExpression( this.$node(this._callee), this.$generics(), diff --git a/packages/openapi-ts/src/ts-dsl/expr/expr.ts b/packages/openapi-ts/src/ts-dsl/expr/expr.ts index fd5d6cade..61d3bd17c 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/expr.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { AsMixin } from '../mixins/as'; import { ExprMixin } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; @@ -16,23 +16,21 @@ const Mixed = AsMixin( ); export class ExprTsDsl extends Mixed { - protected _exprInput: Id; + readonly '~dsl' = 'ExprTsDsl'; + + protected _exprInput: Ref; constructor(id: Id) { super(); - this._exprInput = id; + this._exprInput = ref(id); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._exprInput)) { - ctx.addDependency(this._exprInput); - } else if (isTsDsl(this._exprInput)) { - this._exprInput.analyze(ctx); - } + ctx.analyze(this._exprInput); } - protected override _render() { + override toAst() { return this.$node(this._exprInput); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts b/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts index 4aca12a6d..6afc3d68d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/fromValue.ts @@ -1,7 +1,7 @@ +import { isNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { TsDsl } from '../base'; -import { isTsDsl } from '../base'; import { ArrayTsDsl } from './array'; import { LiteralTsDsl } from './literal'; import { ObjectTsDsl } from './object'; @@ -12,7 +12,7 @@ export const fromValue = ( layout?: 'pretty'; }, ): TsDsl => { - if (isTsDsl(input)) { + if (isNode(input)) { return input as TsDsl; } diff --git a/packages/openapi-ts/src/ts-dsl/expr/id.ts b/packages/openapi-ts/src/ts-dsl/expr/id.ts index 09d848b6f..744cefbdb 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/id.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/id.ts @@ -6,6 +6,8 @@ import { TsDsl } from '../base'; const Mixed = TsDsl; export class IdTsDsl extends Mixed { + readonly '~dsl' = 'IdTsDsl'; + protected name: string; constructor(name: string) { @@ -17,7 +19,7 @@ export class IdTsDsl extends Mixed { super.analyze(ctx); } - protected override _render() { + override toAst() { return ts.factory.createIdentifier(this.name); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/literal.ts b/packages/openapi-ts/src/ts-dsl/expr/literal.ts index 9620d0792..b9c830f3d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/literal.ts @@ -8,6 +8,8 @@ import { AsMixin } from '../mixins/as'; const Mixed = AsMixin(TsDsl); export class LiteralTsDsl extends Mixed { + readonly '~dsl' = 'LiteralTsDsl'; + protected value: string | number | boolean | null; constructor(value: string | number | boolean | null) { @@ -19,7 +21,7 @@ export class LiteralTsDsl extends Mixed { super.analyze(ctx); } - protected override _render() { + override toAst() { if (typeof this.value === 'boolean') { return this.value ? ts.factory.createTrue() : ts.factory.createFalse(); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/new.ts b/packages/openapi-ts/src/ts-dsl/expr/new.ts index ebfdc400c..769742fb7 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/new.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/new.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; import { ExprMixin } from '../mixins/expr'; import { TypeArgsMixin } from '../mixins/type-args'; @@ -13,24 +13,22 @@ export type NewExpr = Symbol | string | MaybeTsDsl; const Mixed = ArgsMixin(ExprMixin(TypeArgsMixin(TsDsl))); export class NewTsDsl extends Mixed { - protected classExpr: NewExpr; + readonly '~dsl' = 'NewTsDsl'; + + protected classExpr: Ref; constructor(classExpr: NewExpr, ...args: ReadonlyArray) { super(); - this.classExpr = classExpr; + this.classExpr = ref(classExpr); this.args(...args); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.classExpr)) { - ctx.addDependency(this.classExpr); - } else if (isTsDsl(this.classExpr)) { - this.classExpr.analyze(ctx); - } + ctx.analyze(this.classExpr); } - protected override _render() { + override toAst() { return ts.factory.createNewExpression( this.$node(this.classExpr), this.$generics(), diff --git a/packages/openapi-ts/src/ts-dsl/expr/object.ts b/packages/openapi-ts/src/ts-dsl/expr/object.ts index cd16a1d37..a0713c05e 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/object.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/object.ts @@ -19,6 +19,8 @@ const Mixed = AsMixin( ); export class ObjectTsDsl extends Mixed { + readonly '~dsl' = 'ObjectTsDsl'; + protected _props: Array = []; constructor(...props: Array) { @@ -29,7 +31,7 @@ export class ObjectTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const prop of this._props) { - prop.analyze(ctx); + ctx.analyze(prop); } } @@ -81,10 +83,11 @@ export class ObjectTsDsl extends Mixed { return this; } - protected override _render() { - return ts.factory.createObjectLiteralExpression( + override toAst() { + const node = ts.factory.createObjectLiteralExpression( this.$node(this._props), this.$multiline(this._props.length), ); + return this.$hint(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts index b6d886a44..a1da1266d 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prefix.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prefix.ts @@ -2,11 +2,13 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; const Mixed = TsDsl; export class PrefixTsDsl extends Mixed { + readonly '~dsl' = 'PrefixTsDsl'; + protected _expr?: string | MaybeTsDsl; protected _op?: ts.PrefixUnaryOperator; @@ -21,7 +23,7 @@ export class PrefixTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._expr)) this._expr.analyze(ctx); + ctx.analyze(this._expr); } /** Sets the operand (the expression being prefixed). */ @@ -48,7 +50,7 @@ export class PrefixTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { if (!this._expr) { throw new Error('Missing expression for prefix unary expression'); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/prop.ts b/packages/openapi-ts/src/ts-dsl/expr/prop.ts index 5cfc59926..bdb3e4261 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/prop.ts @@ -1,13 +1,13 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { GetterTsDsl } from '../decl/getter'; import { SetterTsDsl } from '../decl/setter'; import { DocMixin } from '../mixins/doc'; -import { safePropName } from '../utils/prop'; +import { safePropName } from '../utils/name'; import { IdTsDsl } from './id'; type Expr = Symbol | string | MaybeTsDsl; @@ -24,7 +24,9 @@ type Meta = const Mixed = DocMixin(TsDsl); export class ObjectPropTsDsl extends Mixed { - protected _value?: Expr | Stmt; + readonly '~dsl' = 'ObjectPropTsDsl'; + + protected _value?: Ref; protected meta: Meta; constructor(meta: Meta) { @@ -34,11 +36,7 @@ export class ObjectPropTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._value)) { - ctx.addDependency(this._value); - } else if (isTsDsl(this._value)) { - this._value.analyze(ctx); - } + ctx.analyze(this._value); } /** Returns true when all required builder calls are present. */ @@ -50,12 +48,12 @@ export class ObjectPropTsDsl extends Mixed { if (typeof value === 'function') { value(this); } else { - this._value = value; + this._value = ref(value); } return this; } - protected override _render() { + override toAst() { this.$validate(); const node = this.$node(this._value); if (this.meta.kind === 'spread') { @@ -64,29 +62,35 @@ export class ObjectPropTsDsl extends Mixed { 'Invalid spread: object spread must be an expression, not a statement.', ); } - return ts.factory.createSpreadAssignment(node); + const result = ts.factory.createSpreadAssignment(node); + return this.$docs(result); } if (this.meta.kind === 'getter') { const getter = new GetterTsDsl( this.$node(safePropName(this.meta.name)), ).do(node); - return this.$node(getter); + const result = this.$node(getter); + return this.$docs(result); } if (this.meta.kind === 'setter') { const setter = new SetterTsDsl( this.$node(safePropName(this.meta.name)), ).do(node); - return this.$node(setter); + const result = this.$node(setter); + return this.$docs(result); } if (ts.isIdentifier(node) && node.text === this.meta.name) { - return ts.factory.createShorthandPropertyAssignment(this.meta.name); + const result = ts.factory.createShorthandPropertyAssignment( + this.meta.name, + ); + return this.$docs(result); } if (ts.isStatement(node)) { throw new Error( 'Invalid property: object property value must be an expression, not a statement.', ); } - return ts.factory.createPropertyAssignment( + const result = ts.factory.createPropertyAssignment( this.meta.kind === 'computed' ? ts.factory.createComputedPropertyName( this.$node(new IdTsDsl(this.meta.name)), @@ -94,6 +98,7 @@ export class ObjectPropTsDsl extends Mixed { : this.$node(safePropName(this.meta.name)), node, ); + return this.$docs(result); } $validate(): asserts this is this & { diff --git a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts index ee3ce5292..cc56c7cec 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/regexp.ts @@ -14,6 +14,8 @@ type RegexFlags = const Mixed = TsDsl; export class RegExpTsDsl extends Mixed { + readonly '~dsl' = 'RegExpTsDsl'; + protected pattern: string; protected flags?: RegexFlags; @@ -27,7 +29,7 @@ export class RegExpTsDsl extends Mixed { super.analyze(ctx); } - protected override _render() { + override toAst() { const patternContent = this.pattern.startsWith('/') && this.pattern.endsWith('/') ? this.pattern.slice(1, -1) diff --git a/packages/openapi-ts/src/ts-dsl/expr/template.ts b/packages/openapi-ts/src/ts-dsl/expr/template.ts index 847381d41..39a2bede7 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/template.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/template.ts @@ -1,15 +1,20 @@ -import type { AnalysisContext } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { fromRef, isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; + +export type TemplatePart = Symbol | string | MaybeTsDsl; const Mixed = TsDsl; export class TemplateTsDsl extends Mixed { - protected parts: Array> = []; + readonly '~dsl' = 'TemplateTsDsl'; + + protected parts: Array> = []; - constructor(value?: string | MaybeTsDsl) { + constructor(value?: TemplatePart) { super(); if (value !== undefined) this.add(value); } @@ -17,17 +22,22 @@ export class TemplateTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const part of this.parts) { - if (isTsDsl(part)) part.analyze(ctx); + ctx.analyze(part); } } - add(value: string | MaybeTsDsl): this { - this.parts.push(value); + add(value: TemplatePart): this { + this.parts.push(ref(value)); return this; } - protected override _render() { - const parts = this.$node(this.parts); + override toAst() { + const parts = this.$node( + this.parts.map((p) => { + const part = fromRef(p); + return isSymbol(part) ? part.finalName : part; + }), + ); const normalized: Array = []; // merge consecutive string parts diff --git a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts index b189ab491..b88091ff4 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/ternary.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/ternary.ts @@ -2,11 +2,13 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; const Mixed = TsDsl; export class TernaryTsDsl extends Mixed { + readonly '~dsl' = 'TernaryTsDsl'; + protected _condition?: string | MaybeTsDsl; protected _then?: string | MaybeTsDsl; protected _else?: string | MaybeTsDsl; @@ -18,9 +20,9 @@ export class TernaryTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._condition)) this._condition.analyze(ctx); - if (isTsDsl(this._then)) this._then.analyze(ctx); - if (isTsDsl(this._else)) this._else.analyze(ctx); + ctx.analyze(this._condition); + ctx.analyze(this._then); + ctx.analyze(this._else); } condition(condition: string | MaybeTsDsl) { @@ -38,7 +40,7 @@ export class TernaryTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { if (!this._condition) throw new Error('Missing condition in ternary'); if (!this._then) throw new Error('Missing then expression in ternary'); if (!this._else) throw new Error('Missing else expression in ternary'); diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index ac9034eaa..6be175036 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -2,13 +2,15 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { OperatorMixin } from '../mixins/operator'; import { registerLazyAccessTypeOfExprFactory } from '../mixins/type-expr'; const Mixed = OperatorMixin(TsDsl); export class TypeOfExprTsDsl extends Mixed { + readonly '~dsl' = 'TypeOfExprTsDsl'; + protected _expr: string | MaybeTsDsl; constructor(expr: string | MaybeTsDsl) { @@ -18,10 +20,10 @@ export class TypeOfExprTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._expr)) this._expr.analyze(ctx); + ctx.analyze(this._expr); } - protected override _render() { + override toAst() { return ts.factory.createTypeOfExpression(this.$node(this._expr)); } } diff --git a/packages/openapi-ts/src/ts-dsl/index.ts b/packages/openapi-ts/src/ts-dsl/index.ts index 86233117a..4be7f83e1 100644 --- a/packages/openapi-ts/src/ts-dsl/index.ts +++ b/packages/openapi-ts/src/ts-dsl/index.ts @@ -32,10 +32,12 @@ import { DocTsDsl } from './layout/doc'; import { HintTsDsl } from './layout/hint'; import { NewlineTsDsl } from './layout/newline'; import { NoteTsDsl } from './layout/note'; +import { BlockTsDsl } from './stmt/block'; import { IfTsDsl } from './stmt/if'; import { ReturnTsDsl } from './stmt/return'; import { StmtTsDsl } from './stmt/stmt'; import { ThrowTsDsl } from './stmt/throw'; +import { TryTsDsl } from './stmt/try'; import { VarTsDsl } from './stmt/var'; import { TokenTsDsl } from './token'; import { TypeAliasTsDsl } from './type/alias'; @@ -75,6 +77,10 @@ const base = { binary: (...args: ConstructorParameters) => new BinaryTsDsl(...args), + /** Creates a statement block (`{ ... }`). */ + block: (...args: ConstructorParameters) => + new BlockTsDsl(...args), + /** Creates a function or method call expression (e.g. `fn(arg)`). */ call: (...args: ConstructorParameters) => new CallTsDsl(...args), @@ -233,6 +239,10 @@ const base = { token: (...args: ConstructorParameters) => new TokenTsDsl(...args), + /** Creates a try/catch/finally statement. */ + try: (...args: ConstructorParameters) => + new TryTsDsl(...args), + /** Creates a basic type reference or type expression (e.g. Foo or Foo). */ type: Object.assign( (...args: ConstructorParameters) => @@ -338,4 +348,10 @@ export type DollarTsDsl = { }; export type { MaybeTsDsl, TypeTsDsl } from './base'; -export { isTsDsl, TsDsl, tsDslBrand } from './base'; +export { TsDsl } from './base'; +export { TypeScriptRenderer } from './render/typescript'; +export { + numberRegExp, + reservedJavaScriptKeywordsRegExp, + validTypescriptIdentifierRegExp, +} from './utils/regexp'; diff --git a/packages/openapi-ts/src/ts-dsl/layout/doc.ts b/packages/openapi-ts/src/ts-dsl/layout/doc.ts index cf60ebff7..53d58beb4 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/doc.ts @@ -6,6 +6,8 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class DocTsDsl extends TsDsl { + readonly '~dsl' = 'DocTsDsl'; + protected _lines: Array = []; constructor(lines?: MaybeArray, fn?: (d: DocTsDsl) => void) { @@ -63,7 +65,7 @@ export class DocTsDsl extends TsDsl { return node; } - protected override _render(): ts.Node { + override toAst(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/layout/hint.ts b/packages/openapi-ts/src/ts-dsl/layout/hint.ts index dae222150..19a1414ff 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/hint.ts @@ -6,6 +6,8 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class HintTsDsl extends TsDsl { + readonly '~dsl' = 'HintTsDsl'; + protected _lines: Array = []; constructor(lines?: MaybeArray, fn?: (d: HintTsDsl) => void) { @@ -45,7 +47,7 @@ export class HintTsDsl extends TsDsl { return node; } - protected override _render(): ts.Node { + override toAst(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/layout/newline.ts b/packages/openapi-ts/src/ts-dsl/layout/newline.ts index fe859d9fa..7053cbd11 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/newline.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/newline.ts @@ -5,11 +5,13 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NewlineTsDsl extends TsDsl { + readonly '~dsl' = 'NewlineTsDsl'; + override analyze(ctx: AnalysisContext): void { super.analyze(ctx); } - protected override _render(): ts.Identifier { + override toAst(): ts.Identifier { return this.$node(new IdTsDsl('\n')); } } diff --git a/packages/openapi-ts/src/ts-dsl/layout/note.ts b/packages/openapi-ts/src/ts-dsl/layout/note.ts index 68cf554d1..748a51a4b 100644 --- a/packages/openapi-ts/src/ts-dsl/layout/note.ts +++ b/packages/openapi-ts/src/ts-dsl/layout/note.ts @@ -6,6 +6,8 @@ import { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; export class NoteTsDsl extends TsDsl { + readonly '~dsl' = 'NoteTsDsl'; + protected _lines: Array = []; constructor(lines?: MaybeArray, fn?: (d: NoteTsDsl) => void) { @@ -43,7 +45,7 @@ export class NoteTsDsl extends TsDsl { return node; } - protected override _render(): ts.Node { + override toAst(): ts.Node { // this class does not build a standalone node; // it modifies other nodes via `apply()`. // Return a dummy comment node for compliance. diff --git a/packages/openapi-ts/src/ts-dsl/mixins/args.ts b/packages/openapi-ts/src/ts-dsl/mixins/args.ts index 44bd0eac0..a36b55e75 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/args.ts @@ -1,8 +1,8 @@ -import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; type Arg = Symbol | string | MaybeTsDsl; @@ -23,27 +23,25 @@ export function ArgsMixin>( Base: TBase, ) { abstract class Args extends Base { - protected _args: Array = []; + protected _args: Array> = []; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const arg of this._args) { - if (isSymbol(arg)) { - ctx.addDependency(arg); - } else if (isTsDsl(arg)) { - arg.analyze(ctx); - } + ctx.analyze(arg); } } protected arg(arg: Arg | undefined): this { - if (arg !== undefined) this._args.push(arg); + if (arg !== undefined) this._args.push(ref(arg)); return this; } protected args(...args: ReadonlyArray): this { this._args.push( - ...args.filter((a): a is NonNullable => a !== undefined), + ...args + .filter((a): a is NonNullable => a !== undefined) + .map((a) => ref(a)), ); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts index ce5a5ba36..448e25660 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/decorator.ts @@ -1,7 +1,7 @@ import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import { DecoratorTsDsl } from '../decl/decorator'; import type { BaseCtor, MixinCtor } from './types'; @@ -24,7 +24,7 @@ export function DecoratorMixin>( override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const decorator of this.decorators) { - if (isTsDsl(decorator)) decorator.analyze(ctx); + ctx.analyze(decorator); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/do.ts b/packages/openapi-ts/src/ts-dsl/mixins/do.ts index 67e8e3c28..6093b2a8e 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/do.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/do.ts @@ -1,15 +1,18 @@ import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import { StmtTsDsl } from '../stmt/stmt'; import type { BaseCtor, MixinCtor } from './types'; +export type DoExpr = MaybeTsDsl; + export interface DoMethods extends Node { /** Renders the collected `.do()` calls into an array of `Statement` nodes. */ $do(): ReadonlyArray; + _do: Array; /** Adds one or more expressions/statements to the body. */ - do(...items: ReadonlyArray>): this; + do(...items: ReadonlyArray): this; } /** @@ -19,18 +22,21 @@ export function DoMixin>( Base: TBase, ) { abstract class Do extends Base { - protected _do: Array> = []; + protected _do: Array = []; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - for (const item of this._do) { - if (isTsDsl(item)) item.analyze(ctx); + ctx.pushScope(); + try { + for (const item of this._do) { + ctx.analyze(item); + } + } finally { + ctx.popScope(); } } - protected do( - ...items: ReadonlyArray> - ): this { + protected do(...items: ReadonlyArray): this { this._do.push(...items); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts index 080b30bb6..ad4ac42de 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/doc.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/doc.ts @@ -6,6 +6,7 @@ import { DocTsDsl } from '../layout/doc'; import type { BaseCtor, MixinCtor } from './types'; export interface DocMethods extends Node { + $docs(node: T): T; doc(lines?: MaybeArray, fn?: (d: DocTsDsl) => void): this; } @@ -13,7 +14,7 @@ export function DocMixin>( Base: TBase, ) { abstract class Doc extends Base { - protected _doc?: DocTsDsl; + private _doc?: DocTsDsl; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); @@ -27,8 +28,7 @@ export function DocMixin>( return this; } - protected override _render() { - const node = this.$render(); + protected $docs(node: T): T { return this._doc ? this._doc.apply(node) : node; } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts index 214504f68..bae6709dc 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/hint.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/hint.ts @@ -6,6 +6,7 @@ import { HintTsDsl } from '../layout/hint'; import type { BaseCtor, MixinCtor } from './types'; export interface HintMethods extends Node { + $hint(node: T): T; hint(lines?: MaybeArray, fn?: (h: HintTsDsl) => void): this; } @@ -13,7 +14,7 @@ export function HintMixin>( Base: TBase, ) { abstract class Hint extends Base { - protected _hint?: HintTsDsl; + private _hint?: HintTsDsl; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); @@ -27,8 +28,7 @@ export function HintMixin>( return this; } - protected override _render() { - const node = this.$render(); + protected $hint(node: T): T { return this._hint ? this._hint.apply(node) : node; } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts index bd008c7d5..1182b1fd4 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/modifiers.ts @@ -210,6 +210,8 @@ export function ExportMixin>( */ protected export(condition?: boolean): this { const cond = arguments.length === 0 ? true : Boolean(condition); + this.exported = cond; + // TODO: remove this side-effect once planner handles exported flag if (this.symbol) this.symbol.setExported(cond); return this._m(ts.SyntaxKind.ExportKeyword, cond); } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/note.ts b/packages/openapi-ts/src/ts-dsl/mixins/note.ts index c9dfe971e..9985b4e1a 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/note.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/note.ts @@ -6,6 +6,7 @@ import { NoteTsDsl } from '../layout/note'; import type { BaseCtor, MixinCtor } from './types'; export interface NoteMethods extends Node { + $note(node: T): T; note(lines?: MaybeArray, fn?: (h: NoteTsDsl) => void): this; } @@ -13,7 +14,7 @@ export function NoteMixin>( Base: TBase, ) { abstract class Note extends Base { - protected _note?: NoteTsDsl; + private _note?: NoteTsDsl; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); @@ -27,8 +28,7 @@ export function NoteMixin>( return this; } - protected override _render() { - const node = this.$render(); + protected $note(node: T): T { return this._note ? this._note.apply(node) : node; } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/param.ts b/packages/openapi-ts/src/ts-dsl/mixins/param.ts index f50e89b14..224b3c511 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/param.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/param.ts @@ -1,7 +1,8 @@ import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; +import type { ParamCtor, ParamName } from '../decl/param'; import { ParamTsDsl } from '../decl/param'; import type { BaseCtor, MixinCtor } from './types'; @@ -9,10 +10,7 @@ export interface ParamMethods extends Node { /** Renders the parameters into an array of `ParameterDeclaration`s. */ $params(): ReadonlyArray; /** Adds a parameter. */ - param( - name: string | ((p: ParamTsDsl) => void), - fn?: (p: ParamTsDsl) => void, - ): this; + param(...args: Parameters): this; /** Adds multiple parameters. */ params(...params: ReadonlyArray>): this; } @@ -25,13 +23,13 @@ export function ParamMixin>( override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - for (const p of this._params) { - if (isTsDsl(p)) p.analyze(ctx); + for (const param of this._params) { + ctx.analyze(param); } } protected param( - name: string | ((p: ParamTsDsl) => void), + name: ParamName | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void, ): this { const p = new ParamTsDsl(name, fn); diff --git a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts index 408a69d36..b4a35e0aa 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/pattern.ts @@ -1,7 +1,7 @@ import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeArray } from '../base'; +import type { MaybeArray } from '../base'; import { PatternTsDsl } from '../decl/pattern'; import type { BaseCtor, MixinCtor } from './types'; @@ -29,7 +29,7 @@ export function PatternMixin>( override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this.pattern)) this.pattern.analyze(ctx); + ctx.analyze(this.pattern); } protected array( diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts index e2ae62ea6..1e8e55880 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-args.ts @@ -1,9 +1,8 @@ -import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Node, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { MaybeTsDsl, TypeTsDsl } from '../base'; -import { isTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; type Arg = Symbol | string | MaybeTsDsl; @@ -21,26 +20,22 @@ export function TypeArgsMixin>( Base: TBase, ) { abstract class TypeArgs extends Base { - protected _generics: Array = []; + protected _generics: Array> = []; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const g of this._generics) { - if (isSymbol(g)) { - ctx.addDependency(g); - } else if (isTsDsl(g)) { - g.analyze(ctx); - } + ctx.analyze(g); } } protected generic(arg: Arg): this { - this._generics.push(arg); + this._generics.push(ref(arg)); return this; } protected generics(...args: ReadonlyArray): this { - this._generics.push(...args); + this._generics.push(...args.map((a) => ref(a))); return this; } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts index 8f5d558fd..92b6c7579 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts @@ -1,8 +1,7 @@ import type { AnalysisContext, Node } from '@hey-api/codegen-core'; -import ts from 'typescript'; +import type ts from 'typescript'; import type { MaybeTsDsl, TsDsl, TypeTsDsl } from '../base'; -import { isTsDsl } from '../base'; import type { TypeOfExprTsDsl } from '../expr/typeof'; import type { TypeExprTsDsl } from '../type/expr'; import type { TypeIdxTsDsl } from '../type/idx'; @@ -77,21 +76,6 @@ export interface TypeExprMethods extends Node { readonly(this: MaybeTsDsl): TypeOperatorTsDsl; /** Create a TypeExpr node representing ReturnType. */ returnType(this: MaybeTsDsl): TypeExprTsDsl; - /** - * Create a `typeof` operator that narrows its return type based on the receiver. - * - * - If `this` is a `TsDsl` → returns TypeOfExprTsDsl - * - If `this` is a `TsDsl` → returns TypeQueryTsDsl - * - If `this` is a raw ts.Expression → returns TypeOfExprTsDsl - * - Otherwise → returns TypeQueryTsDsl - */ - typeof>( - this: T, - ): T extends MaybeTsDsl - ? TypeOfExprTsDsl - : T extends MaybeTsDsl - ? TypeQueryTsDsl - : TypeQueryTsDsl | TypeOfExprTsDsl; /** Create a TypeOfExpr node representing typeof this. */ typeofExpr(this: MaybeTsDsl): TypeOfExprTsDsl; /** Create a TypeQuery node representing typeof this. */ @@ -137,30 +121,6 @@ export function TypeExprMixin>( return typeQueryFactory!(this); } - protected typeof>( - this: T, - ): T extends TsDsl - ? TypeOfExprTsDsl - : T extends TypeTsDsl - ? TypeQueryTsDsl - : TypeQueryTsDsl | TypeOfExprTsDsl { - if (isTsDsl(this)) { - // @ts-expect-error - const node = this._render(); - return ( - ts.isExpression(node) - ? typeOfExprFactory!(this as any) - : typeQueryFactory!(this) - ) as any; - } - - if (ts.isExpression(this as any)) { - return typeOfExprFactory!(this as ts.Expression) as any; - } - - return typeQueryFactory!(this) as any; - } - protected unique(this: TypeTsDsl): TypeOperatorTsDsl { return typeOperatorFactory!().unique(this); } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts index afec41f65..32f1c91fb 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-params.ts @@ -2,7 +2,7 @@ import type { AnalysisContext, Node, Symbol } from '@hey-api/codegen-core'; import { isSymbol } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import { TypeParamTsDsl } from '../type/param'; import type { BaseCtor, MixinCtor } from './types'; @@ -26,7 +26,7 @@ export function TypeParamsMixin>( override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const g of this._generics) { - if (isTsDsl(g)) g.analyze(ctx); + ctx.analyze(g); } } diff --git a/packages/openapi-ts/src/ts-dsl/mixins/value.ts b/packages/openapi-ts/src/ts-dsl/mixins/value.ts index 06e0a7caa..de3f21618 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/value.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/value.ts @@ -1,7 +1,7 @@ import type { AnalysisContext, Node } from '@hey-api/codegen-core'; import type ts from 'typescript'; -import { isTsDsl, type MaybeTsDsl } from '../base'; +import type { MaybeTsDsl } from '../base'; import type { BaseCtor, MixinCtor } from './types'; export type ValueExpr = string | MaybeTsDsl; @@ -20,7 +20,7 @@ export function ValueMixin>( override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this.value)) this.value.analyze(ctx); + ctx.analyze(this.value); } protected assign(expr: ValueExpr): this { diff --git a/packages/openapi-ts/src/ts-dsl/render/__tests__/typescript.test.ts b/packages/openapi-ts/src/ts-dsl/render/__tests__/typescript.test.ts new file mode 100644 index 000000000..e1c61d236 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/render/__tests__/typescript.test.ts @@ -0,0 +1,80 @@ +import type { RenderContext } from '@hey-api/codegen-core'; +import { Project } from '@hey-api/codegen-core'; +import ts from 'typescript'; +import { describe, expect, it } from 'vitest'; + +import { TypeScriptRenderer } from '../typescript'; +import type { ModuleExport, ModuleImport } from '../utils'; + +describe('TypeScriptRenderer', () => { + const renderer = new TypeScriptRenderer(); + + const mockFile = (overrides: any = {}) => ({ + exports: [], + imports: [], + language: 'typescript', + nodes: [], + ...overrides, + }); + + const mockCtx = ( + fileOverrides = {}, + projectOverrides = {}, + ): RenderContext => ({ + file: mockFile(fileOverrides), + project: new Project({ + root: '/root', + ...projectOverrides, + }), + }); + + it('supports() returns true only for typescript files', () => { + expect(renderer.supports(mockCtx({ language: 'typescript' }))).toBe(true); + expect(renderer.supports(mockCtx({ language: 'javascript' }))).toBe(false); + }); + + it('render() produces header even with empty file', () => { + const ctx = mockCtx(); + const result = renderer.render(ctx); + expect(result).toContain( + '// This file is auto-generated by @hey-api/openapi-ts', + ); + }); + + it('renderImport() generates named and namespace imports correctly', () => { + const group: ModuleImport = { + imports: [ + { + isTypeOnly: false, + kind: 'named', + localName: 'A', + sourceName: 'A', + }, + ], + isTypeOnly: false, + modulePath: 'foo', + namespaceImport: undefined, + }; + const node = renderer['renderImport'](group); + expect(ts.isImportDeclaration(node)).toBe(true); + }); + + it('renderExport() generates named and namespace exports correctly', () => { + const group: ModuleExport = { + canExportAll: false, + exports: [ + { + exportedName: 'B', + isTypeOnly: false, + kind: 'named', + sourceName: 'B', + }, + ], + isTypeOnly: false, + modulePath: 'bar', + namespaceExport: undefined, + }; + const node = renderer['renderExport'](group); + expect(ts.isExportDeclaration(node)).toBe(true); + }); +}); diff --git a/packages/openapi-ts/src/ts-dsl/render/typescript.ts b/packages/openapi-ts/src/ts-dsl/render/typescript.ts new file mode 100644 index 000000000..f396f6411 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/render/typescript.ts @@ -0,0 +1,285 @@ +import type { RenderContext, Renderer } from '@hey-api/codegen-core'; +import ts from 'typescript'; + +import { $ } from '~/ts-dsl'; + +import type { + ModuleExport, + ModuleImport, + SortGroup, + SortKey, + SortModule, +} from './utils'; +import { moduleSortKey, nodeToString } from './utils'; + +export class TypeScriptRenderer implements Renderer { + /** + * Whether `export * from 'module'` should be used when possible instead of named exports. + * + * @private + */ + private preferExportAll: boolean; + /** + * Controls whether imports/exports include a file extension (e.g., '.ts' or '.js'). + * + * @private + */ + private preferFileExtension: string; + /** + * Optional function to transform module specifiers. + * + * @private + */ + private resolveModuleName?: (moduleName: string) => string | undefined; + + constructor( + args: { + preferExportAll?: boolean; + preferFileExtension?: string; + resolveModuleName?: (moduleName: string) => string | undefined; + } = {}, + ) { + this.preferExportAll = args.preferExportAll ?? false; + this.preferFileExtension = args.preferFileExtension ?? ''; + this.resolveModuleName = args.resolveModuleName; + } + + render(ctx: RenderContext): string { + let text = ''; + const header = '// This file is auto-generated by @hey-api/openapi-ts'; + text += `${header}\n`; + + let imports = ''; + for (const group of this.getImports(ctx)) { + if (imports) imports += '\n'; + for (const imp of group) { + imports += `${nodeToString(this.renderImport(imp))}\n`; + } + } + text = `${text}${text && imports ? '\n' : ''}${imports}`; + + let nodes = ''; + for (const node of ctx.file.nodes) { + if (nodes) nodes += '\n'; + // @ts-expect-error + nodes += `${nodeToString(node.toAst())}\n`; + } + text = `${text}${text && nodes ? '\n' : ''}${nodes}`; + + let exports = ''; + for (const group of this.getExports(ctx)) { + if ((!exports && nodes) || exports) exports += '\n'; + for (const exp of group) { + exports += `${nodeToString(this.renderExport(exp))}\n`; + } + } + text = `${text}${text && exports ? '\n' : ''}${exports}`; + + return text; + } + + supports(ctx: RenderContext): boolean { + return ctx.file.language === 'typescript'; + } + + private getExports( + ctx: RenderContext, + ): ReadonlyArray> { + type ModuleEntry = { + group: ModuleExport; + sortKey: SortKey; + }; + + const groups = new Map>(); + + for (const exp of ctx.file.exports) { + const sortKey = moduleSortKey({ + file: ctx.file, + fromFile: exp.from, + preferFileExtension: this.preferFileExtension, + root: ctx.project.root, + }); + const modulePath = this.resolveModuleName?.(sortKey[2]) ?? sortKey[2]; + const [groupIndex] = sortKey; + + if (!groups.has(groupIndex)) groups.set(groupIndex, new Map()); + const moduleMap = groups.get(groupIndex)!; + + if (!moduleMap.has(modulePath)) { + moduleMap.set(modulePath, { + group: { + canExportAll: exp.canExportAll, + exports: exp.exports, + isTypeOnly: exp.isTypeOnly, + modulePath, + namespaceExport: exp.namespaceExport, + }, + sortKey, + }); + } + } + + const exports: Array> = Array.from(groups.entries()) + .sort((a, b) => a[0] - b[0]) + .map(([, moduleMap]) => { + const entries = Array.from(moduleMap.values()); + + entries.sort((a, b) => { + const d = a.sortKey[1] - b.sortKey[1]; + return d !== 0 + ? d + : a.group.modulePath.localeCompare(b.group.modulePath); + }); + + return entries.map((e) => { + const group = e.group; + if (group.namespaceExport) { + group.exports = []; + } else { + const isTypeOnly = !group.exports.find((exp) => !exp.isTypeOnly); + if (isTypeOnly) { + group.isTypeOnly = true; + for (const exp of group.exports) { + exp.isTypeOnly = false; + } + } + group.exports.sort((a, b) => + a.exportedName.localeCompare(b.exportedName), + ); + } + return group; + }); + }); + + return exports; + } + + private getImports( + ctx: RenderContext, + ): ReadonlyArray> { + type ModuleEntry = { + group: ModuleImport; + sortKey: SortKey; + }; + + const groups = new Map>(); + + for (const imp of ctx.file.imports) { + const sortKey = moduleSortKey({ + file: ctx.file, + fromFile: imp.from, + preferFileExtension: this.preferFileExtension, + root: ctx.project.root, + }); + const modulePath = this.resolveModuleName?.(sortKey[2]) ?? sortKey[2]; + const [groupIndex] = sortKey; + + if (!groups.has(groupIndex)) groups.set(groupIndex, new Map()); + const moduleMap = groups.get(groupIndex)!; + + if (!moduleMap.has(modulePath)) { + moduleMap.set(modulePath, { + group: { + imports: [], + isTypeOnly: false, + modulePath, + }, + sortKey, + }); + } + + const entry = moduleMap.get(modulePath)!; + const group = entry.group; + + if (imp.namespaceImport) { + group.isTypeOnly = imp.isTypeOnly; + group.namespaceImport = imp.namespaceImport; + } else { + group.imports.push(...imp.imports); + } + } + + const imports: Array> = Array.from(groups.entries()) + .sort((a, b) => a[0] - b[0]) + .map(([, moduleMap]) => { + const entries = Array.from(moduleMap.values()); + + entries.sort((a, b) => { + const d = a.sortKey[1] - b.sortKey[1]; + return d !== 0 + ? d + : a.group.modulePath.localeCompare(b.group.modulePath); + }); + + return entries.map((e) => { + const group = e.group; + if (group.namespaceImport) { + group.imports = []; + } else { + const isTypeOnly = !group.imports.find((imp) => !imp.isTypeOnly); + if (isTypeOnly) { + group.isTypeOnly = true; + for (const imp of group.imports) { + imp.isTypeOnly = false; + } + } + group.imports.sort((a, b) => + a.localName.localeCompare(b.localName), + ); + } + return group; + }); + }); + + return imports; + } + + private renderExport(group: ModuleExport): ts.ExportDeclaration { + const specifiers = group.exports.map((exp) => { + const specifier = ts.factory.createExportSpecifier( + exp.isTypeOnly, + exp.sourceName !== exp.exportedName + ? $.id(exp.sourceName).toAst() + : undefined, + $.id(exp.exportedName).toAst(), + ); + return specifier; + }); + const exportClause = group.namespaceExport + ? ts.factory.createNamespaceExport($.id(group.namespaceExport).toAst()) + : (!group.canExportAll || !this.preferExportAll) && specifiers.length + ? ts.factory.createNamedExports(specifiers) + : undefined; + return ts.factory.createExportDeclaration( + undefined, + group.isTypeOnly, + exportClause, + $.literal(group.modulePath).toAst(), + ); + } + + private renderImport(group: ModuleImport): ts.ImportDeclaration { + const specifiers = group.imports.map((imp) => { + const specifier = ts.factory.createImportSpecifier( + imp.isTypeOnly, + imp.sourceName !== imp.localName + ? $.id(imp.sourceName).toAst() + : undefined, + $.id(imp.localName).toAst(), + ); + return specifier; + }); + const importClause = ts.factory.createImportClause( + group.isTypeOnly, + undefined, // TODO: default imports + group.namespaceImport + ? ts.factory.createNamespaceImport($.id(group.namespaceImport).toAst()) + : ts.factory.createNamedImports(specifiers), + ); + return ts.factory.createImportDeclaration( + undefined, + importClause, + $.literal(group.modulePath).toAst(), + ); + } +} diff --git a/packages/openapi-ts/src/ts-dsl/render/utils.ts b/packages/openapi-ts/src/ts-dsl/render/utils.ts new file mode 100644 index 000000000..b9972edb9 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/render/utils.ts @@ -0,0 +1,145 @@ +import path from 'node:path'; + +import type { ExportGroup, File, ImportGroup } from '@hey-api/codegen-core'; +import ts from 'typescript'; + +const printer = ts.createPrinter({ + newLine: ts.NewLineKind.LineFeed, + removeComments: false, +}); + +const blankFile = ts.createSourceFile( + '', + '', + ts.ScriptTarget.ESNext, + false, + ts.ScriptKind.TS, +); + +/** Print a TypeScript node to a string. */ +export function nodeToString(node: ts.Node): string { + const result = printer.printNode(ts.EmitHint.Unspecified, node, blankFile); + + try { + /** + * TypeScript Compiler API escapes unicode characters by default and there + * is no way to disable this behavior + * {@link https://github.com/microsoft/TypeScript/issues/36174} + */ + return result.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex: string) => + String.fromCharCode(Number.parseInt(hex, 16)), + ); + } catch { + return result; + } +} + +export const nodeBuiltins = new Set([ + 'buffer', + 'child_process', + 'cluster', + 'console', + 'constants', + 'crypto', + 'dgram', + 'dns', + 'domain', + 'events', + 'freelist', + 'fs', + 'http', + 'https', + 'module', + 'net', + 'os', + 'path', + 'process', + 'punycode', + 'querystring', + 'readline', + 'repl', + 'stream', + 'string_decoder', + 'timers', + 'tls', + 'tty', + 'url', + 'util', + 'v8', + 'vm', + 'worker_threads', + 'zlib', +]); + +export type SortGroup = number; +export type SortDistance = number; +export type SortModule = string; +export type SortKey = [SortGroup, SortDistance, SortModule]; + +export type ModuleExport = Omit & { + /** Module specifier for re-exports, e.g. `./foo`. */ + modulePath: string; +}; + +export type ModuleImport = Omit & { + /** Module specifier for imports, e.g. `./foo`. */ + modulePath: string; +}; + +export const moduleSortKey = ({ + file, + fromFile, + preferFileExtension, + root, +}: { + file: File; + fromFile: File; + preferFileExtension: string; + root: string; +}): SortKey => { + const fromPath = fromFile.finalPath!; + const filePath = file.finalPath!; + let modulePath = fromPath; + + // built-ins + // TODO: based on nodeBuiltins set + + // external + if (fromFile.external && !path.isAbsolute(modulePath)) { + return [0, 0, modulePath]; + } + + // outside project root + if (!modulePath.startsWith(root)) { + return [1, 0, modulePath]; + } + + // local + const rel = path + .relative(path.dirname(filePath), path.dirname(modulePath)) + .split(path.sep) + .join('/'); + + let parentCount: number; + // same folder + if (!rel.startsWith('..')) { + modulePath = `./${rel ? `${rel}/` : ''}${fromFile.name}${fromFile.extension ?? ''}`; + parentCount = 0; + } else { + modulePath = `${rel}/${fromFile.name}${fromFile.extension ?? ''}`; + parentCount = rel + .split(path.sep) + .filter((segment) => segment === '..').length; + } + + if (modulePath.endsWith('.ts')) { + modulePath = modulePath.slice(0, -'.ts'.length); + } + if (preferFileExtension) { + modulePath += preferFileExtension; + } else if (modulePath.endsWith('/index')) { + modulePath = modulePath.slice(0, -'/index'.length); + } + + return [2, parentCount, modulePath]; +}; diff --git a/packages/openapi-ts/src/ts-dsl/stmt/block.ts b/packages/openapi-ts/src/ts-dsl/stmt/block.ts new file mode 100644 index 000000000..7277be85a --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/stmt/block.ts @@ -0,0 +1,30 @@ +import type { AnalysisContext } from '@hey-api/codegen-core'; +import ts from 'typescript'; + +import { TsDsl } from '../base'; +import type { DoExpr } from '../mixins/do'; +import { DoMixin } from '../mixins/do'; +import { LayoutMixin } from '../mixins/layout'; + +const Mixed = DoMixin(LayoutMixin(TsDsl)); + +export class BlockTsDsl extends Mixed { + readonly '~dsl' = 'BlockTsDsl'; + + constructor(...items: Array) { + super(); + this.do(...items); + } + + override analyze(ctx: AnalysisContext) { + super.analyze(ctx); + } + + override toAst() { + const statements = this.$do(); + return ts.factory.createBlock( + statements, + this.$multiline(statements.length), + ); + } +} diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index 857da8bd8..d23c2d4db 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -2,67 +2,59 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; +import type { DoExpr } from '../mixins/do'; import { DoMixin } from '../mixins/do'; +import { BlockTsDsl } from './block'; + +export type IfCondition = string | MaybeTsDsl; const Mixed = DoMixin(TsDsl); export class IfTsDsl extends Mixed { - protected _condition?: string | MaybeTsDsl; - protected _else?: ReadonlyArray>; + readonly '~dsl' = 'IfTsDsl'; + + protected _condition?: IfCondition; + protected _else?: Array; - constructor(condition?: string | MaybeTsDsl) { + constructor(condition?: IfCondition) { super(); if (condition) this.condition(condition); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._condition)) this._condition.analyze(ctx); + ctx.analyze(this._condition); if (this._else) { - for (const stmt of this._else) { - if (isTsDsl(stmt)) stmt.analyze(ctx); + ctx.pushScope(); + try { + for (const stmt of this._else) { + ctx.analyze(stmt); + } + } finally { + ctx.popScope(); } } } - condition(condition: string | MaybeTsDsl): this { + condition(condition: IfCondition): this { this._condition = condition; return this; } - otherwise(...statements: ReadonlyArray>): this { - this._else = statements; + otherwise(...items: Array): this { + this._else = items; return this; } - protected override _render() { + override toAst() { if (!this._condition) throw new Error('Missing condition in if'); + if (!this._do) throw new Error('Missing then block in if'); - const thenStmts = this.$do(); - if (!thenStmts.length) throw new Error('Missing then block in if'); - - const condition = this.$node(this._condition); - const thenBlock = - thenStmts.length === 1 - ? thenStmts[0]! - : ts.factory.createBlock(thenStmts, true); - const thenNode = ts.isBlock(thenBlock) - ? thenBlock - : ts.factory.createBlock([thenBlock], true); - - let elseNode: ts.Statement | undefined; - if (this._else) { - const elseStmts = this.$node(this._else); - const elseBlock = - elseStmts.length === 1 - ? elseStmts[0]! - : ts.factory.createBlock(elseStmts, true); - elseNode = ts.isBlock(elseBlock) - ? elseBlock - : ts.factory.createBlock([elseBlock], true); - } - - return ts.factory.createIfStatement(condition, thenNode, elseNode); + return ts.factory.createIfStatement( + this.$node(this._condition), + this.$node(new BlockTsDsl(...this._do)), + this._else ? this.$node(new BlockTsDsl(this._else)) : undefined, + ); } } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/return.ts b/packages/openapi-ts/src/ts-dsl/stmt/return.ts index 1d4e96049..63b18c1e6 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/return.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/return.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { setReturnFactory } from '../mixins/expr'; export type ReturnExpr = Symbol | string | MaybeTsDsl; @@ -12,23 +12,21 @@ export type ReturnCtor = (expr?: ReturnExpr) => ReturnTsDsl; const Mixed = TsDsl; export class ReturnTsDsl extends Mixed { - protected _returnExpr?: ReturnExpr; + readonly '~dsl' = 'ReturnTsDsl'; + + protected _returnExpr?: Ref; constructor(expr?: ReturnExpr) { super(); - this._returnExpr = expr; + if (expr) this._returnExpr = ref(expr); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._returnExpr)) { - ctx.addDependency(this._returnExpr); - } else if (isTsDsl(this._returnExpr)) { - this._returnExpr.analyze(ctx); - } + ctx.analyze(this._returnExpr); } - protected override _render() { + override toAst() { return ts.factory.createReturnStatement(this.$node(this._returnExpr)); } } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts index c61995f59..b5f1bd383 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/stmt.ts @@ -1,11 +1,13 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; const Mixed = TsDsl; export class StmtTsDsl extends Mixed { + readonly '~dsl' = 'StmtTsDsl'; + protected _inner: ts.Expression | ts.Statement | TsDsl; constructor(inner: ts.Expression | ts.Statement | TsDsl) { @@ -15,10 +17,10 @@ export class StmtTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._inner)) this._inner.analyze(ctx); + ctx.analyze(this._inner); } - protected override _render() { + override toAst() { const node = this.$node(this._inner); return ts.isStatement(node) ? node diff --git a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts index 51df159c9..bf9aa9a00 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/throw.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/throw.ts @@ -2,12 +2,14 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { LiteralTsDsl } from '../expr/literal'; const Mixed = TsDsl; export class ThrowTsDsl extends Mixed { + readonly '~dsl' = 'ThrowTsDsl'; + protected error: string | MaybeTsDsl; protected msg?: string | MaybeTsDsl; protected useNew: boolean; @@ -20,8 +22,8 @@ export class ThrowTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this.error)) this.error.analyze(ctx); - if (isTsDsl(this.msg)) this.msg.analyze(ctx); + ctx.analyze(this.error); + ctx.analyze(this.msg); } message(value: string | MaybeTsDsl): this { @@ -29,7 +31,7 @@ export class ThrowTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { const errorNode = this.$node(this.error); const messageNode = this.$node(this.msg ? [this.msg] : []).map((expr) => typeof expr === 'string' ? this.$node(new LiteralTsDsl(expr)) : expr, diff --git a/packages/openapi-ts/src/ts-dsl/stmt/try.ts b/packages/openapi-ts/src/ts-dsl/stmt/try.ts new file mode 100644 index 000000000..0563ab71a --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/stmt/try.ts @@ -0,0 +1,97 @@ +import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; +import ts from 'typescript'; + +import { TsDsl } from '../base'; +import type { DoExpr } from '../mixins/do'; +import { BlockTsDsl } from './block'; + +const Mixed = TsDsl; + +type CatchParam = Symbol | string; + +export class TryTsDsl extends Mixed { + readonly '~dsl' = 'TryTsDsl'; + + protected _catch?: Array; + protected _catchArg?: CatchParam; + protected _finally?: Array; + protected _try?: Array; + + constructor(...tryBlock: Array) { + super(); + this.try(...tryBlock); + } + + override analyze(ctx: AnalysisContext): void { + super.analyze(ctx); + + if (this._try) { + ctx.pushScope(); + try { + for (const stmt of this._try) ctx.analyze(stmt); + } finally { + ctx.popScope(); + } + } + + if (this._catch || this._catchArg) { + ctx.pushScope(); + try { + ctx.analyze(this._catchArg); + if (this._catch) { + for (const stmt of this._catch) ctx.analyze(stmt); + } + } finally { + ctx.popScope(); + } + } + + if (this._finally) { + ctx.pushScope(); + try { + for (const stmt of this._finally) ctx.analyze(stmt); + } finally { + ctx.popScope(); + } + } + } + + catch(...items: Array): this { + this._catch = items; + return this; + } + + catchArg(arg: CatchParam): this { + this._catchArg = arg; + return this; + } + + finally(...items: Array): this { + this._finally = items; + return this; + } + + try(...items: Array): this { + this._try = items; + return this; + } + + override toAst() { + if (!this._try?.length) throw new Error('Missing try block'); + + const catchParam = this._catchArg + ? (this.$node(this._catchArg) as ts.BindingName) + : undefined; + + return ts.factory.createTryStatement( + this.$node(new BlockTsDsl(...this._try)), + ts.factory.createCatchClause( + catchParam + ? ts.factory.createVariableDeclaration(catchParam) + : undefined, + this.$node(new BlockTsDsl(...(this._catch ?? []))), + ), + this._finally ? this.$node(new BlockTsDsl(...this._finally)) : undefined, + ); + } +} diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index f49767e17..8cbda5974 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -1,5 +1,5 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import { TsDsl, TypeTsDsl } from '../base'; @@ -9,6 +9,7 @@ import { DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { PatternMixin } from '../mixins/pattern'; import { ValueMixin } from '../mixins/value'; import { TypeExprTsDsl } from '../type/expr'; +import { safeSymbolName } from '../utils/name'; export type VarName = Symbol | string; @@ -21,23 +22,26 @@ const Mixed = DefaultMixin( ); export class VarTsDsl extends Mixed { + readonly '~dsl' = 'VarTsDsl'; + protected kind: ts.NodeFlags = ts.NodeFlags.None; - protected name?: VarName; + protected name?: Ref; protected _type?: TypeTsDsl; constructor(name?: VarName) { super(); - this.name = name; + if (name) this.name = ref(name); if (isSymbol(name)) { name.setKind('var'); + name.setNameSanitizer(safeSymbolName); name.setNode(this); } } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.name)) ctx.addDependency(this.name); - this._type?.analyze(ctx); + ctx.analyze(this.name); + ctx.analyze(this._type); } const(): this { @@ -61,11 +65,11 @@ export class VarTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { const name = this.$pattern() ?? this.$node(this.name); if (!name) throw new Error('Var must have either a name or a destructuring pattern'); - return ts.factory.createVariableStatement( + const node = ts.factory.createVariableStatement( this.modifiers, ts.factory.createVariableDeclarationList( [ @@ -80,5 +84,6 @@ export class VarTsDsl extends Mixed { this.kind, ), ); + return this.$docs(this.$hint(node)); } } diff --git a/packages/openapi-ts/src/ts-dsl/token.ts b/packages/openapi-ts/src/ts-dsl/token.ts index f4fef733d..31e4db834 100644 --- a/packages/openapi-ts/src/ts-dsl/token.ts +++ b/packages/openapi-ts/src/ts-dsl/token.ts @@ -5,6 +5,8 @@ import { TsDsl } from './base'; export class TokenTsDsl extends TsDsl< ts.Token > { + readonly '~dsl' = 'TokenTsDsl'; + protected _kind?: K; /** Sets the token kind */ @@ -55,7 +57,7 @@ export class TokenTsDsl extends TsDsl< ); } - protected override _render(): ts.Token { + override toAst(): ts.Token { if (!this._kind) { throw new Error(`Token missing \`.kind(kind)\``); } diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index cad322667..c5f3e9a03 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -1,12 +1,13 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { fromRef, isSymbol, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TsDsl } from '../base'; +import { TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; +import { safeSymbolName } from '../utils/name'; type Name = Symbol | string; type Value = MaybeTsDsl; @@ -16,14 +17,17 @@ const Mixed = DocMixin( ); export class TypeAliasTsDsl extends Mixed { - protected name: Name; + readonly '~dsl' = 'TypeAliasTsDsl'; + + protected name: Ref; protected value?: Value; constructor(name: Name, fn?: (t: TypeAliasTsDsl) => void) { super(); - this.name = name; + this.name = ref(name); if (isSymbol(name)) { name.setKind('type'); + name.setNameSanitizer(safeSymbolName); name.setNode(this); } fn?.(this); @@ -31,8 +35,8 @@ export class TypeAliasTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.name)) ctx.addDependency(this.name); - if (isTsDsl(this.value)) this.value.analyze(ctx); + ctx.analyze(this.name); + ctx.analyze(this.value); } /** Sets the type expression on the right-hand side of `= ...`. */ @@ -41,15 +45,18 @@ export class TypeAliasTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { if (!this.value) - throw new Error(`Type alias '${this.name}' is missing a type definition`); - return ts.factory.createTypeAliasDeclaration( + throw new Error( + `Type alias '${fromRef(this.name)}' is missing a type definition`, + ); + const node = ts.factory.createTypeAliasDeclaration( this.modifiers, // @ts-expect-error need to improve types this.$node(this.name), this.$generics(), this.$type(this.value), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/and.ts b/packages/openapi-ts/src/ts-dsl/type/and.ts index 59fe23fad..86e5bd533 100644 --- a/packages/openapi-ts/src/ts-dsl/type/and.ts +++ b/packages/openapi-ts/src/ts-dsl/type/and.ts @@ -1,15 +1,17 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; type Type = Symbol | string | ts.TypeNode | TypeTsDsl; const Mixed = TypeTsDsl; export class TypeAndTsDsl extends Mixed { - protected _types: Array = []; + readonly '~dsl' = 'TypeAndTsDsl'; + + protected _types: Array> = []; constructor(...nodes: Array) { super(); @@ -18,29 +20,25 @@ export class TypeAndTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - for (const t of this._types) { - if (isSymbol(t)) { - ctx.addDependency(t); - } else if (isTsDsl(t)) { - t.analyze(ctx); - } + for (const type of this._types) { + ctx.analyze(type); } } types(...nodes: Array): this { - this._types.push(...nodes); + this._types.push(...nodes.map((n) => ref(n))); return this; } - protected override _render() { + override toAst() { const flat: Array = []; - for (const n of this._types) { - const t = this.$type(n); - if (ts.isIntersectionTypeNode(t)) { - flat.push(...t.types); + for (const node of this._types) { + const type = this.$type(node); + if (ts.isIntersectionTypeNode(type)) { + flat.push(...type.types); } else { - flat.push(t); + flat.push(type); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/attr.ts b/packages/openapi-ts/src/ts-dsl/type/attr.ts index 671fe388c..efb93b24f 100644 --- a/packages/openapi-ts/src/ts-dsl/type/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/attr.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isRef, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { TypeExprMixin } from '../mixins/type-expr'; type Base = Symbol | string | MaybeTsDsl; @@ -12,12 +12,14 @@ type Right = Symbol | string | ts.Identifier; const Mixed = TypeExprMixin(TypeTsDsl); export class TypeAttrTsDsl extends Mixed { - protected _base?: Base; - protected _right!: Right; + readonly '~dsl' = 'TypeAttrTsDsl'; - constructor(base: Base, right: string | ts.Identifier); + protected _base?: Ref; + protected _right!: Ref; + + constructor(base: Base | Ref, right: string | ts.Identifier); constructor(right: Right); - constructor(base: Base, right?: Right) { + constructor(base: Base | Ref, right?: Right) { super(); if (right) { this.base(base); @@ -30,25 +32,25 @@ export class TypeAttrTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._base)) { - ctx.addDependency(this._base); - } else if (isTsDsl(this._base)) { - this._base.analyze(ctx); - } - if (isSymbol(this._right)) ctx.addDependency(this._right); + ctx.analyze(this._base); + ctx.analyze(this._right); } - base(base?: Base): this { - this._base = base; + base(base?: Base | Ref): this { + if (isRef(base)) { + this._base = base; + } else { + this._base = base ? ref(base) : undefined; + } return this; } right(right: Right): this { - this._right = right; + this._right = ref(right); return this; } - protected override _render() { + override toAst() { if (!this._base) { throw new Error('TypeAttrTsDsl: missing base for qualified name'); } diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index 7aa03d9a9..af3035673 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -1,8 +1,8 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { isNode, ref } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { TypeArgsMixin } from '../mixins/type-args'; import { registerLazyAccessTypeExprFactory, @@ -16,7 +16,9 @@ export type TypeExprExpr = TypeExprName | TypeAttrTsDsl; const Mixed = TypeArgsMixin(TypeExprMixin(TypeTsDsl)); export class TypeExprTsDsl extends Mixed { - protected _exprInput?: TypeExprExpr; + readonly '~dsl' = 'TypeExprTsDsl'; + + protected _exprInput?: Ref; constructor(); constructor(fn: (t: TypeExprTsDsl) => void); @@ -30,32 +32,28 @@ export class TypeExprTsDsl extends Mixed { if (typeof name === 'function') { name(this); } else { - this._exprInput = name; + this._exprInput = name ? ref(name) : undefined; fn?.(this); } } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._exprInput)) { - ctx.addDependency(this._exprInput); - } else if (isTsDsl(this._exprInput)) { - this._exprInput.analyze(ctx); - } + ctx.analyze(this._exprInput); } /** Accesses a nested type (e.g. `Foo.Bar`). */ attr(right: string | ts.Identifier | TypeAttrTsDsl): this { - this._exprInput = isTsDsl(right) - ? right.base(this._exprInput) - : new TypeAttrTsDsl(this._exprInput!, right); + this._exprInput = isNode(right) + ? ref(right.base(this._exprInput)) + : ref(new TypeAttrTsDsl(this._exprInput!, right)); return this; } - protected override _render() { + override toAst() { if (!this._exprInput) throw new Error('TypeExpr must have an expression'); return ts.factory.createTypeReferenceNode( - // @ts-expect-error --- need to fix types + // @ts-expect-error need to improve types this.$type(this._exprInput), this.$generics(), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/fromValue.ts b/packages/openapi-ts/src/ts-dsl/type/fromValue.ts index d0b46cafe..aef13bbd1 100644 --- a/packages/openapi-ts/src/ts-dsl/type/fromValue.ts +++ b/packages/openapi-ts/src/ts-dsl/type/fromValue.ts @@ -1,13 +1,13 @@ +import { isNode } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { TsDsl } from '../base'; -import { isTsDsl } from '../base'; import { TypeLiteralTsDsl } from './literal'; import { TypeObjectTsDsl } from './object'; import { TypeTupleTsDsl } from './tuple'; export const fromValue = (input: unknown): TsDsl => { - if (isTsDsl(input)) { + if (isNode(input)) { return input as TsDsl; } diff --git a/packages/openapi-ts/src/ts-dsl/type/func.ts b/packages/openapi-ts/src/ts-dsl/type/func.ts index 5daf11262..add446176 100644 --- a/packages/openapi-ts/src/ts-dsl/type/func.ts +++ b/packages/openapi-ts/src/ts-dsl/type/func.ts @@ -12,11 +12,13 @@ const Mixed = DocMixin( ); export class TypeFuncTsDsl extends Mixed { + readonly '~dsl' = 'TypeFuncTsDsl'; + protected _returns?: TypeTsDsl; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - this._returns?.analyze(ctx); + ctx.analyze(this._returns); } /** Sets the return type. */ @@ -25,14 +27,15 @@ export class TypeFuncTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { if (this._returns === undefined) { throw new Error('Missing return type in function type DSL'); } - return ts.factory.createFunctionTypeNode( + const node = ts.factory.createFunctionTypeNode( this.$generics(), this.$params(), this.$type(this._returns), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts index 05ed93f14..fd6066586 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx-sig.ts @@ -2,7 +2,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ReadonlyMixin } from '../mixins/modifiers'; @@ -12,6 +12,8 @@ export type TypeIdxSigType = string | MaybeTsDsl; const Mixed = DocMixin(ReadonlyMixin(TypeTsDsl)); export class TypeIdxSigTsDsl extends Mixed { + readonly '~dsl' = 'TypeIdxSigTsDsl'; + protected _key?: TypeIdxSigType; protected _name: TypeIdxSigName; protected _type?: TypeIdxSigType; @@ -24,8 +26,8 @@ export class TypeIdxSigTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._key)) this._key.analyze(ctx); - if (isTsDsl(this._type)) this._type.analyze(ctx); + ctx.analyze(this._key); + ctx.analyze(this._type); } /** Returns true when all required builder calls are present. */ @@ -45,9 +47,9 @@ export class TypeIdxSigTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { this.$validate(); - return ts.factory.createIndexSignature( + const node = ts.factory.createIndexSignature( this.modifiers, [ ts.factory.createParameterDeclaration( @@ -60,6 +62,7 @@ export class TypeIdxSigTsDsl extends Mixed { ], this.$type(this._type), ); + return this.$docs(node); } $validate(): asserts this is this & { diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index 7720bd175..55f1dea02 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -2,7 +2,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { registerLazyAccessTypeIdxFactory, TypeExprMixin, @@ -14,6 +14,8 @@ type Index = string | number | MaybeTsDsl; const Mixed = TypeExprMixin(TypeTsDsl); export class TypeIdxTsDsl extends Mixed { + readonly '~dsl' = 'TypeIdxTsDsl'; + protected _base!: Base; protected _index!: Index; @@ -25,8 +27,8 @@ export class TypeIdxTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._base)) this._base.analyze(ctx); - if (isTsDsl(this._index)) this._index.analyze(ctx); + ctx.analyze(this._base); + ctx.analyze(this._index); } base(base: Base): this { @@ -39,7 +41,7 @@ export class TypeIdxTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { return ts.factory.createIndexedAccessTypeNode( this.$type(this._base), this.$type(this._index), diff --git a/packages/openapi-ts/src/ts-dsl/type/literal.ts b/packages/openapi-ts/src/ts-dsl/type/literal.ts index d85b7458e..7843b13b2 100644 --- a/packages/openapi-ts/src/ts-dsl/type/literal.ts +++ b/packages/openapi-ts/src/ts-dsl/type/literal.ts @@ -7,6 +7,8 @@ import { LiteralTsDsl } from '../expr/literal'; const Mixed = TypeTsDsl; export class TypeLiteralTsDsl extends Mixed { + readonly '~dsl' = 'TypeLiteralTsDsl'; + protected value: string | number | boolean | null; constructor(value: string | number | boolean | null) { @@ -18,7 +20,7 @@ export class TypeLiteralTsDsl extends Mixed { super.analyze(ctx); } - protected override _render() { + override toAst() { return ts.factory.createLiteralTypeNode( this.$node(new LiteralTsDsl(this.value)), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/mapped.ts b/packages/openapi-ts/src/ts-dsl/type/mapped.ts index 3f448df81..412d7e965 100644 --- a/packages/openapi-ts/src/ts-dsl/type/mapped.ts +++ b/packages/openapi-ts/src/ts-dsl/type/mapped.ts @@ -2,12 +2,14 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { TokenTsDsl } from '../token'; const Mixed = TypeTsDsl; export class TypeMappedTsDsl extends Mixed { + readonly '~dsl' = 'TypeMappedTsDsl'; + protected questionToken?: TokenTsDsl< | ts.SyntaxKind.QuestionToken | ts.SyntaxKind.PlusToken @@ -29,10 +31,10 @@ export class TypeMappedTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - this.questionToken?.analyze(ctx); - this.readonlyToken?.analyze(ctx); - if (isTsDsl(this._key)) this._key.analyze(ctx); - if (isTsDsl(this._type)) this._type.analyze(ctx); + ctx.analyze(this.questionToken); + ctx.analyze(this.readonlyToken); + ctx.analyze(this._key); + ctx.analyze(this._type); } /** Returns true when all required builder calls are present. */ @@ -82,7 +84,7 @@ export class TypeMappedTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { this.$validate(); return ts.factory.createMappedTypeNode( this.$node(this.readonlyToken), diff --git a/packages/openapi-ts/src/ts-dsl/type/object.ts b/packages/openapi-ts/src/ts-dsl/type/object.ts index 5190bef6a..780ee78d3 100644 --- a/packages/openapi-ts/src/ts-dsl/type/object.ts +++ b/packages/openapi-ts/src/ts-dsl/type/object.ts @@ -8,12 +8,14 @@ import { TypePropTsDsl } from './prop'; const Mixed = TypeTsDsl; export class TypeObjectTsDsl extends Mixed { + readonly '~dsl' = 'TypeObjectTsDsl'; + protected props: Array = []; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const prop of this.props) { - prop.analyze(ctx); + ctx.analyze(prop); } } @@ -41,7 +43,7 @@ export class TypeObjectTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { return ts.factory.createTypeLiteralNode(this.$node(this.props)); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index b7bc6da05..07c1cc54f 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -2,7 +2,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { registerLazyAccessTypeOperatorFactory } from '../mixins/type-expr'; type Op = @@ -26,12 +26,14 @@ const Mixed = TypeTsDsl; * The node will throw during render if required fields are missing. */ export class TypeOperatorTsDsl extends Mixed { + readonly '~dsl' = 'TypeOperatorTsDsl'; + protected _op?: Op; protected _type?: Type; override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._type)) this._type.analyze(ctx); + ctx.analyze(this._type); } /** Shorthand: builds `keyof T`. */ @@ -67,7 +69,7 @@ export class TypeOperatorTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { this.$validate(); return ts.factory.createTypeOperatorNode(this._op, this.$type(this._type)); } diff --git a/packages/openapi-ts/src/ts-dsl/type/or.ts b/packages/openapi-ts/src/ts-dsl/type/or.ts index a9afad2fe..fe445e556 100644 --- a/packages/openapi-ts/src/ts-dsl/type/or.ts +++ b/packages/openapi-ts/src/ts-dsl/type/or.ts @@ -1,15 +1,17 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; type Type = Symbol | string | ts.TypeNode | TypeTsDsl; const Mixed = TypeTsDsl; export class TypeOrTsDsl extends Mixed { - protected _types: Array = []; + readonly '~dsl' = 'TypeOrTsDsl'; + + protected _types: Array> = []; constructor(...nodes: Array) { super(); @@ -18,21 +20,17 @@ export class TypeOrTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - for (const t of this._types) { - if (isSymbol(t)) { - ctx.addDependency(t); - } else if (isTsDsl(t)) { - t.analyze(ctx); - } + for (const type of this._types) { + ctx.analyze(type); } } types(...nodes: Array): this { - this._types.push(...nodes); + this._types.push(...nodes.map((n) => ref(n))); return this; } - protected override _render() { + override toAst() { const flat: Array = []; for (const node of this._types) { diff --git a/packages/openapi-ts/src/ts-dsl/type/param.ts b/packages/openapi-ts/src/ts-dsl/type/param.ts index 55ea62b0b..72db5afdf 100644 --- a/packages/openapi-ts/src/ts-dsl/type/param.ts +++ b/packages/openapi-ts/src/ts-dsl/type/param.ts @@ -1,9 +1,9 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; export type TypeParamName = Symbol | string; export type TypeParamExpr = Symbol | string | boolean | MaybeTsDsl; @@ -11,42 +11,36 @@ export type TypeParamExpr = Symbol | string | boolean | MaybeTsDsl; const Mixed = TypeTsDsl; export class TypeParamTsDsl extends Mixed { - protected name?: TypeParamName; - protected constraint?: TypeParamExpr; - protected defaultValue?: TypeParamExpr; + readonly '~dsl' = 'TypeParamTsDsl'; + + protected constraint?: Ref; + protected defaultValue?: Ref; + protected name?: Ref; constructor(name?: TypeParamName, fn?: (name: TypeParamTsDsl) => void) { super(); - this.name = name; + if (name) this.name = ref(name); fn?.(this); } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this.name)) ctx.addDependency(this.name); - if (isSymbol(this.constraint)) { - ctx.addDependency(this.constraint); - } else if (isTsDsl(this.constraint)) { - this.constraint.analyze(ctx); - } - if (isSymbol(this.defaultValue)) { - ctx.addDependency(this.defaultValue); - } else if (isTsDsl(this.defaultValue)) { - this.defaultValue.analyze(ctx); - } + ctx.analyze(this.name); + ctx.analyze(this.constraint); + ctx.analyze(this.defaultValue); } default(value: TypeParamExpr): this { - this.defaultValue = value; + this.defaultValue = ref(value); return this; } extends(constraint: TypeParamExpr): this { - this.constraint = constraint; + this.constraint = ref(constraint); return this; } - protected override _render() { + override toAst() { if (!this.name) throw new Error('Missing type name'); return ts.factory.createTypeParameterDeclaration( undefined, diff --git a/packages/openapi-ts/src/ts-dsl/type/prop.ts b/packages/openapi-ts/src/ts-dsl/type/prop.ts index e8519ea0b..6b6219010 100644 --- a/packages/openapi-ts/src/ts-dsl/type/prop.ts +++ b/packages/openapi-ts/src/ts-dsl/type/prop.ts @@ -1,14 +1,14 @@ -import type { AnalysisContext, Symbol } from '@hey-api/codegen-core'; -import { isSymbol } from '@hey-api/codegen-core'; +import type { AnalysisContext, Ref, Symbol } from '@hey-api/codegen-core'; +import { ref } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ReadonlyMixin } from '../mixins/modifiers'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; -import { safePropName } from '../utils/prop'; +import { safePropName } from '../utils/name'; export type TypePropName = string; export type TypePropType = Symbol | string | MaybeTsDsl; @@ -16,8 +16,10 @@ export type TypePropType = Symbol | string | MaybeTsDsl; const Mixed = DocMixin(OptionalMixin(ReadonlyMixin(TypeTsDsl))); export class TypePropTsDsl extends Mixed { + readonly '~dsl' = 'TypePropTsDsl'; + protected name: TypePropName; - protected _type?: TypePropType; + protected _type?: Ref; constructor(name: TypePropName, fn: (p: TypePropTsDsl) => void) { super(); @@ -27,28 +29,25 @@ export class TypePropTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isSymbol(this._type)) { - ctx.addDependency(this._type); - } else if (isTsDsl(this._type)) { - this._type.analyze(ctx); - } + ctx.analyze(this._type); } /** Sets the property type. */ type(type: TypePropType): this { - this._type = type; + this._type = ref(type); return this; } - protected override _render() { + override toAst() { if (!this._type) { throw new Error(`Type not specified for property '${this.name}'`); } - return ts.factory.createPropertySignature( + const node = ts.factory.createPropertySignature( this.modifiers, this.$node(safePropName(this.name)), this._optional ? this.$node(new TokenTsDsl().optional()) : undefined, this.$type(this._type), ); + return this.$docs(node); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index 1c2e1f801..ff4d27be1 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -2,7 +2,7 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; import { registerLazyAccessTypeQueryFactory, TypeExprMixin, @@ -11,6 +11,8 @@ import { const Mixed = TypeExprMixin(TypeTsDsl); export class TypeQueryTsDsl extends Mixed { + readonly '~dsl' = 'TypeQueryTsDsl'; + protected _expr: string | MaybeTsDsl; constructor(expr: string | MaybeTsDsl) { @@ -20,10 +22,10 @@ export class TypeQueryTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - if (isTsDsl(this._expr)) this._expr.analyze(ctx); + ctx.analyze(this._expr); } - protected override _render() { + override toAst() { const expr = this.$node(this._expr); return ts.factory.createTypeQueryNode(expr as unknown as ts.EntityName); } diff --git a/packages/openapi-ts/src/ts-dsl/type/template.ts b/packages/openapi-ts/src/ts-dsl/type/template.ts index 2f171e5d0..633664a62 100644 --- a/packages/openapi-ts/src/ts-dsl/type/template.ts +++ b/packages/openapi-ts/src/ts-dsl/type/template.ts @@ -2,11 +2,13 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; const Mixed = TypeTsDsl; export class TypeTemplateTsDsl extends Mixed { + readonly '~dsl' = 'TypeTemplateTsDsl'; + protected parts: Array> = []; constructor(value?: string | MaybeTsDsl) { @@ -17,7 +19,7 @@ export class TypeTemplateTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const part of this.parts) { - if (isTsDsl(part)) part.analyze(ctx); + ctx.analyze(part); } } @@ -27,7 +29,7 @@ export class TypeTemplateTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { const parts = this.$node(this.parts); const normalized: Array = []; diff --git a/packages/openapi-ts/src/ts-dsl/type/tuple.ts b/packages/openapi-ts/src/ts-dsl/type/tuple.ts index fb8b09d34..ba850cafd 100644 --- a/packages/openapi-ts/src/ts-dsl/type/tuple.ts +++ b/packages/openapi-ts/src/ts-dsl/type/tuple.ts @@ -1,11 +1,13 @@ import type { AnalysisContext } from '@hey-api/codegen-core'; import ts from 'typescript'; -import { isTsDsl, TypeTsDsl } from '../base'; +import { TypeTsDsl } from '../base'; const Mixed = TypeTsDsl; export class TypeTupleTsDsl extends Mixed { + readonly '~dsl' = 'TypeTupleTsDsl'; + protected _elements: Array = []; constructor(...nodes: Array) { @@ -15,8 +17,8 @@ export class TypeTupleTsDsl extends Mixed { override analyze(ctx: AnalysisContext): void { super.analyze(ctx); - for (const t of this._elements) { - if (isTsDsl(t)) t.analyze(ctx); + for (const type of this._elements) { + ctx.analyze(type); } } @@ -25,7 +27,7 @@ export class TypeTupleTsDsl extends Mixed { return this; } - protected override _render() { + override toAst() { return ts.factory.createTupleTypeNode( this._elements.map((t) => this.$type(t)), ); diff --git a/packages/openapi-ts/src/openApi/shared/utils/__tests__/identifier.test.ts b/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts similarity index 96% rename from packages/openapi-ts/src/openApi/shared/utils/__tests__/identifier.test.ts rename to packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts index a9c118567..e172f8a93 100644 --- a/packages/openapi-ts/src/openApi/shared/utils/__tests__/identifier.test.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts @@ -1,9 +1,9 @@ import { describe, expect, it } from 'vitest'; -import { ensureValidIdentifier } from '../identifier'; +import { safeSymbolName } from '../name'; -describe('ensureValidIdentifier', () => { - const scenarios: Array<{ +describe('safeSymbolName', () => { + const scenarios: ReadonlyArray<{ name: string; output: string; }> = [ @@ -356,7 +356,7 @@ describe('ensureValidIdentifier', () => { it.each(scenarios)( 'transforms $name -> $output', async ({ name, output }) => { - expect(ensureValidIdentifier(name)).toEqual(output); + expect(safeSymbolName(name)).toEqual(output); }, ); }); diff --git a/packages/openapi-ts/src/ts-dsl/utils/name.ts b/packages/openapi-ts/src/ts-dsl/utils/name.ts new file mode 100644 index 000000000..8743e6095 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/utils/name.ts @@ -0,0 +1,74 @@ +import type ts from 'typescript'; + +import type { TsDsl } from '../base'; +import { IdTsDsl } from '../expr/id'; +import { LiteralTsDsl } from '../expr/literal'; +import { + illegalStartCharactersRegExp, + numberRegExp, + reservedBrowserGlobalsRegExp, + reservedJavaScriptGlobalsRegExp, + reservedJavaScriptKeywordsRegExp, + reservedNodeGlobalsRegExp, + reservedTypeScriptKeywordsRegExp, + validTypescriptIdentifierRegExp, +} from './regexp'; + +export const safeMemberName = (name: string): TsDsl => { + validTypescriptIdentifierRegExp.lastIndex = 0; + if (validTypescriptIdentifierRegExp.test(name)) { + return new IdTsDsl(name); + } + return new LiteralTsDsl(name) as TsDsl; +}; + +export const safePropName = (name: string): TsDsl => { + numberRegExp.lastIndex = 0; + if (numberRegExp.test(name)) { + return name.startsWith('-') + ? (new LiteralTsDsl(name) as TsDsl) + : (new LiteralTsDsl(Number(name)) as TsDsl); + } + + validTypescriptIdentifierRegExp.lastIndex = 0; + if (validTypescriptIdentifierRegExp.test(name)) { + return new IdTsDsl(name); + } + + return new LiteralTsDsl(name) as TsDsl; +}; + +const regexps = [ + reservedJavaScriptKeywordsRegExp, + reservedTypeScriptKeywordsRegExp, + reservedJavaScriptGlobalsRegExp, + reservedNodeGlobalsRegExp, + reservedBrowserGlobalsRegExp, +]; + +export const safeSymbolName = (name: string): string => { + let sanitized = ''; + let index: number; + + const first = name[0]!; + illegalStartCharactersRegExp.lastIndex = 0; + if (illegalStartCharactersRegExp.test(first)) { + sanitized += '_'; + index = 0; + } else { + sanitized += first; + index = 1; + } + + while (index < name.length) { + const char = name[index]!; + sanitized += /^[\u200c\u200d\p{ID_Continue}]$/u.test(char) ? char : '_'; + index += 1; + } + + for (const regexp of regexps) { + sanitized = sanitized.replace(regexp, '_$1'); + } + + return sanitized || '_'; +}; diff --git a/packages/openapi-ts/src/ts-dsl/utils/prop.ts b/packages/openapi-ts/src/ts-dsl/utils/prop.ts deleted file mode 100644 index 309f0a179..000000000 --- a/packages/openapi-ts/src/ts-dsl/utils/prop.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type ts from 'typescript'; - -import { numberRegExp, validTypescriptIdentifierRegExp } from '~/utils/regexp'; - -import type { TsDsl } from '../base'; -import { IdTsDsl } from '../expr/id'; -import { LiteralTsDsl } from '../expr/literal'; - -export const safeMemberName = (name: string): TsDsl => { - validTypescriptIdentifierRegExp.lastIndex = 0; - if (validTypescriptIdentifierRegExp.test(name)) { - return new IdTsDsl(name); - } - return new LiteralTsDsl(name) as TsDsl; -}; - -export const safePropName = (name: string): TsDsl => { - numberRegExp.lastIndex = 0; - if (numberRegExp.test(name)) { - return name.startsWith('-') - ? (new LiteralTsDsl(name) as TsDsl) - : (new LiteralTsDsl(Number(name)) as TsDsl); - } - - validTypescriptIdentifierRegExp.lastIndex = 0; - if (validTypescriptIdentifierRegExp.test(name)) { - return new IdTsDsl(name); - } - - return new LiteralTsDsl(name) as TsDsl; -}; diff --git a/packages/openapi-ts/src/utils/regexp.ts b/packages/openapi-ts/src/ts-dsl/utils/regexp.ts similarity index 100% rename from packages/openapi-ts/src/utils/regexp.ts rename to packages/openapi-ts/src/ts-dsl/utils/regexp.ts diff --git a/packages/openapi-ts/src/types/output.d.ts b/packages/openapi-ts/src/types/output.d.ts index 1fe2d6fd9..ee03a8f9d 100644 --- a/packages/openapi-ts/src/types/output.d.ts +++ b/packages/openapi-ts/src/types/output.d.ts @@ -93,6 +93,19 @@ export type UserOutput = { * The absolute path to the output folder. */ path: string; + /** + * Whether `export * from 'module'` should be used when possible + * instead of named exports. + * + * @default false + */ + preferExportAll?: boolean; + /** + * Optional function to transform module specifiers. + * + * @default undefined + */ + resolveModuleName?: (moduleName: string) => string | undefined; /** * Relative or absolute path to the tsconfig file we should use to * generate the output. If a path to tsconfig file is not provided, we @@ -108,17 +121,13 @@ export type Output = { /** * Defines casing of the output fields. By default, we preserve `input` * values as data transforms incur a performance penalty at runtime. - * - * @default undefined */ - case?: StringCase; + case: StringCase | undefined; /** * Clean the `output` folder on every run? If disabled, this folder may * be used to store additional files. The default option is `true` to * reduce the risk of keeping outdated files around when configuration, * input, or package version changes. - * - * @default true */ clean: boolean; /** @@ -130,21 +139,16 @@ export type Output = { fileName: { /** * The casing convention to use for generated file names. - * - * @default 'preserve' */ case: StringCase; /** * Custom naming pattern for generated file names. - * - * @default '{{name}}' */ name: StringName; /** * Suffix to append to file names (before the extension). For example, * with a suffix of `.gen`, `example.ts` becomes `example.gen.ts`. * - * @default '.gen' * @example * // Given a suffix of `.gen` * 'index.ts' -> 'index.ts' (index files are not renamed) @@ -155,8 +159,6 @@ export type Output = { }; /** * Which formatter to use to process output folder? - * - * @default null */ format: Formatters | null; /** @@ -164,28 +166,31 @@ export type Output = { * other modules. By default, we don't add a file extension and let the * runtime resolve it. If you're using moduleResolution `nodenext`, we * default to `.js`. - * - * @default undefined */ importFileExtension: ImportFileExtensions | (string & {}) | null | undefined; /** * Should the exports from plugin files be re-exported in the index * barrel file? By default, this is enabled and only default plugins * are re-exported. - * - * @default true */ indexFile: boolean; /** * Which linter to use to process output folder? - * - * @default null */ lint: Linters | null; /** * The absolute path to the output folder. */ path: string; + /** + * Whether `export * from 'module'` should be used when possible + * instead of named exports. + */ + preferExportAll: boolean; + /** + * Optional function to transform module specifiers. + */ + resolveModuleName: ((moduleName: string) => string | undefined) | undefined; /** * The parsed TypeScript configuration used to generate the output. * If no `tsconfig` file path was provided or found, this will be `null`. @@ -196,8 +201,6 @@ export type Output = { * generate the output. If a path to tsconfig file is not provided, we * attempt to find one starting from the location of the * `@hey-api/openapi-ts` configuration file and traversing up. - * - * @default undefined */ tsConfigPath: (string & {}) | null | undefined; }; diff --git a/packages/openapi-ts/src/utils/__tests__/escape.test.ts b/packages/openapi-ts/src/utils/__tests__/escape.test.ts deleted file mode 100644 index c4cf9584a..000000000 --- a/packages/openapi-ts/src/utils/__tests__/escape.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import { escapeName, unescapeName } from '../escape'; - -const toCheck: { escaped: string; unescaped: string }[] = [ - { escaped: "''", unescaped: '' }, - { escaped: 'fooBar', unescaped: 'fooBar' }, - { escaped: `'Foo Bar'`, unescaped: 'Foo Bar' }, - { escaped: `'foo bar'`, unescaped: 'foo bar' }, - { escaped: `'foo-bar'`, unescaped: 'foo-bar' }, - { escaped: `'foo.bar'`, unescaped: 'foo.bar' }, - { escaped: 'foo_bar', unescaped: 'foo_bar' }, - { escaped: `'123foo.bar'`, unescaped: '123foo.bar' }, - { escaped: `'@foo.bar'`, unescaped: '@foo.bar' }, - { escaped: `'$foo.bar'`, unescaped: '$foo.bar' }, - { escaped: `'_foo.bar'`, unescaped: '_foo.bar' }, - { escaped: `'123foobar'`, unescaped: '123foobar' }, - { escaped: `'@foobar'`, unescaped: '@foobar' }, - { escaped: '$foobar', unescaped: '$foobar' }, - { escaped: '_foobar', unescaped: '_foobar' }, -]; - -describe('escapeName', () => { - it.each(toCheck)( - 'should escape $unescaped to $escaped', - ({ escaped, unescaped }) => { - expect(escapeName(unescaped)).toBe(escaped); - }, - ); -}); - -describe('unescapeName', () => { - it.each(toCheck)( - 'should unescape $escaped to $unescaped', - ({ escaped, unescaped }) => { - expect(unescapeName(escaped)).toBe(unescaped); - }, - ); -}); diff --git a/packages/openapi-ts/src/utils/escape.ts b/packages/openapi-ts/src/utils/escape.ts index cf0aa9392..a5c668bb7 100644 --- a/packages/openapi-ts/src/utils/escape.ts +++ b/packages/openapi-ts/src/utils/escape.ts @@ -1,25 +1,5 @@ import { EOL } from 'node:os'; -import { validTypescriptIdentifierRegExp } from './regexp'; - -export const escapeName = (value: string): string => { - if (value || value === '') { - validTypescriptIdentifierRegExp.lastIndex = 0; - const validName = validTypescriptIdentifierRegExp.test(value); - if (!validName) { - return `'${value}'`; - } - } - return value; -}; - -export const unescapeName = (value: string): string => { - if (value && value.startsWith("'") && value.endsWith("'")) { - return value.slice(1, value.length - 1); - } - return value; -}; - export const escapeComment = (value: string) => value .replace(/\*\//g, '*') From 7ea9c19be46b2024c6e4f3acf9d9802d00166ec1 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 00:21:35 +0800 Subject: [PATCH 07/15] chore: pretty blocks --- .../default-class/@angular/common.gen.ts | 866 +++++++---- .../common/default/@angular/common.gen.ts | 170 +- .../sdk-nested-classes-instance/sdk.gen.ts | 33 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 37 +- .../type-format-valibot/transformers.gen.ts | 5 +- .../type-format-zod/transformers.gen.ts | 5 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 416 +++-- .../angular-query-experimental.gen.ts | 110 +- .../asClass/sdk.gen.ts | 24 +- .../angular-query-experimental.gen.ts | 606 +++++--- .../angular-query-experimental.gen.ts | 606 +++++--- .../angular-query-experimental.gen.ts | 110 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/react-query.gen.ts | 606 +++++--- .../fetch/@tanstack/react-query.gen.ts | 606 +++++--- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/solid-query.gen.ts | 606 +++++--- .../fetch/@tanstack/solid-query.gen.ts | 606 +++++--- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/svelte-query.gen.ts | 606 +++++--- .../fetch/@tanstack/svelte-query.gen.ts | 606 +++++--- .../@tanstack/svelte-query.gen.ts | 110 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/vue-query.gen.ts | 606 +++++--- .../fetch/@tanstack/vue-query.gen.ts | 606 +++++--- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/react-query.gen.ts | 55 +- .../default-class/@angular/common.gen.ts | 1186 +++++++++----- .../common/default/@angular/common.gen.ts | 240 ++- .../sdk-nested-classes-instance/sdk.gen.ts | 33 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 37 +- .../type-format-valibot/transformers.gen.ts | 5 +- .../type-format-zod/transformers.gen.ts | 5 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 598 ++++--- .../angular-query-experimental.gen.ts | 110 +- .../asClass/sdk.gen.ts | 24 +- .../angular-query-experimental.gen.ts | 871 +++++++---- .../angular-query-experimental.gen.ts | 871 +++++++---- .../angular-query-experimental.gen.ts | 110 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/react-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/react-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/solid-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/solid-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/svelte-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/svelte-query.gen.ts | 871 +++++++---- .../@tanstack/svelte-query.gen.ts | 110 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/vue-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/vue-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../transformers-all-of/transformers.gen.ts | 14 +- .../transformers-array/transformers.gen.ts | 8 +- .../@tanstack/react-query.gen.ts | 55 +- .../@tanstack/react-query.gen.ts | 35 +- .../default-class/@angular/common.gen.ts | 1186 +++++++++----- .../common/default/@angular/common.gen.ts | 240 ++- .../sdk-nested-classes-instance/sdk.gen.ts | 33 +- .../sdk-nested-classes/sdk.gen.ts | 20 +- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 37 +- .../type-format-valibot/transformers.gen.ts | 5 +- .../type-format-zod/transformers.gen.ts | 5 +- .../colada/asClass/@pinia/colada.gen.ts | 78 +- .../plugins/@pinia/colada/asClass/sdk.gen.ts | 24 +- .../@pinia/colada/fetch/@pinia/colada.gen.ts | 598 ++++--- .../angular-query-experimental.gen.ts | 110 +- .../asClass/sdk.gen.ts | 24 +- .../angular-query-experimental.gen.ts | 871 +++++++---- .../angular-query-experimental.gen.ts | 871 +++++++---- .../angular-query-experimental.gen.ts | 110 +- .../asClass/@tanstack/react-query.gen.ts | 110 +- .../@tanstack/react-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/react-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/react-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/react-query.gen.ts | 110 +- .../asClass/@tanstack/solid-query.gen.ts | 110 +- .../@tanstack/solid-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/solid-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/solid-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/solid-query.gen.ts | 110 +- .../asClass/@tanstack/svelte-query.gen.ts | 110 +- .../@tanstack/svelte-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/svelte-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/svelte-query.gen.ts | 871 +++++++---- .../@tanstack/svelte-query.gen.ts | 110 +- .../asClass/@tanstack/vue-query.gen.ts | 110 +- .../@tanstack/vue-query/asClass/sdk.gen.ts | 24 +- .../axios/@tanstack/vue-query.gen.ts | 871 +++++++---- .../fetch/@tanstack/vue-query.gen.ts | 871 +++++++---- .../name-builder/@tanstack/vue-query.gen.ts | 110 +- .../transformers-all-of/transformers.gen.ts | 14 +- .../transformers.gen.ts | 11 +- .../transformers-array/transformers.gen.ts | 8 +- .../angular-query-experimental.gen.ts | 30 +- .../meta/@tanstack/react-query.gen.ts | 30 +- .../meta/@tanstack/solid-query.gen.ts | 30 +- .../meta/@tanstack/svelte-query.gen.ts | 30 +- .../@tanstack/meta/@tanstack/vue-query.gen.ts | 30 +- .../method-class-conflict/class/sdk.gen.ts | 1384 ++++++++++------- .../method-class-conflict/instance/sdk.gen.ts | 1199 ++++++++------ .../__snapshots__/opencode/flat/sdk.gen.ts | 546 ++++--- .../2.0.x/mini/default/zod.gen.ts | 4 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/mini/circular/zod.gen.ts | 16 +- .../3.0.x/mini/default/zod.gen.ts | 4 +- .../3.0.x/mini/validators/zod.gen.ts | 8 +- .../3.0.x/v4/circular/zod.gen.ts | 16 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/v4/validators/zod.gen.ts | 8 +- .../3.1.x/mini/default/zod.gen.ts | 4 +- .../mini/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 8 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/mini/validators-types/zod.gen.ts | 8 +- .../3.1.x/mini/validators/zod.gen.ts | 8 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 4 +- .../v4/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 8 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/v4/validators-types/zod.gen.ts | 8 +- .../3.1.x/v4/validators/zod.gen.ts | 8 +- .../2.0.x/mini/default/zod.gen.ts | 4 +- .../__snapshots__/2.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/mini/circular/zod.gen.ts | 16 +- .../3.0.x/mini/default/zod.gen.ts | 4 +- .../3.0.x/mini/validators/zod.gen.ts | 8 +- .../3.0.x/v4/circular/zod.gen.ts | 16 +- .../__snapshots__/3.0.x/v4/default/zod.gen.ts | 4 +- .../3.0.x/v4/validators/zod.gen.ts | 8 +- .../3.1.x/mini/default/zod.gen.ts | 4 +- .../mini/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/mini/validators-dates/zod.gen.ts | 8 +- .../3.1.x/mini/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/mini/validators-types/zod.gen.ts | 8 +- .../3.1.x/mini/validators/zod.gen.ts | 8 +- .../__snapshots__/3.1.x/v4/default/zod.gen.ts | 4 +- .../v4/validators-circular-ref/zod.gen.ts | 4 +- .../3.1.x/v4/validators-dates/zod.gen.ts | 8 +- .../3.1.x/v4/validators-metadata/zod.gen.ts | 12 +- .../3.1.x/v4/validators-types/zod.gen.ts | 8 +- .../3.1.x/v4/validators/zod.gen.ts | 8 +- packages/openapi-ts/src/ts-dsl/decl/func.ts | 2 +- packages/openapi-ts/src/ts-dsl/decl/getter.ts | 2 +- packages/openapi-ts/src/ts-dsl/decl/init.ts | 2 +- packages/openapi-ts/src/ts-dsl/decl/method.ts | 2 +- packages/openapi-ts/src/ts-dsl/decl/setter.ts | 2 +- packages/openapi-ts/src/ts-dsl/expr/typeof.ts | 4 +- .../openapi-ts/src/ts-dsl/mixins/layout.ts | 1 + .../openapi-ts/src/ts-dsl/mixins/type-expr.ts | 30 +- packages/openapi-ts/src/ts-dsl/stmt/if.ts | 6 +- packages/openapi-ts/src/ts-dsl/stmt/try.ts | 8 +- packages/openapi-ts/src/ts-dsl/type/expr.ts | 7 +- packages/openapi-ts/src/ts-dsl/type/idx.ts | 7 +- .../openapi-ts/src/ts-dsl/type/operator.ts | 6 +- packages/openapi-ts/src/ts-dsl/type/query.ts | 7 +- 175 files changed, 23564 insertions(+), 13551 deletions(-) diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts index 7f69870ff..8d12fcbb0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,454 +9,720 @@ import type { CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public serviceWithEmptyTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); } + public serviceWithEmptyTag(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public fooWow(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); + } /** * Body should not be unknown * * Body should not be unknown */ - public postApiVbyApiVersionBody(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/body', - ...options - }); } + public postApiVbyApiVersionBody(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/body', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions/', - ...options - }); } + public callWithDescriptions(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions/', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); } - - public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); } + public callWithParameters(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); + } + + public callWithWeirdParameterNames(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); } + public callWithDefaultParameters(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callToTestOrderOfParams(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); } + public duplicateName(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName2(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName3(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName4(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } + public callWithNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); + } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } - - public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } + + public callWithResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithDuplicateResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); } + public collectionFormat(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); } + public types(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); } + public complexTypes(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); } + public callWithResultFromHeader(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); } + public testErrorCode(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public serviceWithEmptyTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).serviceWithEmptyTag(opts) : undefined; }); } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } - - public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } + public serviceWithEmptyTag(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).serviceWithEmptyTag(opts) : undefined; + }); + } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; + }); + } + + public fooWow(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; + }); + } /** * Body should not be unknown * * Body should not be unknown */ - public postApiVbyApiVersionBody(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).postApiVbyApiVersionBody(opts) : undefined; }); } + public postApiVbyApiVersionBody(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).postApiVbyApiVersionBody(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } + public callWithDescriptions(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } + public callWithParameters(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; + }); + } - public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } + public callWithWeirdParameterNames(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } + public callWithDefaultParameters(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; + }); + } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; + }); + } - public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } + public callToTestOrderOfParams(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } - - public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } - - public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } - - public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } + public duplicateName(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; + }); + } + + public duplicateName2(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; + }); + } + + public duplicateName3(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; + }); + } + + public duplicateName4(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } + public callWithNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; + }); + } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } - - public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } - - public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } - - public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } + + public callWithResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; + }); + } + + public callWithDuplicateResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; + }); + } + + public callWithResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } + public collectionFormat(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } + public types(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(TypesServiceRequests).types(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } + public complexTypes(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } + public callWithResultFromHeader(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } + public testErrorCode(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; + }); + } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts index 4972827ea..51d36d352 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -249,75 +249,177 @@ export const postApiVbyApiVersionBodyRequest = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? serviceWithEmptyTagRequest(opts) : undefined; }); +export const serviceWithEmptyTagResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? serviceWithEmptyTagRequest(opts) : undefined; +}); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; +}); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? fooWowRequest(opts) : undefined; +}); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDescriptionsRequest(opts) : undefined; +}); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithParametersRequest(opts) : undefined; +}); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; +}); -export const callWithDefaultParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); +export const callWithDefaultParametersResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultParametersRequest(opts) : undefined; +}); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; +}); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callToTestOrderOfParamsRequest(opts) : undefined; +}); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateNameRequest(opts) : undefined; +}); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName2Request(opts) : undefined; +}); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName3Request(opts) : undefined; +}); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName4Request(opts) : undefined; +}); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithNoContentResponseRequest(opts) : undefined; +}); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; +}); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyARequest(opts) : undefined; +}); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyBRequest(opts) : undefined; +}); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseRequest(opts) : undefined; +}); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDuplicateResponsesRequest(opts) : undefined; +}); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponsesRequest(opts) : undefined; +}); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? collectionFormatRequest(opts) : undefined; +}); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? typesRequest(opts) : undefined; +}); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? complexTypesRequest(opts) : undefined; +}); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResultFromHeaderRequest(opts) : undefined; +}); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? testErrorCodeRequest(opts) : undefined; +}); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; +}); /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionBodyRequest(opts) : undefined; }); +export const postApiVbyApiVersionBodyResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postApiVbyApiVersionBodyRequest(opts) : undefined; +}); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 88a1b02c6..effd73175 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,13 +23,19 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Domains extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); + } - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); + } } export class Providers extends HeyApiClient { @@ -37,7 +43,9 @@ export class Providers extends HeyApiClient { } export class Business extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); + } providers = new Providers({ client: this.client }); } @@ -55,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class NestedSdkWithInstance extends HeyApiClient { @@ -64,11 +74,18 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } + }) { + super(args); + NestedSdkWithInstance.__registry.set(this, args?.key); + } - public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } + public putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); + } - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations', ...options }); + } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index bc2324ac0..8c055a5e4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,11 +19,17 @@ export type Options(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); + } - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); + } - public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } + public static putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); + } } export class Providers { @@ -31,13 +37,17 @@ export class Providers { } export class Business { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); + } static providers = Providers; } export class Locations { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations', ...options }); + } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 5196fa3c5..966bfdf87 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,19 +23,29 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Bar extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); + } } export class Foo extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo', ...options }); + } bar = new Bar({ client: this.client }); } @@ -53,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class Sdk extends HeyApiClient { @@ -62,11 +74,18 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); Sdk.__registry.set(this, args?.key); } + }) { + super(args); + Sdk.__registry.set(this, args?.key); + } - public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } + public getFoo(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo', ...options }); + } - public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } + public getFooBar(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); + } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index 26abe5f67..3aeed5221 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,52 +46,70 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 800a25863..14aff2882 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,284 +46,377 @@ export const serviceWithEmptyTagQueryKey = (options?: Options) => ({ key: serviceWithEmptyTagQueryKey(options), - query: async (context) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await fooWow({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDescriptions({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName3({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName4({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithResultFromHeader({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await testErrorCode({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); /** @@ -332,9 +425,12 @@ export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial< * Body should not be unknown */ export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, PostApiVbyApiVersionBodyError> => ({ - mutation: async (vars) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 058ef89f1..6f71bcc40 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index a634fcc90..cef8fd363 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,308 +43,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 32339876d..5087360ef 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,308 +42,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index 6d7c758df..b144ed7a2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 077353a6c..74f3f999f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index a49776312..da398d170 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,308 +43,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index 3a6c7b8c9..ef023fe2c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,308 +42,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 52077bd6b..43c90277c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 3be7126b7..908344e1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index fd8e94352..7a51e436a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,308 +43,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index 5737b3c02..c4092a30b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,308 +42,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index 6e56543cd..ba1febdda 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 8a3f1dff8..4f7ad47a7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index fb5aa3181..8900d4a58 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,308 +43,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index 4253cdefe..e14c0d70c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,308 +42,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 9b44f31cf..6a831b5b3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 1d7442c84..767635c77 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index 5d2f30b60..5a5ce3b11 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,308 +43,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index ce7280a3d..b545d1817 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,308 +42,464 @@ const createQueryKey = (id: string, options?: TOptions export const serviceWithEmptyTagQueryKey = (options?: Options) => createQueryKey('serviceWithEmptyTag', options); export const serviceWithEmptyTagOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await serviceWithEmptyTag({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await serviceWithEmptyTag({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: serviceWithEmptyTagQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Body should not be unknown * * Body should not be unknown */ -export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postApiVbyApiVersionBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index 6ed25f5f3..bfd35f1d6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts index 1cc839174..c7e01dadf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/@tanstack/react-query.gen.ts @@ -42,27 +42,42 @@ const createQueryKey = (id: string, options?: TOptions export const createQueryKey2 = (options?: Options) => createQueryKey('create', options); export const createOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await create({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await create({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: createQueryKey2(options) }); -export const create2Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await create2({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const create2Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await create2({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const create3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await create3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const create3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await create3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts index feeaafc50..2cb208158 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,49 +9,61 @@ import type { ApiVVersionODataControllerCountData, ApiVVersionODataControllerCou @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public export(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public import(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple:operation', - ...options - }); } + public export(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public import(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public fooWow(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple:operation', + ...options + }); + } } export class ODataControllerServiceRequests { - public apiVVersionODataControllerCount(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple/$count', - ...options - }); } + public apiVVersionODataControllerCount(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple/$count', + ...options + }); + } } export class VVersionServiceRequests { @@ -64,103 +76,129 @@ export class ApiServiceRequests { @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); + } apiService = new ApiServiceRequests(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public deleteFoo(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', - ...options - }); } - - public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); } - - public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); } - - public getCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/parameters', - ...options - }); } - - public postCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters', - ...options - }); } + public deleteFoo(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', + ...options + }); + } + + public callWithParameters(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); + } + + public callWithWeirdParameterNames(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); + } + + public getCallWithOptionalParam(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/parameters', + ...options + }); + } + + public postCallWithOptionalParam(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions', - ...options - }); } + public callWithDescriptions(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions', + ...options + }); + } } @Injectable({ providedIn: 'root' }) @@ -168,310 +206,406 @@ export class DeprecatedServiceRequests { /** * @deprecated */ - public deprecatedCall(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/deprecated', - ...options - }); } + public deprecatedCall(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/deprecated', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceRequests { - public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/requestBody', - ...options - }); } + public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/requestBody', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class FormDataServiceRequests { - public postApiVbyApiVersionFormData(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/formData', - ...options - }); } + public postApiVbyApiVersionFormData(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/formData', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); } + public callWithDefaultParameters(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callToTestOrderOfParams(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); } + public duplicateName(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName2(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName3(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName4(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } + public callWithNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); + } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } - - public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } + + public callWithResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithDuplicateResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); } + public collectionFormat(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); } + public types(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class UploadServiceRequests { - public uploadFile(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/upload', - ...options - }); } + public uploadFile(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/upload', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceRequests { - public fileResponse(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/file/{id}', - ...options - }); } + public fileResponse(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/file/{id}', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); } - - public complexParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/complex/{id}', - ...options - }); } + public complexTypes(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); + } + + public complexParams(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/complex/{id}', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipartServiceRequests { - public multipartResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multipart', - ...options - }); } - - public multipartRequest(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/multipart', - ...options - }); } + public multipartResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multipart', + ...options + }); + } + + public multipartRequest(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/multipart', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); } + public callWithResultFromHeader(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); } + public testErrorCode(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); + } /** * Login User */ - public putWithFormUrlEncoded(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); } + public putWithFormUrlEncoded(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public export(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).export(opts) : undefined; }); } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } - - public import(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).import(opts) : undefined; }); } - - public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } - - public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; }); } + public export(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).export(opts) : undefined; + }); + } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; + }); + } + + public import(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).import(opts) : undefined; + }); + } + + public fooWow(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; + }); + } + + public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; + }); + } } export class ODataControllerServiceResources { - public apiVVersionODataControllerCount(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; }); } + public apiVVersionODataControllerCount(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; + }); + } } export class VVersionServiceResources { @@ -484,38 +618,103 @@ export class ApiServiceResources { @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; + }); + } apiService = new ApiServiceResources(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public deleteFoo(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; }); } - - public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } - - public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } - - public getCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; }); } - - public postCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; }); } + public deleteFoo(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; + }); + } + + public callWithParameters(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; + }); + } + + public callWithWeirdParameterNames(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; + }); + } + + public getCallWithOptionalParam(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; + }); + } + + public postCallWithOptionalParam(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } + public callWithDescriptions(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) @@ -523,126 +722,291 @@ export class DeprecatedServiceResources { /** * @deprecated */ - public deprecatedCall(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; }); } + public deprecatedCall(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceResources { - public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; }); } + public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class FormDataServiceResources { - public postApiVbyApiVersionFormData(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; }); } + public postApiVbyApiVersionFormData(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } + public callWithDefaultParameters(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; + }); + } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; + }); + } - public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } + public callToTestOrderOfParams(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } - - public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } - - public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } - - public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } + public duplicateName(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; + }); + } + + public duplicateName2(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; + }); + } + + public duplicateName3(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; + }); + } + + public duplicateName4(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } + public callWithNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; + }); + } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } - - public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } - - public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } - - public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } + + public callWithResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; + }); + } + + public callWithDuplicateResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; + }); + } + + public callWithResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } + public collectionFormat(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } + public types(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(TypesServiceRequests).types(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class UploadServiceResources { - public uploadFile(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; }); } + public uploadFile(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceResources { - public fileResponse(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; }); } + public fileResponse(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } + public complexTypes(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; + }); + } - public complexParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; }); } + public complexParams(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipartServiceResources { - public multipartResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; }); } + public multipartResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; + }); + } - public multipartRequest(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; }); } + public multipartRequest(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } + public callWithResultFromHeader(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } + public testErrorCode(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; + }); + } /** * Login User */ - public putWithFormUrlEncoded(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; }); } + public putWithFormUrlEncoded(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; + }); + } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts index 2aeb7aacc..474d7c8c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -348,104 +348,248 @@ export const putWithFormUrlEncodedRequest = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? exportRequest(opts) : undefined; }); +export const exportResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? exportRequest(opts) : undefined; +}); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; +}); -export const importResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? importRequest(opts) : undefined; }); +export const importResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? importRequest(opts) : undefined; +}); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? fooWowRequest(opts) : undefined; +}); -export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; }); +export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; +}); -export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; }); +export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; +}); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteFooRequest(opts) : undefined; }); +export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deleteFooRequest(opts) : undefined; +}); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDescriptionsRequest(opts) : undefined; +}); /** * @deprecated */ -export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deprecatedCallRequest(opts) : undefined; }); +export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deprecatedCallRequest(opts) : undefined; +}); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithParametersRequest(opts) : undefined; +}); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; +}); -export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithOptionalParamRequest(opts) : undefined; }); +export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getCallWithOptionalParamRequest(opts) : undefined; +}); -export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithOptionalParamRequest(opts) : undefined; }); +export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postCallWithOptionalParamRequest(opts) : undefined; +}); -export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; }); +export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; +}); -export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; }); +export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; +}); -export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); +export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultParametersRequest(opts) : undefined; +}); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; +}); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callToTestOrderOfParamsRequest(opts) : undefined; +}); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateNameRequest(opts) : undefined; +}); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName2Request(opts) : undefined; +}); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName3Request(opts) : undefined; +}); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName4Request(opts) : undefined; +}); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithNoContentResponseRequest(opts) : undefined; +}); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; +}); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyARequest(opts) : undefined; +}); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyBRequest(opts) : undefined; +}); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseRequest(opts) : undefined; +}); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDuplicateResponsesRequest(opts) : undefined; +}); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponsesRequest(opts) : undefined; +}); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? collectionFormatRequest(opts) : undefined; +}); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? typesRequest(opts) : undefined; +}); -export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? uploadFileRequest(opts) : undefined; }); +export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? uploadFileRequest(opts) : undefined; +}); -export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fileResponseRequest(opts) : undefined; }); +export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? fileResponseRequest(opts) : undefined; +}); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? complexTypesRequest(opts) : undefined; +}); -export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartResponseRequest(opts) : undefined; }); +export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? multipartResponseRequest(opts) : undefined; +}); -export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartRequestRequest(opts) : undefined; }); +export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? multipartRequestRequest(opts) : undefined; +}); -export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexParamsRequest(opts) : undefined; }); +export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? complexParamsRequest(opts) : undefined; +}); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResultFromHeaderRequest(opts) : undefined; +}); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? testErrorCodeRequest(opts) : undefined; +}); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; +}); /** * Login User */ -export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putWithFormUrlEncodedRequest(opts) : undefined; }); +export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? putWithFormUrlEncodedRequest(opts) : undefined; +}); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 88a1b02c6..effd73175 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,13 +23,19 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Domains extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); + } - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); + } } export class Providers extends HeyApiClient { @@ -37,7 +43,9 @@ export class Providers extends HeyApiClient { } export class Business extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); + } providers = new Providers({ client: this.client }); } @@ -55,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class NestedSdkWithInstance extends HeyApiClient { @@ -64,11 +74,18 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } + }) { + super(args); + NestedSdkWithInstance.__registry.set(this, args?.key); + } - public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } + public putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); + } - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations', ...options }); + } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index bc2324ac0..8c055a5e4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,11 +19,17 @@ export type Options(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); + } - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); + } - public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } + public static putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); + } } export class Providers { @@ -31,13 +37,17 @@ export class Providers { } export class Business { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); + } static providers = Providers; } export class Locations { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations', ...options }); + } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 5196fa3c5..966bfdf87 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,19 +23,29 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Bar extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); + } } export class Foo extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo', ...options }); + } bar = new Bar({ client: this.client }); } @@ -53,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class Sdk extends HeyApiClient { @@ -62,11 +74,18 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); Sdk.__registry.set(this, args?.key); } + }) { + super(args); + Sdk.__registry.set(this, args?.key); + } - public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } + public getFoo(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo', ...options }); + } - public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } + public getFooBar(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); + } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index 26abe5f67..3aeed5221 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,52 +46,70 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 1aef078ed..81651e8f9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,423 +46,561 @@ export const exportQueryKey = (options?: Options) => createQueryKey( export const exportQuery = defineQueryOptions((options?: Options) => ({ key: exportQueryKey(options), - query: async (context) => { const { data } = await export_({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await export_({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const importMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await import_({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await import_({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await fooWow({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountQuery = defineQueryOptions((options?: Options) => ({ key: apiVVersionODataControllerCountQueryKey(options), - query: async (context) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationQuery = defineQueryOptions((options: Options) => ({ key: getApiVbyApiVersionSimpleOperationQueryKey(options), - query: async (context) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deleteFoo({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deleteFoo({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDescriptions({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); /** * @deprecated */ export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deprecatedCall({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deprecatedCall({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamQuery = defineQueryOptions((options: Options) => ({ key: getCallWithOptionalParamQueryKey(options), - query: async (context) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options?: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName3({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName4({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await uploadFile({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await uploadFile({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseQuery = defineQueryOptions((options: Options) => ({ key: fileResponseQueryKey(options), - query: async (context) => { const { data } = await fileResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await fileResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseQuery = defineQueryOptions((options?: Options) => ({ key: multipartResponseQueryKey(options), - query: async (context) => { const { data } = await multipartResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await multipartResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await multipartRequest({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await multipartRequest({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await complexParams({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await complexParams({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithResultFromHeader({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await testErrorCode({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); /** * Login User */ export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 058ef89f1..6f71bcc40 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index d577b3aff..5b07cde6a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 41213b036..6cc80fb17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index 6d7c758df..b144ed7a2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 077353a6c..74f3f999f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index 8f9f18754..38403265b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index d5b97ba94..378082bd0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 52077bd6b..43c90277c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 3be7126b7..908344e1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index 4a5b4971c..203534a86 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index 548d90159..358caac28 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index 6e56543cd..ba1febdda 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 8a3f1dff8..4f7ad47a7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index a66a84de1..9e78e66d2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index 346c579b6..7e81c3731 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 9b44f31cf..6a831b5b3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 1d7442c84..767635c77 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index 0d2884d1b..f839621a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index b68fd8934..bbcab4d5a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index 6ed25f5f3..bfd35f1d6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts index d535c1ec3..9c53d7569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts @@ -1,7 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts -const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { - data.baz = new Date(data.baz); -} return data; }; +const quxSchemaResponseTransformer = (data: any) => { + if (data.baz) { + data.baz = new Date(data.baz); + } + return data; +}; -const bazSchemaResponseTransformer = (data: any) => { data.bar = new Date(data.bar); return data; }; +const bazSchemaResponseTransformer = (data: any) => { + data.bar = new Date(data.bar); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts index 55875bf9f..fc50ee927 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/transformers.gen.ts @@ -2,4 +2,10 @@ import type { GetFooResponse } from './types.gen'; -export const getFooResponseTransformer = async (data: any): Promise => { data.foo = data.foo.map((item: any) => { item.baz = new Date(item.baz); return item; }); return data; }; +export const getFooResponseTransformer = async (data: any): Promise => { + data.foo = data.foo.map((item: any) => { + item.baz = new Date(item.baz); + return item; + }); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts index 1cc839174..c7e01dadf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/@tanstack/react-query.gen.ts @@ -42,27 +42,42 @@ const createQueryKey = (id: string, options?: TOptions export const createQueryKey2 = (options?: Options) => createQueryKey('create', options); export const createOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await create({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await create({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: createQueryKey2(options) }); -export const create2Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await create2({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const create2Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await create2({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const create3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await create3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const create3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await create3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts index aa0761eb1..b9e75835b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/@tanstack/react-query.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); @@ -104,10 +107,16 @@ export const getFooInfiniteOptions = (options: Options) => infiniteQ queryKey: getFooInfiniteQueryKey(options) }); -export const postFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postFooMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts index feeaafc50..2cb208158 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/@angular/common.gen.ts @@ -9,49 +9,61 @@ import type { ApiVVersionODataControllerCountData, ApiVVersionODataControllerCou @Injectable({ providedIn: 'root' }) export class DefaultServiceRequests { - public export(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public import(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public fooWow(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/no+tag', - ...options - }); } - - public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple:operation', - ...options - }); } + public export(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public patchApiVbyApiVersionNoTag(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public import(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public fooWow(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/no+tag', + ...options + }); + } + + public getApiVbyApiVersionSimpleOperation(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple:operation', + ...options + }); + } } export class ODataControllerServiceRequests { - public apiVVersionODataControllerCount(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple/$count', - ...options - }); } + public apiVVersionODataControllerCount(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple/$count', + ...options + }); + } } export class VVersionServiceRequests { @@ -64,103 +76,129 @@ export class ApiServiceRequests { @Injectable({ providedIn: 'root' }) export class SimpleServiceRequests { - public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/simple', - ...options - }); } - - public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/simple', - ...options - }); } - - public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'HEAD', - url: '/api/v{api-version}/simple', - ...options - }); } - - public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'OPTIONS', - url: '/api/v{api-version}/simple', - ...options - }); } - - public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PATCH', - url: '/api/v{api-version}/simple', - ...options - }); } - - public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/simple', - ...options - }); } - - public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/simple', - ...options - }); } + public deleteCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public getCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public headCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'HEAD', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public optionsCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'OPTIONS', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public patchCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PATCH', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public postCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/simple', + ...options + }); + } + + public putCallWithoutParametersAndResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/simple', + ...options + }); + } apiService = new ApiServiceRequests(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceRequests { - public deleteFoo(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', - ...options - }); } - - public callWithParameters(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameterPath}', - ...options - }); } - - public callWithWeirdParameterNames(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', - ...options - }); } - - public getCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/parameters', - ...options - }); } - - public postCallWithOptionalParam(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters', - ...options - }); } + public deleteFoo(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}', + ...options + }); + } + + public callWithParameters(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameterPath}', + ...options + }); + } + + public callWithWeirdParameterNames(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}', + ...options + }); + } + + public getCallWithOptionalParam(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/parameters', + ...options + }); + } + + public postCallWithOptionalParam(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceRequests { - public callWithDescriptions(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/descriptions', - ...options - }); } + public callWithDescriptions(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/descriptions', + ...options + }); + } } @Injectable({ providedIn: 'root' }) @@ -168,310 +206,406 @@ export class DeprecatedServiceRequests { /** * @deprecated */ - public deprecatedCall(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/parameters/deprecated', - ...options - }); } + public deprecatedCall(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/parameters/deprecated', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceRequests { - public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/requestBody', - ...options - }); } + public postApiVbyApiVersionRequestBody(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/requestBody', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class FormDataServiceRequests { - public postApiVbyApiVersionFormData(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/formData', - ...options - }); } + public postApiVbyApiVersionFormData(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/formData', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceRequests { - public callWithDefaultParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callWithDefaultOptionalParameters(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/defaults', - ...options - }); } - - public callToTestOrderOfParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/defaults', - ...options - }); } + public callWithDefaultParameters(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callWithDefaultOptionalParameters(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/defaults', + ...options + }); + } + + public callToTestOrderOfParams(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/defaults', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceRequests { - public duplicateName(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'DELETE', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName2(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName3(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/duplicate', - ...options - }); } - - public duplicateName4(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/duplicate', - ...options - }); } + public duplicateName(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'DELETE', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName2(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName3(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/duplicate', + ...options + }); + } + + public duplicateName4(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/duplicate', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceRequests { - public callWithNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/no-content', - ...options - }); } - - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } + public callWithNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/no-content', + ...options + }); + } + + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceRequests { - public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/response-and-no-content', - ...options - }); } - - public callWithResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithDuplicateResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/response', - ...options - }); } - - public callWithResponses(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/response', - ...options - }); } + public callWithResponseAndNoContentResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/response-and-no-content', + ...options + }); + } + + public callWithResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithDuplicateResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/response', + ...options + }); + } + + public callWithResponses(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/response', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceRequests { - public dummyA(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/a', - ...options - }); } - - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyA(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/a', + ...options + }); + } + + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceRequests { - public dummyB(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multiple-tags/b', - ...options - }); } + public dummyB(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multiple-tags/b', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceRequests { - public collectionFormat(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/collectionFormat', - ...options - }); } + public collectionFormat(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/collectionFormat', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceRequests { - public types(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/types', - ...options - }); } + public types(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/types', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class UploadServiceRequests { - public uploadFile(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/upload', - ...options - }); } + public uploadFile(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/upload', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceRequests { - public fileResponse(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/file/{id}', - ...options - }); } + public fileResponse(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/file/{id}', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceRequests { - public complexTypes(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/complex', - ...options - }); } - - public complexParams(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/complex/{id}', - ...options - }); } + public complexTypes(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/complex', + ...options + }); + } + + public complexParams(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/complex/{id}', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class MultipartServiceRequests { - public multipartResponse(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'GET', - url: '/api/v{api-version}/multipart', - ...options - }); } - - public multipartRequest(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/multipart', - ...options - }); } + public multipartResponse(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'GET', + url: '/api/v{api-version}/multipart', + ...options + }); + } + + public multipartRequest(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/multipart', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceRequests { - public callWithResultFromHeader(options?: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/header', - ...options - }); } + public callWithResultFromHeader(options?: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/header', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceRequests { - public testErrorCode(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/error', - ...options - }); } + public testErrorCode(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/error', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceRequests { - public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'POST', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'POST', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); + } /** * Login User */ - public putWithFormUrlEncoded(options: Options): HttpRequest { return (options?.client ?? client).requestOptions({ - responseStyle: 'data', - method: 'PUT', - url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', - ...options - }); } + public putWithFormUrlEncoded(options: Options): HttpRequest { + return (options?.client ?? client).requestOptions({ + responseStyle: 'data', + method: 'PUT', + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串', + ...options + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultServiceResources { - public export(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).export(opts) : undefined; }); } - - public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; }); } - - public import(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).import(opts) : undefined; }); } - - public fooWow(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; }); } - - public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; }); } + public export(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).export(opts) : undefined; + }); + } + + public patchApiVbyApiVersionNoTag(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).patchApiVbyApiVersionNoTag(opts) : undefined; + }); + } + + public import(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).import(opts) : undefined; + }); + } + + public fooWow(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).fooWow(opts) : undefined; + }); + } + + public getApiVbyApiVersionSimpleOperation(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultServiceRequests).getApiVbyApiVersionSimpleOperation(opts) : undefined; + }); + } } export class ODataControllerServiceResources { - public apiVVersionODataControllerCount(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; }); } + public apiVVersionODataControllerCount(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).apiService.vVersionService.oDataControllerService.apiVVersionODataControllerCount(opts) : undefined; + }); + } } export class VVersionServiceResources { @@ -484,38 +618,103 @@ export class ApiServiceResources { @Injectable({ providedIn: 'root' }) export class SimpleServiceResources { - public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; }); } - - public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; }); } - - public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; }); } - - public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; }); } - - public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; }); } - - public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; }); } - - public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; }); } + public deleteCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).deleteCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public getCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).getCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public headCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).headCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public optionsCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).optionsCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public patchCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).patchCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public postCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).postCallWithoutParametersAndResponse(opts) : undefined; + }); + } + + public putCallWithoutParametersAndResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(SimpleServiceRequests).putCallWithoutParametersAndResponse(opts) : undefined; + }); + } apiService = new ApiServiceResources(); } @Injectable({ providedIn: 'root' }) export class ParametersServiceResources { - public deleteFoo(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; }); } - - public callWithParameters(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; }); } - - public callWithWeirdParameterNames(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; }); } - - public getCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; }); } - - public postCallWithOptionalParam(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; }); } + public deleteFoo(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).deleteFoo(opts) : undefined; + }); + } + + public callWithParameters(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithParameters(opts) : undefined; + }); + } + + public callWithWeirdParameterNames(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).callWithWeirdParameterNames(opts) : undefined; + }); + } + + public getCallWithOptionalParam(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).getCallWithOptionalParam(opts) : undefined; + }); + } + + public postCallWithOptionalParam(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ParametersServiceRequests).postCallWithOptionalParam(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DescriptionsServiceResources { - public callWithDescriptions(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; }); } + public callWithDescriptions(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DescriptionsServiceRequests).callWithDescriptions(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) @@ -523,126 +722,291 @@ export class DeprecatedServiceResources { /** * @deprecated */ - public deprecatedCall(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; }); } + public deprecatedCall(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DeprecatedServiceRequests).deprecatedCall(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class RequestBodyServiceResources { - public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; }); } + public postApiVbyApiVersionRequestBody(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(RequestBodyServiceRequests).postApiVbyApiVersionRequestBody(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class FormDataServiceResources { - public postApiVbyApiVersionFormData(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; }); } + public postApiVbyApiVersionFormData(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(FormDataServiceRequests).postApiVbyApiVersionFormData(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DefaultsServiceResources { - public callWithDefaultParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; }); } + public callWithDefaultParameters(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultParameters(opts) : undefined; + }); + } - public callWithDefaultOptionalParameters(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; }); } + public callWithDefaultOptionalParameters(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callWithDefaultOptionalParameters(opts) : undefined; + }); + } - public callToTestOrderOfParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; }); } + public callToTestOrderOfParams(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DefaultsServiceRequests).callToTestOrderOfParams(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class DuplicateServiceResources { - public duplicateName(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; }); } - - public duplicateName2(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; }); } - - public duplicateName3(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; }); } - - public duplicateName4(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; }); } + public duplicateName(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName(opts) : undefined; + }); + } + + public duplicateName2(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName2(opts) : undefined; + }); + } + + public duplicateName3(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName3(opts) : undefined; + }); + } + + public duplicateName4(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(DuplicateServiceRequests).duplicateName4(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NoContentServiceResources { - public callWithNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; }); } + public callWithNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NoContentServiceRequests).callWithNoContentResponse(opts) : undefined; + }); + } - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ResponseServiceResources { - public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; }); } - - public callWithResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; }); } - - public callWithDuplicateResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; }); } - - public callWithResponses(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; }); } + public callWithResponseAndNoContentResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponseAndNoContentResponse(opts) : undefined; + }); + } + + public callWithResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponse(opts) : undefined; + }); + } + + public callWithDuplicateResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithDuplicateResponses(opts) : undefined; + }); + } + + public callWithResponses(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ResponseServiceRequests).callWithResponses(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags1ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags2ServiceResources { - public dummyA(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; }); } + public dummyA(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyA(opts) : undefined; + }); + } - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipleTags3ServiceResources { - public dummyB(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; }); } + public dummyB(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipleTags1ServiceRequests).dummyB(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class CollectionFormatServiceResources { - public collectionFormat(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; }); } + public collectionFormat(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(CollectionFormatServiceRequests).collectionFormat(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class TypesServiceResources { - public types(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(TypesServiceRequests).types(opts) : undefined; }); } + public types(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(TypesServiceRequests).types(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class UploadServiceResources { - public uploadFile(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; }); } + public uploadFile(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(UploadServiceRequests).uploadFile(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class FileResponseServiceResources { - public fileResponse(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; }); } + public fileResponse(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(FileResponseServiceRequests).fileResponse(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ComplexServiceResources { - public complexTypes(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; }); } + public complexTypes(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ComplexServiceRequests).complexTypes(opts) : undefined; + }); + } - public complexParams(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; }); } + public complexParams(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ComplexServiceRequests).complexParams(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class MultipartServiceResources { - public multipartResponse(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; }); } + public multipartResponse(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipartServiceRequests).multipartResponse(opts) : undefined; + }); + } - public multipartRequest(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; }); } + public multipartRequest(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(MultipartServiceRequests).multipartRequest(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class HeaderServiceResources { - public callWithResultFromHeader(options?: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; }); } + public callWithResultFromHeader(options?: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(HeaderServiceRequests).callWithResultFromHeader(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class ErrorServiceResources { - public testErrorCode(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; }); } + public testErrorCode(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(ErrorServiceRequests).testErrorCode(opts) : undefined; + }); + } } @Injectable({ providedIn: 'root' }) export class NonAsciiÆøåÆøÅöôêÊServiceResources { - public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; }); } + public nonAsciiæøåÆøÅöôêÊ字符串(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).nonAsciiæøåÆøÅöôêÊ字符串(opts) : undefined; + }); + } /** * Login User */ - public putWithFormUrlEncoded(options: () => Options | undefined) { return httpResource(() => { const opts = options ? options() : undefined; return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; }); } + public putWithFormUrlEncoded(options: () => Options | undefined) { + return httpResource(() => { + const opts = options ? options() : undefined; + return opts ? inject(NonAsciiÆøåÆøÅöôêÊServiceRequests).putWithFormUrlEncoded(opts) : undefined; + }); + } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts index 2aeb7aacc..474d7c8c6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/@angular/common.gen.ts @@ -348,104 +348,248 @@ export const putWithFormUrlEncodedRequest = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? exportRequest(opts) : undefined; }); +export const exportResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? exportRequest(opts) : undefined; +}); -export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; }); +export const patchApiVbyApiVersionNoTagResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchApiVbyApiVersionNoTagRequest(opts) : undefined; +}); -export const importResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? importRequest(opts) : undefined; }); +export const importResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? importRequest(opts) : undefined; +}); -export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fooWowRequest(opts) : undefined; }); +export const fooWowResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? fooWowRequest(opts) : undefined; +}); -export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; }); +export const apiVVersionODataControllerCountResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? apiVVersionODataControllerCountRequest(opts) : undefined; +}); -export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; }); +export const getApiVbyApiVersionSimpleOperationResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getApiVbyApiVersionSimpleOperationRequest(opts) : undefined; +}); -export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const deleteCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deleteCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const getCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const headCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? headCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const optionsCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? optionsCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const patchCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? patchCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const postCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; }); +export const putCallWithoutParametersAndResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? putCallWithoutParametersAndResponseRequest(opts) : undefined; +}); -export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deleteFooRequest(opts) : undefined; }); +export const deleteFooResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deleteFooRequest(opts) : undefined; +}); -export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDescriptionsRequest(opts) : undefined; }); +export const callWithDescriptionsResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDescriptionsRequest(opts) : undefined; +}); /** * @deprecated */ -export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? deprecatedCallRequest(opts) : undefined; }); +export const deprecatedCallResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? deprecatedCallRequest(opts) : undefined; +}); -export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithParametersRequest(opts) : undefined; }); +export const callWithParametersResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithParametersRequest(opts) : undefined; +}); -export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; }); +export const callWithWeirdParameterNamesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithWeirdParameterNamesRequest(opts) : undefined; +}); -export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? getCallWithOptionalParamRequest(opts) : undefined; }); +export const getCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? getCallWithOptionalParamRequest(opts) : undefined; +}); -export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postCallWithOptionalParamRequest(opts) : undefined; }); +export const postCallWithOptionalParamResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postCallWithOptionalParamRequest(opts) : undefined; +}); -export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; }); +export const postApiVbyApiVersionRequestBodyResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postApiVbyApiVersionRequestBodyRequest(opts) : undefined; +}); -export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; }); +export const postApiVbyApiVersionFormDataResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? postApiVbyApiVersionFormDataRequest(opts) : undefined; +}); -export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultParametersRequest(opts) : undefined; }); +export const callWithDefaultParametersResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultParametersRequest(opts) : undefined; +}); -export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; }); +export const callWithDefaultOptionalParametersResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDefaultOptionalParametersRequest(opts) : undefined; +}); -export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callToTestOrderOfParamsRequest(opts) : undefined; }); +export const callToTestOrderOfParamsResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callToTestOrderOfParamsRequest(opts) : undefined; +}); -export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateNameRequest(opts) : undefined; }); +export const duplicateNameResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateNameRequest(opts) : undefined; +}); -export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName2Request(opts) : undefined; }); +export const duplicateName2Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName2Request(opts) : undefined; +}); -export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName3Request(opts) : undefined; }); +export const duplicateName3Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName3Request(opts) : undefined; +}); -export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? duplicateName4Request(opts) : undefined; }); +export const duplicateName4Resource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? duplicateName4Request(opts) : undefined; +}); -export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithNoContentResponseRequest(opts) : undefined; }); +export const callWithNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithNoContentResponseRequest(opts) : undefined; +}); -export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; }); +export const callWithResponseAndNoContentResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseAndNoContentResponseRequest(opts) : undefined; +}); -export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyARequest(opts) : undefined; }); +export const dummyAResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyARequest(opts) : undefined; +}); -export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? dummyBRequest(opts) : undefined; }); +export const dummyBResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? dummyBRequest(opts) : undefined; +}); -export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponseRequest(opts) : undefined; }); +export const callWithResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponseRequest(opts) : undefined; +}); -export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithDuplicateResponsesRequest(opts) : undefined; }); +export const callWithDuplicateResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithDuplicateResponsesRequest(opts) : undefined; +}); -export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResponsesRequest(opts) : undefined; }); +export const callWithResponsesResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResponsesRequest(opts) : undefined; +}); -export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? collectionFormatRequest(opts) : undefined; }); +export const collectionFormatResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? collectionFormatRequest(opts) : undefined; +}); -export const typesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? typesRequest(opts) : undefined; }); +export const typesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? typesRequest(opts) : undefined; +}); -export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? uploadFileRequest(opts) : undefined; }); +export const uploadFileResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? uploadFileRequest(opts) : undefined; +}); -export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? fileResponseRequest(opts) : undefined; }); +export const fileResponseResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? fileResponseRequest(opts) : undefined; +}); -export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexTypesRequest(opts) : undefined; }); +export const complexTypesResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? complexTypesRequest(opts) : undefined; +}); -export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartResponseRequest(opts) : undefined; }); +export const multipartResponseResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? multipartResponseRequest(opts) : undefined; +}); -export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? multipartRequestRequest(opts) : undefined; }); +export const multipartRequestResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? multipartRequestRequest(opts) : undefined; +}); -export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? complexParamsRequest(opts) : undefined; }); +export const complexParamsResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? complexParamsRequest(opts) : undefined; +}); -export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? callWithResultFromHeaderRequest(opts) : undefined; }); +export const callWithResultFromHeaderResource = (options?: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? callWithResultFromHeaderRequest(opts) : undefined; +}); -export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? testErrorCodeRequest(opts) : undefined; }); +export const testErrorCodeResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? testErrorCodeRequest(opts) : undefined; +}); -export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; }); +export const nonAsciiæøåÆøÅöôêÊ字符串Resource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? nonAsciiæøåÆøÅöôêÊ字符串Request(opts) : undefined; +}); /** * Login User */ -export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { const opts = options ? options() : undefined; return opts ? putWithFormUrlEncodedRequest(opts) : undefined; }); +export const putWithFormUrlEncodedResource = (options: () => Options | undefined) => httpResource(() => { + const opts = options ? options() : undefined; + return opts ? putWithFormUrlEncodedRequest(opts) : undefined; +}); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index 88a1b02c6..effd73175 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -23,13 +23,19 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Domains extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); + } - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/business/providers/domains', ...options }); + } } export class Providers extends HeyApiClient { @@ -37,7 +43,9 @@ export class Providers extends HeyApiClient { } export class Business extends HeyApiClient { - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations/businesses', ...options }); + } providers = new Providers({ client: this.client }); } @@ -55,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class NestedSdkWithInstance extends HeyApiClient { @@ -64,11 +74,18 @@ export class NestedSdkWithInstance extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); NestedSdkWithInstance.__registry.set(this, args?.key); } + }) { + super(args); + NestedSdkWithInstance.__registry.set(this, args?.key); + } - public putBusinessProvidersDomains(options?: Options) { return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); } + public putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? this.client).put({ url: '/business/providers/domains', ...options }); + } - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/locations', ...options }); } + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/locations', ...options }); + } business = new Business({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts index bc2324ac0..8c055a5e4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/sdk.gen.ts @@ -19,11 +19,17 @@ export type Options(options?: Options) { return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/business/providers/domains', ...options }); + } - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/business/providers/domains', ...options }); + } - public static putBusinessProvidersDomains(options?: Options) { return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); } + public static putBusinessProvidersDomains(options?: Options) { + return (options?.client ?? client).put({ url: '/business/providers/domains', ...options }); + } } export class Providers { @@ -31,13 +37,17 @@ export class Providers { } export class Business { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations/businesses', ...options }); + } static providers = Providers; } export class Locations { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/locations', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/locations', ...options }); + } static business = Business; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 5196fa3c5..966bfdf87 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -23,19 +23,29 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class Bar extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo/bar', ...options }); + } } export class Foo extends HeyApiClient { - public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo', ...options }); } + public post(options?: Options) { + return (options?.client ?? this.client).post({ url: '/foo', ...options }); + } - public put(options?: Options) { return (options?.client ?? this.client).put({ url: '/foo', ...options }); } + public put(options?: Options) { + return (options?.client ?? this.client).put({ url: '/foo', ...options }); + } bar = new Bar({ client: this.client }); } @@ -53,7 +63,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class Sdk extends HeyApiClient { @@ -62,11 +74,18 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); Sdk.__registry.set(this, args?.key); } + }) { + super(args); + Sdk.__registry.set(this, args?.key); + } - public getFoo(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo', ...options }); } + public getFoo(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo', ...options }); + } - public getFooBar(options?: Options) { return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); } + public getFooBar(options?: Options) { + return (options?.client ?? this.client).get({ url: '/foo/bar', ...options }); + } foo = new Foo({ client: this.client }); } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 4d964f9a6..9c52054bc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,3 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; +const fooSchemaResponseTransformer = (data: any) => { + data.foo = BigInt(data.foo.toString()); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts index 26abe5f67..3aeed5221 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts @@ -46,52 +46,70 @@ export const getFooQueryKey = (options?: Options) => createQueryKey( export const getFooQuery = defineQueryOptions((options?: Options) => ({ key: getFooQueryKey(options), - query: async (context) => { const { data } = await FooBazService.getFoo({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarQuery = defineQueryOptions((options?: Options) => ({ key: getFooBarQueryKey(options), - query: async (context) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const fooBarPostMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooBarPutMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts index 1aef078ed..81651e8f9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts @@ -46,423 +46,561 @@ export const exportQueryKey = (options?: Options) => createQueryKey( export const exportQuery = defineQueryOptions((options?: Options) => ({ key: exportQueryKey(options), - query: async (context) => { const { data } = await export_({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await export_({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const importMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await import_({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await import_({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fooWowMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await fooWow({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await fooWow({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountQuery = defineQueryOptions((options?: Options) => ({ key: apiVVersionODataControllerCountQueryKey(options), - query: async (context) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationQuery = defineQueryOptions((options: Options) => ({ key: getApiVbyApiVersionSimpleOperationQueryKey(options), - query: async (context) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options) => ({ key: getCallWithoutParametersAndResponseQueryKey(options), - query: async (context) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deleteFoo({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deleteFoo({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDescriptions({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDescriptions({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); /** * @deprecated */ export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await deprecatedCall({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await deprecatedCall({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamQuery = defineQueryOptions((options: Options) => ({ key: getCallWithOptionalParamQueryKey(options), - query: async (context) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersQuery = defineQueryOptions((options?: Options) => ({ key: callWithDefaultParametersQueryKey(options), - query: async (context) => { const { data } = await callWithDefaultParameters({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Query = defineQueryOptions((options?: Options) => ({ key: duplicateName2QueryKey(options), - query: async (context) => { const { data } = await duplicateName2({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await duplicateName2({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName3({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName3({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await duplicateName4({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await duplicateName4({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseAndNoContentResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAQuery = defineQueryOptions((options?: Options) => ({ key: dummyAQueryKey(options), - query: async (context) => { const { data } = await dummyA({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyA({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBQuery = defineQueryOptions((options?: Options) => ({ key: dummyBQueryKey(options), - query: async (context) => { const { data } = await dummyB({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await dummyB({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseQuery = defineQueryOptions((options?: Options) => ({ key: callWithResponseQueryKey(options), - query: async (context) => { const { data } = await callWithResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await callWithResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithDuplicateResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, CallWithResponsesError> => ({ - mutation: async (vars) => { const { data } = await callWithResponses({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResponses({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatQuery = defineQueryOptions((options: Options) => ({ key: collectionFormatQueryKey(options), - query: async (context) => { const { data } = await collectionFormat({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await collectionFormat({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesQuery = defineQueryOptions((options: Options) => ({ key: typesQueryKey(options), - query: async (context) => { const { data } = await types({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await types({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await uploadFile({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await uploadFile({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseQuery = defineQueryOptions((options: Options) => ({ key: fileResponseQueryKey(options), - query: async (context) => { const { data } = await fileResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await fileResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesQuery = defineQueryOptions((options: Options) => ({ key: complexTypesQueryKey(options), - query: async (context) => { const { data } = await complexTypes({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await complexTypes({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseQuery = defineQueryOptions((options?: Options) => ({ key: multipartResponseQueryKey(options), - query: async (context) => { const { data } = await multipartResponse({ - ...options, - ...context, - throwOnError: true - }); return data; } + query: async (context) => { + const { data } = await multipartResponse({ + ...options, + ...context, + throwOnError: true + }); + return data; + } })); export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await multipartRequest({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await multipartRequest({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await complexParams({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await complexParams({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await callWithResultFromHeader({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await testErrorCode({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await testErrorCode({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); /** * Login User */ export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Error> => ({ - mutation: async (vars) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...vars, - throwOnError: true - }); return data; } + mutation: async (vars) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts index 058ef89f1..6f71bcc40 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts index d577b3aff..5b07cde6a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/@tanstack/angular-query-experimental.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts index 41213b036..6cc80fb17 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/@tanstack/angular-query-experimental.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts index 6d7c758df..b144ed7a2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/@tanstack/angular-query-experimental.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts index 077353a6c..74f3f999f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts index 8f9f18754..38403265b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/@tanstack/react-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts index d5b97ba94..378082bd0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/@tanstack/react-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts index 52077bd6b..43c90277c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/@tanstack/react-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts index 3be7126b7..908344e1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts index 4a5b4971c..203534a86 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/@tanstack/solid-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts index 548d90159..358caac28 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/@tanstack/solid-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts index 6e56543cd..ba1febdda 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/@tanstack/solid-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts index 8a3f1dff8..4f7ad47a7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts index a66a84de1..9e78e66d2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/@tanstack/svelte-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { const mutationOptions: MutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions, Options> => { + const mutationOptions: MutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts index 346c579b6..7e81c3731 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/@tanstack/svelte-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts index 9b44f31cf..6a831b5b3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/@tanstack/svelte-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): MutationOptions> => { const mutationOptions: MutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): MutationOptions> => { + const mutationOptions: MutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts index 1d7442c84..767635c77 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await FooBazService.getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await FooBazService.getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options) }); -export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarQueryKey = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await BarBazService.getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await BarBazService.getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarQueryKey(options) }); -export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.post({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.post({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await FooBazService.fooService.barService.put({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await FooBazService.fooService.barService.put({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts index 320f1fb34..8b221a746 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/sdk.gen.ts @@ -19,27 +19,39 @@ export type Options(options?: Options) { return (options?.client ?? client).post({ url: '/foo/bar', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo/bar', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo/bar', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo/bar', ...options }); + } } export class FooService { - public static post(options?: Options) { return (options?.client ?? client).post({ url: '/foo', ...options }); } + public static post(options?: Options) { + return (options?.client ?? client).post({ url: '/foo', ...options }); + } - public static put(options?: Options) { return (options?.client ?? client).put({ url: '/foo', ...options }); } + public static put(options?: Options) { + return (options?.client ?? client).put({ url: '/foo', ...options }); + } static barService = BarService; } export class FooBazService { - public static getFoo(options?: Options) { return (options?.client ?? client).get({ url: '/foo', ...options }); } + public static getFoo(options?: Options) { + return (options?.client ?? client).get({ url: '/foo', ...options }); + } static fooService = FooService; } export class BarBazService { - public static getFooBar(options?: Options) { return (options?.client ?? client).get({ url: '/foo/bar', ...options }); } + public static getFooBar(options?: Options) { + return (options?.client ?? client).get({ url: '/foo/bar', ...options }); + } static fooService = FooService; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts index 0d2884d1b..f839621a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/@tanstack/vue-query.gen.ts @@ -43,159 +43,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions, ApiVVersionODataControllerCountResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions, GetApiVbyApiVersionSimpleOperationResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -252,285 +339,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions, CallWithNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions, CallWithResponseAndNoContentResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions, DummyAResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions, DummyBResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions, CallWithResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions, unknown, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions, TypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions, FileResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions, ComplexTypesResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions, MultipartResponseResponse, ReturnType>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { const mutationOptions: UseMutationOptions, Options> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions, Options> => { + const mutationOptions: UseMutationOptions, Options> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts index b68fd8934..bbcab4d5a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/@tanstack/vue-query.gen.ts @@ -42,159 +42,246 @@ const createQueryKey = (id: string, options?: TOptions export const exportQueryKey = (options?: Options) => createQueryKey('export', options); export const exportOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await export_({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await export_({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: exportQueryKey(options) }); -export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchApiVbyApiVersionNoTag({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const importMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await import_({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooWow({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchApiVbyApiVersionNoTagMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchApiVbyApiVersionNoTag({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const importMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await import_({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const fooWowMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooWow({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const apiVVersionODataControllerCountQueryKey = (options?: Options) => createQueryKey('apiVVersionODataControllerCount', options); export const apiVVersionODataControllerCountOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await apiVVersionODataControllerCount({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await apiVVersionODataControllerCount({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: apiVVersionODataControllerCountQueryKey(options) }); export const getApiVbyApiVersionSimpleOperationQueryKey = (options: Options) => createQueryKey('getApiVbyApiVersionSimpleOperation', options); export const getApiVbyApiVersionSimpleOperationOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getApiVbyApiVersionSimpleOperation({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getApiVbyApiVersionSimpleOperation({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getApiVbyApiVersionSimpleOperationQueryKey(options) }); -export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithoutParametersAndResponseQueryKey = (options?: Options) => createQueryKey('getCallWithoutParametersAndResponse', options); export const getCallWithoutParametersAndResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithoutParametersAndResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithoutParametersAndResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithoutParametersAndResponseQueryKey(options) }); -export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await patchCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putCallWithoutParametersAndResponse({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deleteFoo({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDescriptions({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const patchCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await patchCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const putCallWithoutParametersAndResponseMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putCallWithoutParametersAndResponse({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const deleteFooMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deleteFoo({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithDescriptionsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDescriptions({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * @deprecated */ -export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await deprecatedCall({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithWeirdParameterNames({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const deprecatedCallMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await deprecatedCall({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithWeirdParameterNamesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithWeirdParameterNames({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getCallWithOptionalParamQueryKey = (options: Options) => createQueryKey('getCallWithOptionalParam', options); export const getCallWithOptionalParamOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getCallWithOptionalParam({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getCallWithOptionalParam({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getCallWithOptionalParamQueryKey(options) }); @@ -251,285 +338,423 @@ export const getCallWithOptionalParamInfiniteOptions = (options: Options>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postCallWithOptionalParam({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionRequestBody({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await postApiVbyApiVersionFormData({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const postCallWithOptionalParamMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postCallWithOptionalParam({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionRequestBodyMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionRequestBody({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const postApiVbyApiVersionFormDataMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await postApiVbyApiVersionFormData({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithDefaultParametersQueryKey = (options?: Options) => createQueryKey('callWithDefaultParameters', options); export const callWithDefaultParametersOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithDefaultParameters({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithDefaultParameters({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithDefaultParametersQueryKey(options) }); -export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDefaultOptionalParameters({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callToTestOrderOfParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDefaultOptionalParametersMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDefaultOptionalParameters({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callToTestOrderOfParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callToTestOrderOfParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateNameMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const duplicateName2QueryKey = (options?: Options) => createQueryKey('duplicateName2', options); export const duplicateName2Options = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await duplicateName2({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await duplicateName2({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: duplicateName2QueryKey(options) }); -export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName3({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await duplicateName4({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const duplicateName3Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName3({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const duplicateName4Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await duplicateName4({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const callWithNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithNoContentResponse', options); export const callWithNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithNoContentResponseQueryKey(options) }); export const callWithResponseAndNoContentResponseQueryKey = (options?: Options) => createQueryKey('callWithResponseAndNoContentResponse', options); export const callWithResponseAndNoContentResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponseAndNoContentResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponseAndNoContentResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseAndNoContentResponseQueryKey(options) }); export const dummyAQueryKey = (options?: Options) => createQueryKey('dummyA', options); export const dummyAOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyA({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyA({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyAQueryKey(options) }); export const dummyBQueryKey = (options?: Options) => createQueryKey('dummyB', options); export const dummyBOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await dummyB({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await dummyB({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: dummyBQueryKey(options) }); export const callWithResponseQueryKey = (options?: Options) => createQueryKey('callWithResponse', options); export const callWithResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await callWithResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await callWithResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: callWithResponseQueryKey(options) }); -export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithDuplicateResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResponses({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const callWithDuplicateResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithDuplicateResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResponsesMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResponses({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const collectionFormatQueryKey = (options: Options) => createQueryKey('collectionFormat', options); export const collectionFormatOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await collectionFormat({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await collectionFormat({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: collectionFormatQueryKey(options) }); export const typesQueryKey = (options: Options) => createQueryKey('types', options); export const typesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await types({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await types({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: typesQueryKey(options) }); -export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await uploadFile({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const uploadFileMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await uploadFile({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const fileResponseQueryKey = (options: Options) => createQueryKey('fileResponse', options); export const fileResponseOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await fileResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await fileResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: fileResponseQueryKey(options) }); export const complexTypesQueryKey = (options: Options) => createQueryKey('complexTypes', options); export const complexTypesOptions = (options: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await complexTypes({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await complexTypes({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: complexTypesQueryKey(options) }); export const multipartResponseQueryKey = (options?: Options) => createQueryKey('multipartResponse', options); export const multipartResponseOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await multipartResponse({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await multipartResponse({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: multipartResponseQueryKey(options) }); -export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await multipartRequest({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await complexParams({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await callWithResultFromHeader({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await testErrorCode({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; - -export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const multipartRequestMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await multipartRequest({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const complexParamsMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await complexParams({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const callWithResultFromHeaderMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await callWithResultFromHeader({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const testErrorCodeMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await testErrorCode({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; + +export const nonAsciiæøåÆøÅöôêÊ字符串Mutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await nonAsciiæøåÆøÅöôêÊ字符串({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; /** * Login User */ -export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await putWithFormUrlEncoded({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const putWithFormUrlEncodedMutation = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await putWithFormUrlEncoded({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts index 6ed25f5f3..bfd35f1d6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/@tanstack/vue-query.gen.ts @@ -42,55 +42,85 @@ const createQueryKey = (id: string, options?: TOptions export const getFooD = (options?: Options) => createQueryKey('getFoo', options); export const getFooE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooD(options) }); -export const fooPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; export const getFooBarD = (options?: Options) => createQueryKey('getFooBar', options); export const getFooBarE = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFooBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFooBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooBarD(options) }); -export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPost({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPostC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPost({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; -export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { - mutationFn: async (fnOptions) => { const { data } = await fooBarPut({ - ...options, - ...fnOptions, - throwOnError: true - }); return data; } -}; return mutationOptions; }; +export const fooBarPutC = (options?: Partial>): UseMutationOptions> => { + const mutationOptions: UseMutationOptions> = { + mutationFn: async (fnOptions) => { + const { data } = await fooBarPut({ + ...options, + ...fnOptions, + throwOnError: true + }); + return data; + } + }; + return mutationOptions; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts index d535c1ec3..9c53d7569 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts @@ -1,7 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts -const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { - data.baz = new Date(data.baz); -} return data; }; +const quxSchemaResponseTransformer = (data: any) => { + if (data.baz) { + data.baz = new Date(data.baz); + } + return data; +}; -const bazSchemaResponseTransformer = (data: any) => { data.bar = new Date(data.bar); return data; }; +const bazSchemaResponseTransformer = (data: any) => { + data.bar = new Date(data.bar); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts index 7f1d0859a..281cc13b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts @@ -16,8 +16,11 @@ const fooSchemaResponseTransformer = (data: any) => { return data; }; -const nestedDateObjectSchemaResponseTransformer = (data: any) => { if (data.foo) { - if (data.foo.bar) { - data.foo.bar = new Date(data.foo.bar); +const nestedDateObjectSchemaResponseTransformer = (data: any) => { + if (data.foo) { + if (data.foo.bar) { + data.foo.bar = new Date(data.foo.bar); + } } -} return data; }; + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts index 55875bf9f..fc50ee927 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/transformers.gen.ts @@ -2,4 +2,10 @@ import type { GetFooResponse } from './types.gen'; -export const getFooResponseTransformer = async (data: any): Promise => { data.foo = data.foo.map((item: any) => { item.baz = new Date(item.baz); return item; }); return data; }; +export const getFooResponseTransformer = async (data: any): Promise => { + data.foo = data.foo.map((item: any) => { + item.baz = new Date(item.baz); + return item; + }); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts index 5068e1622..a168141eb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/angular-query-experimental.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -59,12 +62,15 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts index 0d9548a97..5a6a25034 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/react-query.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -59,12 +62,15 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts index 4058551ff..8b6d32356 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/solid-query.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -59,12 +62,15 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts index 164a8f8e5..4c50bd620 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/svelte-query.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -59,12 +62,15 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts index f642547c0..4793f41da 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/@tanstack/vue-query.gen.ts @@ -42,12 +42,15 @@ const createQueryKey = (id: string, options?: TOptions export const getFooQueryKey = (options?: Options) => createQueryKey('getFoo', options); export const getFooOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getFoo({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getFoo({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getFooQueryKey(options), meta: { id: 'getFoo', @@ -59,12 +62,15 @@ export const getFooOptions = (options?: Options) => queryOptions) => createQueryKey('getBar', options); export const getBarOptions = (options?: Options) => queryOptions>({ - queryFn: async ({ queryKey, signal }) => { const { data } = await getBar({ - ...options, - ...queryKey[0], - signal, - throwOnError: true - }); return data; }, + queryFn: async ({ queryKey, signal }) => { + const { data } = await getBar({ + ...options, + ...queryKey[0], + signal, + throwOnError: true + }); + return data; + }, queryKey: getBarQueryKey(options), meta: { id: 'getBar', diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts index 94fadaece..18c322e48 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/sdk.gen.ts @@ -19,460 +19,682 @@ export type Options(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/accounting-company-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1AccountingCompanyMembershipsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); } - - public static get api() { return Api; } + public static putApiV1AccountingCompanyMemberships(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/accounting-company-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1AccountingCompanyMembershipsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); + } + + public static get api() { + return Api; + } } export class BankAccounts { - public static putApiV1BankAccounts(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/bank-accounts', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1BankAccountsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); } - - public static get api() { return Api; } + public static putApiV1BankAccounts(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/bank-accounts', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1BankAccountsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); + } + + public static get api() { + return Api; + } } export class BusinessAccountantAssignments { - public static putApiV1BusinessAccountantAssignments(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/business-accountant-assignments', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1BusinessAccountantAssignmentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); } - - public static get api() { return Api; } + public static putApiV1BusinessAccountantAssignments(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/business-accountant-assignments', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1BusinessAccountantAssignmentsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); + } + + public static get api() { + return Api; + } } export class BusinessDocumentActivities { - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); } + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); + } } export class BusinessDocuments { - public static getApiV1BusinessDocumentsByIdRaw(options: Options) { return (options.client ?? client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); } - - public static postApiV1BusinessDocuments(options?: Options) { return (options?.client ?? client).post({ - ...formDataBodySerializer, - url: '/api/v1/business-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); } - - public static deleteApiV1BusinessDocumentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/business-documents/{id}', ...options }); } - - public static putApiV1BusinessDocumentsById(options: Options) { return (options.client ?? client).put({ - url: '/api/v1/business-documents/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1BusinessDocumentsByIdApprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); } - - public static postApiV1BusinessDocumentsByIdUnapprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); } - - public static postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); } - - public static postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/business-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); } - - public static get api() { return Api; } + public static getApiV1BusinessDocumentsByIdRaw(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); + } + + public static postApiV1BusinessDocuments(options?: Options) { + return (options?.client ?? client).post({ + ...formDataBodySerializer, + url: '/api/v1/business-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); + } + + public static deleteApiV1BusinessDocumentsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/business-documents/{id}', ...options }); + } + + public static putApiV1BusinessDocumentsById(options: Options) { + return (options.client ?? client).put({ + url: '/api/v1/business-documents/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1BusinessDocumentsByIdApprove(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); + } + + public static postApiV1BusinessDocumentsByIdUnapprove(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); + } + + public static postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); + } + + public static postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/business-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); + } + + public static get api() { + return Api; + } } export class BusinessDocumentsSummaries { /** * @deprecated */ - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); } + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); + } - public static get api() { return Api; } + public static get api() { + return Api; + } } export class Businesses { - public static getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { return (options.client ?? client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); } - - public static postApiV1Businesses(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/businesses', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1BusinessesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/businesses/{id}', ...options }); } - - public static putApiV1BusinessesById(options: Options) { return (options.client ?? client).put({ - url: '/api/v1/businesses/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static putApiV1BusinessesByIdContact(options: Options) { return (options.client ?? client).put({ - url: '/api/v1/businesses/{id}/contact', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1BusinessesByIdDisconnect(options: Options) { return (options.client ?? client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); } - - public static key(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); } - - public static get api() { return Api; } + public static getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); + } + + public static postApiV1Businesses(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/businesses', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1BusinessesById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/businesses/{id}', ...options }); + } + + public static putApiV1BusinessesById(options: Options) { + return (options.client ?? client).put({ + url: '/api/v1/businesses/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static putApiV1BusinessesByIdContact(options: Options) { + return (options.client ?? client).put({ + url: '/api/v1/businesses/{id}/contact', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1BusinessesByIdDisconnect(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); + } + + public static key(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); + } + + public static get api() { + return Api; + } } export class BusinessSummaries { - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); } + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); + } - public static get api() { return Api; } + public static get api() { + return Api; + } } export class Counterparties { - public static postApiV1Counterparties(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/counterparties', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1CounterpartiesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/counterparties/{id}', ...options }); } - - public static patchApiV1CounterpartiesById(options: Options) { return (options.client ?? client).patch({ - url: '/api/v1/counterparties/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); } - - public static get api() { return Api; } + public static postApiV1Counterparties(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/counterparties', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1CounterpartiesById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/counterparties/{id}', ...options }); + } + + public static patchApiV1CounterpartiesById(options: Options) { + return (options.client ?? client).patch({ + url: '/api/v1/counterparties/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); + } + + public static get api() { + return Api; + } } export class DataBoxCredentials { - public static putApiV1DataBoxCredentials(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/data-box-credentials', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1DataBoxCredentialsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); } - - public static get api() { return Api; } + public static putApiV1DataBoxCredentials(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/data-box-credentials', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1DataBoxCredentialsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); + } + + public static get api() { + return Api; + } } export class DocumentTypes { - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); } + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); + } - public static get api() { return Api; } + public static get api() { + return Api; + } } export class Invitations { - public static postApiV1Invitations(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/invitations', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static postApiV1InvitationsByIdAccept(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/invitations/{id}/accept', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1InvitationsByIdReject(options: Options) { return (options.client ?? client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); } - - public static deleteApiV1InvitationsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/invitations/{id}', ...options }); } - - public static patchApiV1InvitationsById(options: Options) { return (options.client ?? client).patch({ - url: '/api/v1/invitations/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); } - - public static get api() { return Api; } + public static postApiV1Invitations(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/invitations', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static postApiV1InvitationsByIdAccept(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/invitations/{id}/accept', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1InvitationsByIdReject(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); + } + + public static deleteApiV1InvitationsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/invitations/{id}', ...options }); + } + + public static patchApiV1InvitationsById(options: Options) { + return (options.client ?? client).patch({ + url: '/api/v1/invitations/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); + } + + public static get api() { + return Api; + } } export class Invoices { - public static postApiV1Invoices(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/invoices', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1InvoicesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/invoices/{id}', ...options }); } - - public static patchApiV1InvoicesById(options: Options) { return (options.client ?? client).patch({ - url: '/api/v1/invoices/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static getApiV1InvoicesByIdPreview(options: Options) { return (options.client ?? client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); } - - public static postApiV1InvoicesByIdSend(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/invoices/{id}/send', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1InvoicesByIdSnapshot(options: Options) { return (options.client ?? client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); } - - public static get api() { return Api; } + public static postApiV1Invoices(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/invoices', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1InvoicesById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/invoices/{id}', ...options }); + } + + public static patchApiV1InvoicesById(options: Options) { + return (options.client ?? client).patch({ + url: '/api/v1/invoices/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static getApiV1InvoicesByIdPreview(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); + } + + public static postApiV1InvoicesByIdSend(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/invoices/{id}/send', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1InvoicesByIdSnapshot(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); + } + + public static get api() { + return Api; + } } export class InvoiceSettings { - public static putApiV1InvoiceSettings(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/invoice-settings', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); } - - public static get api() { return Api; } + public static putApiV1InvoiceSettings(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/invoice-settings', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); + } + + public static get api() { + return Api; + } } export class Licenses { - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); } + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); + } - public static get api() { return Api; } + public static get api() { + return Api; + } } export class PersonalDocuments { - public static getApiV1PersonalDocumentsByIdRaw(options: Options) { return (options.client ?? client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); } - - public static postApiV1PersonalDocuments(options?: Options) { return (options?.client ?? client).post({ - ...formDataBodySerializer, - url: '/api/v1/personal-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); } - - public static postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/personal-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static deleteApiV1PersonalDocumentsById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); } - - public static getApiV1PersonalDocumentsSummary(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/personal-documents/summary', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); } - - public static get api() { return Api; } + public static getApiV1PersonalDocumentsByIdRaw(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); + } + + public static postApiV1PersonalDocuments(options?: Options) { + return (options?.client ?? client).post({ + ...formDataBodySerializer, + url: '/api/v1/personal-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); + } + + public static postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/personal-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static deleteApiV1PersonalDocumentsById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); + } + + public static getApiV1PersonalDocumentsSummary(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/personal-documents/summary', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); + } + + public static get api() { + return Api; + } } export class RecurringTasks { - public static postApiV1RecurringTasks(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/recurring-tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1RecurringTasksById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); } - - public static patchApiV1RecurringTasksById(options: Options) { return (options.client ?? client).patch({ - url: '/api/v1/recurring-tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); } - - public static get api() { return Api; } + public static postApiV1RecurringTasks(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/recurring-tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1RecurringTasksById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); + } + + public static patchApiV1RecurringTasksById(options: Options) { + return (options.client ?? client).patch({ + url: '/api/v1/recurring-tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); + } + + public static get api() { + return Api; + } } export class Tasks { - public static postApiV1Tasks(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static putApiV1TasksById(options: Options) { return (options.client ?? client).put({ - url: '/api/v1/tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1TasksByIdSubmit(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/tasks/{id}/submit', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static postApiV1TasksByIdApprove(options: Options) { return (options.client ?? client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); } - - public static postApiV1TasksByIdReject(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/tasks/{id}/reject', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static getApiV1TasksByIdComments(options: Options) { return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); } - - public static getApiV1TasksByIdDocuments(options: Options) { return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); } - - public static key(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); } - - public static get api() { return Api; } + public static postApiV1Tasks(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static putApiV1TasksById(options: Options) { + return (options.client ?? client).put({ + url: '/api/v1/tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1TasksByIdSubmit(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/tasks/{id}/submit', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static postApiV1TasksByIdApprove(options: Options) { + return (options.client ?? client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); + } + + public static postApiV1TasksByIdReject(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/tasks/{id}/reject', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static getApiV1TasksByIdComments(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); + } + + public static getApiV1TasksByIdDocuments(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); + } + + public static key(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); + } + + public static get api() { + return Api; + } } export class Odata { - public static accountingCompanies(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); } + public static accountingCompanies(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); + } - public static accountingCompanyMemberships(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); } + public static accountingCompanyMemberships(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); + } - public static bankAccounts(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts', ...options }); } + public static bankAccounts(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BankAccounts', ...options }); + } - public static businessAccountantAssignments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); } + public static businessAccountantAssignments(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); + } - public static businessDocumentActivities(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); } + public static businessDocumentActivities(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); + } - public static businessDocuments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); } + public static businessDocuments(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); + } /** * @deprecated */ - public static businessDocumentsSummaries(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); } + public static businessDocumentsSummaries(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); + } - public static businesses(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses', ...options }); } + public static businesses(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses', ...options }); + } - public static businessesKey(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); } + public static businessesKey(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); + } - public static businessSummaries(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); } + public static businessSummaries(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); + } - public static counterparties(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties', ...options }); } + public static counterparties(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Counterparties', ...options }); + } - public static dataBoxCredentials(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); } + public static dataBoxCredentials(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); + } - public static documentTypes(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); } + public static documentTypes(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); + } - public static invitations(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations', ...options }); } + public static invitations(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Invitations', ...options }); + } - public static invoices(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices', ...options }); } + public static invoices(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Invoices', ...options }); + } - public static invoiceSettings(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); } + public static invoiceSettings(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); + } - public static licenses(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses', ...options }); } + public static licenses(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Licenses', ...options }); + } - public static personalDocuments(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); } + public static personalDocuments(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); + } - public static recurringTasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); } + public static recurringTasks(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); + } - public static tasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks', ...options }); } + public static tasks(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks', ...options }); + } - public static tasksKey(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); } + public static tasksKey(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); + } - public static get accountingCompanies2() { return AccountingCompanies; } + public static get accountingCompanies2() { + return AccountingCompanies; + } static accountingCompanyMemberships2 = AccountingCompanyMemberships; @@ -512,101 +734,129 @@ export class Odata { } export class MapIdentityApi { - public static get api() { return Api; } + public static get api() { + return Api; + } } export class User { - public static postApiV1UserRegister(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/register', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserLogin(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/login', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserRefresh(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/refresh', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static confirmEmail(options: Options) { return (options.client ?? client).get({ url: '/api/v1/user/confirmEmail', ...options }); } - - public static postApiV1UserResendConfirmationEmail(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/resendConfirmationEmail', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserForgotPassword(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/forgotPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserResetPassword(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/resetPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserManage2Fa(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/manage/2fa', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static getApiV1UserManageInfo(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/user/manage/info', ...options }); } - - public static postApiV1UserManageInfo(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/user/manage/info', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public static postApiV1UserLogout(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/user/logout', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public static postApiV1UserRegister(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserLogin(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserRefresh(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/refresh', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static confirmEmail(options: Options) { + return (options.client ?? client).get({ url: '/api/v1/user/confirmEmail', ...options }); + } + + public static postApiV1UserResendConfirmationEmail(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/resendConfirmationEmail', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserForgotPassword(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/forgotPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserResetPassword(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/resetPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserManage2Fa(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/manage/2fa', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static getApiV1UserManageInfo(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/user/manage/info', ...options }); + } + + public static postApiV1UserManageInfo(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/user/manage/info', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public static postApiV1UserLogout(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/user/logout', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } /** * @deprecated */ - public static getApiV1UserDocumentsSummary(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/user/documents-summary', ...options }); } + public static getApiV1UserDocumentsSummary(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/user/documents-summary', ...options }); + } - public static deleteApiV1User(options?: Options) { return (options?.client ?? client).delete({ url: '/api/v1/user', ...options }); } + public static deleteApiV1User(options?: Options) { + return (options?.client ?? client).delete({ url: '/api/v1/user', ...options }); + } static mapIdentityApi = MapIdentityApi; } @@ -622,125 +872,175 @@ export class Api { } export class AccountingCompanies { - public static postApiV1AccountingCompanies(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/accounting-companies', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static deleteApiV1AccountingCompaniesById(options: Options) { return (options.client ?? client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); } - - public static postApiV1AccountingCompaniesById(options: Options) { return (options.client ?? client).post({ - url: '/api/v1/accounting-companies/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public static count(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); } + public static postApiV1AccountingCompanies(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/accounting-companies', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static deleteApiV1AccountingCompaniesById(options: Options) { + return (options.client ?? client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); + } + + public static postApiV1AccountingCompaniesById(options: Options) { + return (options.client ?? client).post({ + url: '/api/v1/accounting-companies/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public static count(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); + } static api = Api; } export class BusinessesMemberships { - public static putApiV1BusinessMemberships(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/business-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public static putApiV1BusinessMemberships(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/business-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } } export class Dev { - public static getApiDev(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev', ...options }); } + public static getApiDev(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev', ...options }); + } - public static getApiDevReseedDb(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/reseed-db', ...options }); } + public static getApiDevReseedDb(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/reseed-db', ...options }); + } - public static getApiDevDbReset(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db-reset', ...options }); } + public static getApiDevDbReset(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/db-reset', ...options }); + } - public static getApiDevDbReset2(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/reset', ...options }); } + public static getApiDevDbReset2(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/db/reset', ...options }); + } - public static getApiDevDbCreate(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/create', ...options }); } + public static getApiDevDbCreate(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/db/create', ...options }); + } - public static getApiDevDbTouch(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/db/touch', ...options }); } + public static getApiDevDbTouch(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/db/touch', ...options }); + } - public static getApiDevSeed(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed', ...options }); } + public static getApiDevSeed(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/seed', ...options }); + } - public static getApiDevSeedAll(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed-all', ...options }); } + public static getApiDevSeedAll(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/seed-all', ...options }); + } - public static getApiDevSeedProd(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/seed-prod', ...options }); } + public static getApiDevSeedProd(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/seed-prod', ...options }); + } - public static getApiDevJobProcessRecurringTasks(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); } + public static getApiDevJobProcessRecurringTasks(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); + } - public static getApiDevNotificationsSendTest(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/notifications/send-test', ...options }); } + public static getApiDevNotificationsSendTest(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/notifications/send-test', ...options }); + } - public static getApiDevConfirmEmail(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/confirm-email', ...options }); } + public static getApiDevConfirmEmail(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/confirm-email', ...options }); + } - public static getApiDevEmailSendTest(options?: Options) { return (options?.client ?? client).get({ url: '/api/dev/email/send-test', ...options }); } + public static getApiDevEmailSendTest(options?: Options) { + return (options?.client ?? client).get({ url: '/api/dev/email/send-test', ...options }); + } } export class DeviceTokens { - public static deleteApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? client).delete({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public static putApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? client).put({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public static deleteApiV1NotificationsDeviceTokens(options?: Options) { + return (options?.client ?? client).delete({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public static putApiV1NotificationsDeviceTokens(options?: Options) { + return (options?.client ?? client).put({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } } export class Feedback { - public static postApiV1Feedback(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/feedback', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public static postApiV1Feedback(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/feedback', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } } export class Notifications { - public static postApiV1NotificationsTest(options?: Options) { return (options?.client ?? client).post({ - url: '/api/v1/notifications/test', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public static postApiV1NotificationsTest(options?: Options) { + return (options?.client ?? client).post({ + url: '/api/v1/notifications/test', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } } export class Root { - public static get(options?: Options) { return (options?.client ?? client).get({ url: '/', ...options }); } + public static get(options?: Options) { + return (options?.client ?? client).get({ url: '/', ...options }); + } } export class Users { - public static getApiV1UsersMe(options?: Options) { return (options?.client ?? client).get({ url: '/api/v1/users/me', ...options }); } - - public static patchApiV1UsersById(options: Options) { return (options.client ?? client).patch({ - url: '/api/v1/users/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public static getApiV1UsersMe(options?: Options) { + return (options?.client ?? client).get({ url: '/api/v1/users/me', ...options }); + } + + public static patchApiV1UsersById(options: Options) { + return (options.client ?? client).patch({ + url: '/api/v1/users/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } } diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts index 27d3debd2..914b48e0c 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts @@ -23,137 +23,223 @@ class HeyApiClient { constructor(args?: { client?: Client; - }) { this.client = args?.client ?? client; } + }) { + this.client = args?.client ?? client; + } } export class AccountingCompanies extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); + } } export class AccountingCompanyMemberships extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships/$count', ...options }); + } } export class BankAccounts extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts/$count', ...options }); + } } export class BusinessAccountantAssignments extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments/$count', ...options }); + } } export class BusinessDocumentActivities extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities/$count', ...options }); + } } export class BusinessDocuments extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments/$count', ...options }); + } } export class BusinessDocumentsSummaries extends HeyApiClient { /** * @deprecated */ - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries/$count', ...options }); + } } export class Businesses extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/$count', ...options }); + } - public key(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); } + public key(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses/{key}', ...options }); + } } export class BusinessSummaries extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries/$count', ...options }); + } } export class Counterparties extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties/$count', ...options }); + } } export class DataBoxCredentials extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials/$count', ...options }); + } } export class DocumentTypes extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes/$count', ...options }); + } } export class Invitations extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations/$count', ...options }); + } } export class Invoices extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices/$count', ...options }); + } } export class InvoiceSettings extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings/$count', ...options }); + } } export class Licenses extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses/$count', ...options }); + } } export class PersonalDocuments extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments/$count', ...options }); + } } export class RecurringTasks extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks/$count', ...options }); + } } export class Tasks extends HeyApiClient { - public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); } + public count(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/$count', ...options }); + } - public key(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); } + public key(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks/{key}', ...options }); + } } export class Odata extends HeyApiClient { - public accountingCompanies(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); } + public accountingCompanies(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies', ...options }); + } - public accountingCompanyMemberships(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); } + public accountingCompanyMemberships(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanyMemberships', ...options }); + } - public bankAccounts(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts', ...options }); } + public bankAccounts(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BankAccounts', ...options }); + } - public businessAccountantAssignments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); } + public businessAccountantAssignments(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessAccountantAssignments', ...options }); + } - public businessDocumentActivities(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); } + public businessDocumentActivities(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentActivities', ...options }); + } - public businessDocuments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); } + public businessDocuments(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocuments', ...options }); + } /** * @deprecated */ - public businessDocumentsSummaries(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); } + public businessDocumentsSummaries(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessDocumentsSummaries', ...options }); + } - public businesses(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses', ...options }); } + public businesses(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses', ...options }); + } - public businessesKey(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); } + public businessesKey(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Businesses({key})', ...options }); + } - public businessSummaries(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); } + public businessSummaries(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/BusinessSummaries', ...options }); + } - public counterparties(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties', ...options }); } + public counterparties(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Counterparties', ...options }); + } - public dataBoxCredentials(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); } + public dataBoxCredentials(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/DataBoxCredentials', ...options }); + } - public documentTypes(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); } + public documentTypes(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/DocumentTypes', ...options }); + } - public invitations(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations', ...options }); } + public invitations(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invitations', ...options }); + } - public invoices(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices', ...options }); } + public invoices(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Invoices', ...options }); + } - public invoiceSettings(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); } + public invoiceSettings(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/InvoiceSettings', ...options }); + } - public licenses(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses', ...options }); } + public licenses(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Licenses', ...options }); + } - public personalDocuments(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); } + public personalDocuments(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/PersonalDocuments', ...options }); + } - public recurringTasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); } + public recurringTasks(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/RecurringTasks', ...options }); + } - public tasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks', ...options }); } + public tasks(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks', ...options }); + } - public tasksKey(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); } + public tasksKey(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/odata/Tasks({key})', ...options }); + } accountingCompanies2 = new AccountingCompanies({ client: this.client }); @@ -195,7 +281,9 @@ export class Odata extends HeyApiClient { } export class User extends HeyApiClient { - public confirmEmail(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/user/confirmEmail', ...options }); } + public confirmEmail(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/user/confirmEmail', ...options }); + } } export class VVersionApiVersion extends HeyApiClient { @@ -225,7 +313,9 @@ class HeyApiRegistry { return instance; } - set(value: T, key?: string): void { this.instances.set(key ?? this.defaultKey, value); } + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } } export class Sdk extends HeyApiClient { @@ -234,496 +324,675 @@ export class Sdk extends HeyApiClient { constructor(args?: { client?: Client; key?: string; - }) { super(args); Sdk.__registry.set(this, args?.key); } - - public postApiV1AccountingCompanies(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/accounting-companies', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + }) { + super(args); + Sdk.__registry.set(this, args?.key); + } - public deleteApiV1AccountingCompaniesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); } + public postApiV1AccountingCompanies(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/accounting-companies', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1AccountingCompaniesById(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/accounting-companies/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public putApiV1AccountingCompanyMemberships(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/accounting-company-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public deleteApiV1AccountingCompaniesById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/accounting-companies/{id}', ...options }); + } - public deleteApiV1AccountingCompanyMembershipsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); } + public postApiV1AccountingCompaniesById(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/accounting-companies/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public putApiV1BankAccounts(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/bank-accounts', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public putApiV1AccountingCompanyMemberships(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/accounting-company-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public deleteApiV1BankAccountsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); } + public deleteApiV1AccountingCompanyMembershipsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/accounting-company-memberships/{id}', ...options }); + } - public putApiV1BusinessAccountantAssignments(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/business-accountant-assignments', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public putApiV1BankAccounts(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/bank-accounts', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public deleteApiV1BusinessAccountantAssignmentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); } + public deleteApiV1BankAccountsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/bank-accounts/{id}', ...options }); + } - public getApiV1BusinessDocumentsByIdRaw(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); } + public putApiV1BusinessAccountantAssignments(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/business-accountant-assignments', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1BusinessDocuments(options?: Options) { return (options?.client ?? this.client).post({ - ...formDataBodySerializer, - url: '/api/v1/business-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); } + public deleteApiV1BusinessAccountantAssignmentsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/business-accountant-assignments/{id}', ...options }); + } - public deleteApiV1BusinessDocumentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/business-documents/{id}', ...options }); } + public getApiV1BusinessDocumentsByIdRaw(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/business-documents/{id}/raw', ...options }); + } - public putApiV1BusinessDocumentsById(options: Options) { return (options.client ?? this.client).put({ - url: '/api/v1/business-documents/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1BusinessDocuments(options?: Options) { + return (options?.client ?? this.client).post({ + ...formDataBodySerializer, + url: '/api/v1/business-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); + } - public postApiV1BusinessDocumentsByIdApprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); } + public deleteApiV1BusinessDocumentsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/business-documents/{id}', ...options }); + } - public postApiV1BusinessDocumentsByIdUnapprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); } + public putApiV1BusinessDocumentsById(options: Options) { + return (options.client ?? this.client).put({ + url: '/api/v1/business-documents/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); } + public postApiV1BusinessDocumentsByIdApprove(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/approve', ...options }); + } - public postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/business-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1BusinessDocumentsByIdUnapprove(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/unapprove', ...options }); + } - public getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); } + public postApiV1BusinessDocumentsByIdMoveToPersonal(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/business-documents/{id}/move-to-personal', ...options }); + } - public postApiV1Businesses(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/businesses', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public postApiV1BusinessDocumentsByIdMoveToBusiness(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/business-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public deleteApiV1BusinessesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/businesses/{id}', ...options }); } + public getApiV1BusinessesByIdDocumentTypesSummary(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/businesses/{id}/document-types-summary', ...options }); + } - public putApiV1BusinessesById(options: Options) { return (options.client ?? this.client).put({ - url: '/api/v1/businesses/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public putApiV1BusinessesByIdContact(options: Options) { return (options.client ?? this.client).put({ - url: '/api/v1/businesses/{id}/contact', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1Businesses(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/businesses', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1BusinessesByIdDisconnect(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); } + public deleteApiV1BusinessesById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/businesses/{id}', ...options }); + } - public putApiV1BusinessMemberships(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/business-memberships', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public postApiV1Counterparties(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/counterparties', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public putApiV1BusinessesById(options: Options) { + return (options.client ?? this.client).put({ + url: '/api/v1/businesses/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public deleteApiV1CounterpartiesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/counterparties/{id}', ...options }); } + public putApiV1BusinessesByIdContact(options: Options) { + return (options.client ?? this.client).put({ + url: '/api/v1/businesses/{id}/contact', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public patchApiV1CounterpartiesById(options: Options) { return (options.client ?? this.client).patch({ - url: '/api/v1/counterparties/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public putApiV1DataBoxCredentials(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/data-box-credentials', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public postApiV1BusinessesByIdDisconnect(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/businesses/{id}/disconnect', ...options }); + } - public deleteApiV1DataBoxCredentialsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); } + public putApiV1BusinessMemberships(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/business-memberships', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public getApiDev(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev', ...options }); } + public postApiV1Counterparties(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/counterparties', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public getApiDevReseedDb(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/reseed-db', ...options }); } + public deleteApiV1CounterpartiesById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/counterparties/{id}', ...options }); + } - public getApiDevDbReset(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db-reset', ...options }); } + public patchApiV1CounterpartiesById(options: Options) { + return (options.client ?? this.client).patch({ + url: '/api/v1/counterparties/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public getApiDevDbReset2(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/reset', ...options }); } + public putApiV1DataBoxCredentials(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/data-box-credentials', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public getApiDevDbCreate(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/create', ...options }); } + public deleteApiV1DataBoxCredentialsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/data-box-credentials/{id}', ...options }); + } - public getApiDevDbTouch(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/db/touch', ...options }); } + public getApiDev(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev', ...options }); + } - public getApiDevSeed(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed', ...options }); } + public getApiDevReseedDb(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/reseed-db', ...options }); + } - public getApiDevSeedAll(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed-all', ...options }); } + public getApiDevDbReset(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/db-reset', ...options }); + } - public getApiDevSeedProd(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/seed-prod', ...options }); } + public getApiDevDbReset2(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/db/reset', ...options }); + } - public getApiDevJobProcessRecurringTasks(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); } + public getApiDevDbCreate(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/db/create', ...options }); + } - public getApiDevNotificationsSendTest(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/notifications/send-test', ...options }); } + public getApiDevDbTouch(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/db/touch', ...options }); + } - public getApiDevConfirmEmail(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/confirm-email', ...options }); } + public getApiDevSeed(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/seed', ...options }); + } - public getApiDevEmailSendTest(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/dev/email/send-test', ...options }); } + public getApiDevSeedAll(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/seed-all', ...options }); + } - public deleteApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? this.client).delete({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public putApiV1NotificationsDeviceTokens(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/notifications/device-tokens', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public postApiV1Feedback(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/feedback', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public postApiV1Invitations(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/invitations', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public postApiV1InvitationsByIdAccept(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/invitations/{id}/accept', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public getApiDevSeedProd(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/seed-prod', ...options }); + } - public postApiV1InvitationsByIdReject(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); } + public getApiDevJobProcessRecurringTasks(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/job/process-recurring-tasks', ...options }); + } - public deleteApiV1InvitationsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/invitations/{id}', ...options }); } + public getApiDevNotificationsSendTest(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/notifications/send-test', ...options }); + } - public patchApiV1InvitationsById(options: Options) { return (options.client ?? this.client).patch({ - url: '/api/v1/invitations/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public postApiV1Invoices(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/invoices', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public getApiDevConfirmEmail(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/confirm-email', ...options }); + } - public deleteApiV1InvoicesById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/invoices/{id}', ...options }); } + public getApiDevEmailSendTest(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/dev/email/send-test', ...options }); + } - public patchApiV1InvoicesById(options: Options) { return (options.client ?? this.client).patch({ - url: '/api/v1/invoices/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public deleteApiV1NotificationsDeviceTokens(options?: Options) { + return (options?.client ?? this.client).delete({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public getApiV1InvoicesByIdPreview(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); } + public putApiV1NotificationsDeviceTokens(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/notifications/device-tokens', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1InvoicesByIdSend(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/invoices/{id}/send', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1Feedback(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/feedback', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1InvoicesByIdSnapshot(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); } + public postApiV1Invitations(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/invitations', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public putApiV1InvoiceSettings(options?: Options) { return (options?.client ?? this.client).put({ - url: '/api/v1/invoice-settings', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public postApiV1NotificationsTest(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/notifications/test', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public postApiV1InvitationsByIdAccept(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/invitations/{id}/accept', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public getApiV1PersonalDocumentsByIdRaw(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); } + public postApiV1InvitationsByIdReject(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/invitations/{id}/reject', ...options }); + } - public postApiV1PersonalDocuments(options?: Options) { return (options?.client ?? this.client).post({ - ...formDataBodySerializer, - url: '/api/v1/personal-documents', - ...options, - headers: { - 'Content-Type': null, - ...options?.headers - } - }); } - - public postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/personal-documents/{id}/move-to-business', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public deleteApiV1InvitationsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/invitations/{id}', ...options }); + } - public deleteApiV1PersonalDocumentsById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); } + public patchApiV1InvitationsById(options: Options) { + return (options.client ?? this.client).patch({ + url: '/api/v1/invitations/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public getApiV1PersonalDocumentsSummary(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/personal-documents/summary', ...options }); } + public postApiV1Invoices(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/invoices', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1RecurringTasks(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/recurring-tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public deleteApiV1InvoicesById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/invoices/{id}', ...options }); + } - public deleteApiV1RecurringTasksById(options: Options) { return (options.client ?? this.client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); } + public patchApiV1InvoicesById(options: Options) { + return (options.client ?? this.client).patch({ + url: '/api/v1/invoices/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public patchApiV1RecurringTasksById(options: Options) { return (options.client ?? this.client).patch({ - url: '/api/v1/recurring-tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public getApiV1InvoicesByIdPreview(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/invoices/{id}/preview', ...options }); + } - public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/', ...options }); } + public postApiV1InvoicesByIdSend(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/invoices/{id}/send', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public postApiV1Tasks(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/tasks', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } - - public putApiV1TasksById(options: Options) { return (options.client ?? this.client).put({ - url: '/api/v1/tasks/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } - - public postApiV1TasksByIdSubmit(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/tasks/{id}/submit', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1InvoicesByIdSnapshot(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/invoices/{id}/snapshot', ...options }); + } - public postApiV1TasksByIdApprove(options: Options) { return (options.client ?? this.client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); } + public putApiV1InvoiceSettings(options?: Options) { + return (options?.client ?? this.client).put({ + url: '/api/v1/invoice-settings', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public postApiV1TasksByIdReject(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/tasks/{id}/reject', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public postApiV1NotificationsTest(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/notifications/test', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } - public getApiV1TasksByIdComments(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); } + public getApiV1PersonalDocumentsByIdRaw(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/personal-documents/{id}/raw', ...options }); + } - public getApiV1TasksByIdDocuments(options: Options) { return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); } + public postApiV1PersonalDocuments(options?: Options) { + return (options?.client ?? this.client).post({ + ...formDataBodySerializer, + url: '/api/v1/personal-documents', + ...options, + headers: { + 'Content-Type': null, + ...options?.headers + } + }); + } - public postApiV1UserRegister(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/register', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserLogin(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/login', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserRefresh(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/refresh', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserResendConfirmationEmail(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/resendConfirmationEmail', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserForgotPassword(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/forgotPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserResetPassword(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/resetPassword', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserManage2Fa(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/manage/2fa', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } + public postApiV1PersonalDocumentsByIdMoveToBusiness(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/personal-documents/{id}/move-to-business', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } - public getApiV1UserManageInfo(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/user/manage/info', ...options }); } + public deleteApiV1PersonalDocumentsById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/personal-documents/{id}', ...options }); + } - public postApiV1UserManageInfo(options: Options) { return (options.client ?? this.client).post({ - url: '/api/v1/user/manage/info', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } - }); } - - public postApiV1UserLogout(options?: Options) { return (options?.client ?? this.client).post({ - url: '/api/v1/user/logout', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options?.headers - } - }); } + public getApiV1PersonalDocumentsSummary(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/personal-documents/summary', ...options }); + } + + public postApiV1RecurringTasks(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/recurring-tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public deleteApiV1RecurringTasksById(options: Options) { + return (options.client ?? this.client).delete({ url: '/api/v1/recurring-tasks/{id}', ...options }); + } + + public patchApiV1RecurringTasksById(options: Options) { + return (options.client ?? this.client).patch({ + url: '/api/v1/recurring-tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public get(options?: Options) { + return (options?.client ?? this.client).get({ url: '/', ...options }); + } + + public postApiV1Tasks(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/tasks', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } + + public putApiV1TasksById(options: Options) { + return (options.client ?? this.client).put({ + url: '/api/v1/tasks/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public postApiV1TasksByIdSubmit(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/tasks/{id}/submit', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public postApiV1TasksByIdApprove(options: Options) { + return (options.client ?? this.client).post({ url: '/api/v1/tasks/{id}/approve', ...options }); + } + + public postApiV1TasksByIdReject(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/tasks/{id}/reject', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } + + public getApiV1TasksByIdComments(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/comments', ...options }); + } + + public getApiV1TasksByIdDocuments(options: Options) { + return (options.client ?? this.client).get({ url: '/api/v1/tasks/{id}/documents', ...options }); + } + + public postApiV1UserRegister(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserLogin(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserRefresh(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/refresh', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserResendConfirmationEmail(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/resendConfirmationEmail', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserForgotPassword(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/forgotPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserResetPassword(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/resetPassword', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserManage2Fa(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/manage/2fa', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public getApiV1UserManageInfo(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/user/manage/info', ...options }); + } + + public postApiV1UserManageInfo(options: Options) { + return (options.client ?? this.client).post({ + url: '/api/v1/user/manage/info', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); + } + + public postApiV1UserLogout(options?: Options) { + return (options?.client ?? this.client).post({ + url: '/api/v1/user/logout', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options?.headers + } + }); + } /** * @deprecated */ - public getApiV1UserDocumentsSummary(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/user/documents-summary', ...options }); } + public getApiV1UserDocumentsSummary(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/user/documents-summary', ...options }); + } - public deleteApiV1User(options?: Options) { return (options?.client ?? this.client).delete({ url: '/api/v1/user', ...options }); } + public deleteApiV1User(options?: Options) { + return (options?.client ?? this.client).delete({ url: '/api/v1/user', ...options }); + } - public getApiV1UsersMe(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/users/me', ...options }); } + public getApiV1UsersMe(options?: Options) { + return (options?.client ?? this.client).get({ url: '/api/v1/users/me', ...options }); + } - public patchApiV1UsersById(options: Options) { return (options.client ?? this.client).patch({ - url: '/api/v1/users/{id}', - ...options, - headers: { - 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', - ...options.headers - } - }); } + public patchApiV1UsersById(options: Options) { + return (options.client ?? this.client).patch({ + url: '/api/v1/users/{id}', + ...options, + headers: { + 'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true', + ...options.headers + } + }); + } api = new Api({ client: this.client }); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts index eee19f81a..56ce2c581 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts @@ -49,38 +49,47 @@ export const sessionList = (options?: Opti export const sessionCreate = (parameters?: { parentID?: string; title?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'parentID' }, { in: 'body', key: 'title' }] }]); return (options?.client ?? client).post({ - url: '/session', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'parentID' }, { in: 'body', key: 'title' }] }]); + return (options?.client ?? client).post({ + url: '/session', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Delete a session and all its data */ export const sessionDelete = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).delete({ - url: '/session/{id}', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).delete({ + url: '/session/{id}', + ...options, + ...params + }); +}; /** * Get session */ export const sessionGet = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).get({ - url: '/session/{id}', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}', + ...options, + ...params + }); +}; /** * Update session properties @@ -88,27 +97,33 @@ export const sessionGet = (parameters: { export const sessionUpdate = (parameters: { id: string; title?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'body', key: 'title' }] }]); return (options?.client ?? client).patch({ - url: '/session/{id}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'body', key: 'title' }] }]); + return (options?.client ?? client).patch({ + url: '/session/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Get a session's children */ export const sessionChildren = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).get({ - url: '/session/{id}/children', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/children', + ...options, + ...params + }); +}; /** * Analyze the app and create an AGENTS.md file @@ -118,54 +133,66 @@ export const sessionInit = (parameters: { messageID?: string; providerID?: string; modelID?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/init', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/init', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Abort a session */ export const sessionAbort = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).post({ - url: '/session/{id}/abort', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/abort', + ...options, + ...params + }); +}; /** * Unshare the session */ export const sessionUnshare = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).delete({ - url: '/session/{id}/share', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).delete({ + url: '/session/{id}/share', + ...options, + ...params + }); +}; /** * Share a session */ export const sessionShare = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).post({ - url: '/session/{id}/share', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/share', + ...options, + ...params + }); +}; /** * Summarize the session @@ -174,31 +201,37 @@ export const sessionSummarize = (parameter id: string; providerID?: string; modelID?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/summarize', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/summarize', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * List messages for a session */ export const sessionMessages = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).get({ - url: '/session/{id}/message', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/message', + ...options, + ...params + }); +}; /** * Create and send a new message to a session @@ -220,25 +253,28 @@ export const sessionChat = (parameters: { } & FilePartInput) | ({ type: 'agent'; } & AgentPartInput)>; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'providerID' }, - { in: 'body', key: 'modelID' }, - { in: 'body', key: 'agent' }, - { in: 'body', key: 'system' }, - { in: 'body', key: 'tools' }, - { in: 'body', key: 'parts' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/message', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'system' }, + { in: 'body', key: 'tools' }, + { in: 'body', key: 'parts' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/message', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Get a message from a session @@ -246,11 +282,14 @@ export const sessionChat = (parameters: { export const sessionMessage = (parameters: { id: string; messageID: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'path', key: 'messageID' }] }]); return (options?.client ?? client).get({ - url: '/session/{id}/message/{messageID}', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'path', key: 'messageID' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/message/{messageID}', + ...options, + ...params + }); +}; /** * Run a shell command @@ -259,20 +298,23 @@ export const sessionShell = (parameters: { id: string; agent?: string; command?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'agent' }, - { in: 'body', key: 'command' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/shell', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'command' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/shell', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Revert a message @@ -281,31 +323,37 @@ export const sessionRevert = (parameters: id: string; messageID?: string; partID?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'body', key: 'messageID' }, - { in: 'body', key: 'partID' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/revert', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'partID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/revert', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Restore all reverted messages */ export const sessionUnrevert = (parameters: { id: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); return (options?.client ?? client).post({ - url: '/session/{id}/unrevert', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/unrevert', + ...options, + ...params + }); +}; /** * Respond to a permission request @@ -314,20 +362,23 @@ export const postSessionByIdPermissionsByPermissionId = ) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'path', key: 'id' }, - { in: 'path', key: 'permissionID' }, - { in: 'body', key: 'response' } - ] }]); return (options?.client ?? client).post({ - url: '/session/{id}/permissions/{permissionID}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'path', key: 'permissionID' }, + { in: 'body', key: 'response' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/permissions/{permissionID}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * List all providers @@ -339,44 +390,56 @@ export const configProviders = (options?: */ export const findText = (parameters: { pattern: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'pattern' }] }]); return (options?.client ?? client).get({ - url: '/find', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'pattern' }] }]); + return (options?.client ?? client).get({ + url: '/find', + ...options, + ...params + }); +}; /** * Find files */ export const findFiles = (parameters: { query: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); return (options?.client ?? client).get({ - url: '/find/file', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); + return (options?.client ?? client).get({ + url: '/find/file', + ...options, + ...params + }); +}; /** * Find workspace symbols */ export const findSymbols = (parameters: { query: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); return (options?.client ?? client).get({ - url: '/find/symbol', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); + return (options?.client ?? client).get({ + url: '/find/symbol', + ...options, + ...params + }); +}; /** * Read a file */ export const fileRead = (parameters: { path: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'path' }] }]); return (options?.client ?? client).get({ - url: '/file', - ...options, - ...params -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'path' }] }]); + return (options?.client ?? client).get({ + url: '/file', + ...options, + ...params + }); +}; /** * Get file status @@ -393,21 +456,24 @@ export const appLog = (parameters?: { extra?: { [key: string]: unknown; }; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'body', key: 'service' }, - { in: 'body', key: 'level' }, - { in: 'body', key: 'message' }, - { in: 'body', key: 'extra' } - ] }]); return (options?.client ?? client).post({ - url: '/log', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'body', key: 'service' }, + { in: 'body', key: 'level' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'extra' } + ] }]); + return (options?.client ?? client).post({ + url: '/log', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * List all agents @@ -419,16 +485,19 @@ export const appAgents = (options?: Option */ export const tuiAppendPrompt = (parameters?: { text?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'text' }] }]); return (options?.client ?? client).post({ - url: '/tui/append-prompt', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'text' }] }]); + return (options?.client ?? client).post({ + url: '/tui/append-prompt', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Open the help dialog @@ -465,16 +534,19 @@ export const tuiClearPrompt = (options?: O */ export const tuiExecuteCommand = (parameters?: { command?: string; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'command' }] }]); return (options?.client ?? client).post({ - url: '/tui/execute-command', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'command' }] }]); + return (options?.client ?? client).post({ + url: '/tui/execute-command', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Show a toast notification in the TUI @@ -483,20 +555,23 @@ export const tuiShowToast = (parameters?: title?: string; message?: string; variant?: 'info' | 'success' | 'warning' | 'error'; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [ - { in: 'body', key: 'title' }, - { in: 'body', key: 'message' }, - { in: 'body', key: 'variant' } - ] }]); return (options?.client ?? client).post({ - url: '/tui/show-toast', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'body', key: 'title' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'variant' } + ] }]); + return (options?.client ?? client).post({ + url: '/tui/show-toast', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; /** * Set authentication credentials @@ -504,13 +579,16 @@ export const tuiShowToast = (parameters?: export const authSet = (parameters: { id: string; auth?: Auth; -}, options?: Options) => { const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { key: 'auth', map: 'body' }] }]); return (options?.client ?? client).put({ - url: '/auth/{id}', - ...options, - ...params, - headers: { - 'Content-Type': 'application/json', - ...options?.headers, - ...params.headers - } -}); }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { key: 'auth', map: 'body' }] }]); + return (options?.client ?? client).put({ + url: '/auth/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts index f6a63bdfb..e44daf15b 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -293,7 +293,9 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts index e34794d23..bc91971e3 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -293,7 +293,9 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts index aadb23437..1563aa737 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -3,16 +3,24 @@ import * as z from 'zod/v4-mini'; export const zFoo = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zBar = z.object({ - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.lazy((): any => zBaz)); } + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.lazy((): any => zBaz)); + } }); export const zBaz = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zQux = z.union([ diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts index 72313099e..b6370f67c 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -391,7 +391,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts index 9644b01c7..cfa348c12 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -7,8 +7,12 @@ export const zBaz = z._default(z.readonly(z.string().check(z.regex(/foo\nbar/))) export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts index 0dc77975f..3b9c62d9d 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -3,16 +3,24 @@ import { z } from 'zod/v4'; export const zFoo = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zBar = z.object({ - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.lazy((): any => zBaz)); } + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.lazy((): any => zBaz)); + } }); export const zBaz = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zQux = z.union([ diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts index f2fa36f97..3f328c90d 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -391,7 +391,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts index 6bdc62661..0daf7a0a6 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -7,8 +7,12 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts index 4e4c40e30..7ca3c6f97 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -394,7 +394,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index ee92d9cc8..dda5d4694 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -3,7 +3,9 @@ import * as z from 'zod/v4-mini'; export const zBar = z.object({ - get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } + get bar() { + return z.optional(z.array(z.lazy((): any => zBar))); + } }); export const zFoo = z.object({ diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index d95cd6972..8ecedac9a 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index daeeaf964..789eb6d8a 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -16,10 +16,14 @@ export const zFoo = z._default(z.union([ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/)).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { - description: 'This is baz property.' - })); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); + }, qux: z._default(z.optional(z.int().check(z.gt(0)).register(z.globalRegistry, { description: 'This is qux property.' })), 0) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index ddfe89ba5..a8353e832 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -18,8 +18,12 @@ export type QuxZodType = z.infer; export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts index 667648417..304d89bb5 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts index e1b593189..445c9f103 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -394,7 +394,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index c46324e4c..7bd218fcb 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -3,7 +3,9 @@ import { z } from 'zod/v4'; export const zBar = z.object({ - get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } + get bar() { + return z.optional(z.array(z.lazy((): any => zBar))); + } }); export const zFoo = z.object({ diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index 694d2be0f..5781d917f 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index 6ddadeae6..c3c88f810 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -16,10 +16,14 @@ export const zFoo = z.union([ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { - description: 'This is baz property.' - })); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); + }, qux: z.optional(z.int().gt(0).register(z.globalRegistry, { description: 'This is qux property.' })).default(0) diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index ef33309b4..b2d4ca717 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -18,8 +18,12 @@ export type QuxZodType = z.infer; export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts index 063713a58..15238b2a7 100644 --- a/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v3/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts index b2d142120..e00616a4b 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/mini/default/zod.gen.ts @@ -293,7 +293,9 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts index f5bab7f05..f2848ba82 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/2.0.x/v4/default/zod.gen.ts @@ -293,7 +293,9 @@ export const zModelWithDictionary = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts index 1e156472c..7cced9697 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/circular/zod.gen.ts @@ -3,16 +3,24 @@ import * as z from 'zod/mini'; export const zFoo = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zBar = z.object({ - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.lazy((): any => zBaz)); } + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.lazy((): any => zBaz)); + } }); export const zBaz = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zQux = z.union([ diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts index e69859e42..9734ab8f1 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/default/zod.gen.ts @@ -391,7 +391,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts index c71c7449e..7a5c78486 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/mini/validators/zod.gen.ts @@ -7,8 +7,12 @@ export const zBaz = z._default(z.readonly(z.string().check(z.regex(/foo\nbar/))) export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts index 160ab1e1e..8da477654 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/circular/zod.gen.ts @@ -3,16 +3,24 @@ import { z } from 'zod'; export const zFoo = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zBar = z.object({ - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.lazy((): any => zBaz)); } + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.lazy((): any => zBaz)); + } }); export const zBaz = z.object({ - get quux() { return z.optional(z.lazy((): any => zQuux)); } + get quux() { + return z.optional(z.lazy((): any => zQuux)); + } }); export const zQux = z.union([ diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts index dba143ae4..925cc7bf2 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/default/zod.gen.ts @@ -391,7 +391,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts index 3a803fda8..944f96e47 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.0.x/v4/validators/zod.gen.ts @@ -7,8 +7,12 @@ export const zBaz = z.string().regex(/foo\nbar/).readonly().default('baz'); export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts index 69ab0decd..45ebeaf53 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/default/zod.gen.ts @@ -394,7 +394,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts index 3d850cb99..ee8b0c76e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-circular-ref/zod.gen.ts @@ -3,7 +3,9 @@ import * as z from 'zod/mini'; export const zBar = z.object({ - get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } + get bar() { + return z.optional(z.array(z.lazy((): any => zBar))); + } }); export const zFoo = z.object({ diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts index 781fa9b97..9ac32990c 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-dates/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts index c58e0e748..e263d218e 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-metadata/zod.gen.ts @@ -16,10 +16,14 @@ export const zFoo = z._default(z.union([ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/)).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { - description: 'This is baz property.' - })); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); + }, qux: z._default(z.optional(z.int().check(z.gt(0)).register(z.globalRegistry, { description: 'This is qux property.' })), 0) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts index 543de1610..669174c0a 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators-types/zod.gen.ts @@ -18,8 +18,12 @@ export type QuxZodType = z.infer; export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts index dcff7fd86..b786abd75 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/mini/validators/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z._default(z.union([ z.object({ foo: z.optional(z.string().check(z.regex(/^\d{3}-\d{2}-\d{4}$/))), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z._default(z.optional(z.int().check(z.gt(0))), 0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts index b8cbda150..d490dd142 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/default/zod.gen.ts @@ -394,7 +394,9 @@ export const zDeprecatedModel = z.object({ * This is a model with one property containing a circular reference */ export const zModelWithCircularReference = z.object({ - get prop() { return z.optional(z.lazy((): any => zModelWithCircularReference)); } + get prop() { + return z.optional(z.lazy((): any => zModelWithCircularReference)); + } }); /** diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts index cac0d9b3e..b62812954 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-circular-ref/zod.gen.ts @@ -3,7 +3,9 @@ import { z } from 'zod'; export const zBar = z.object({ - get bar() { return z.optional(z.array(z.lazy((): any => zBar))); } + get bar() { + return z.optional(z.array(z.lazy((): any => zBar))); + } }); export const zFoo = z.object({ diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts index ca8abb2a0..515d9ad8b 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-dates/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts index 834510109..995ccdb8a 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-metadata/zod.gen.ts @@ -16,10 +16,14 @@ export const zFoo = z.union([ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/).register(z.globalRegistry, { description: 'This is foo property.' })), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { - description: 'This is baz property.' - })); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo)).register(z.globalRegistry, { + description: 'This is baz property.' + })); + }, qux: z.optional(z.int().gt(0).register(z.globalRegistry, { description: 'This is qux property.' })).default(0) diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts index 7d7a5eabd..033e85ced 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators-types/zod.gen.ts @@ -18,8 +18,12 @@ export type QuxZodType = z.infer; export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts index c3b743103..f73a35bac 100644 --- a/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts +++ b/packages/openapi-ts-tests/zod/v4/__snapshots__/3.1.x/v4/validators/zod.gen.ts @@ -14,8 +14,12 @@ export const zQux = z.record(z.string(), z.object({ export const zFoo = z.union([ z.object({ foo: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)), - get bar() { return z.optional(z.lazy((): any => zBar)); }, - get baz() { return z.optional(z.array(z.lazy((): any => zFoo))); }, + get bar() { + return z.optional(z.lazy((): any => zBar)); + }, + get baz() { + return z.optional(z.array(z.lazy((): any => zFoo))); + }, qux: z.optional(z.int().gt(0)).default(0) }), z.null() diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index c3e23e2b1..25a3e3a8a 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -118,7 +118,7 @@ class ImplFuncTsDsl extends Mixed { : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction { - const body = this.$node(new BlockTsDsl(...this._do)); + const body = this.$node(new BlockTsDsl(...this._do).pretty()); if (this.mode === 'decl') { if (!this.name) throw new Error('Function declaration requires a name'); diff --git a/packages/openapi-ts/src/ts-dsl/decl/getter.ts b/packages/openapi-ts/src/ts-dsl/decl/getter.ts index 04deca2dc..a79f03c6c 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/getter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/getter.ts @@ -62,7 +62,7 @@ export class GetterTsDsl extends Mixed { this.name, this.$params(), undefined, - this.$node(new BlockTsDsl(...this._do)), + this.$node(new BlockTsDsl(...this._do).pretty()), ); return this.$docs(node); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/init.ts b/packages/openapi-ts/src/ts-dsl/decl/init.ts index 71ec9b2c2..41df7fd65 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/init.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/init.ts @@ -42,7 +42,7 @@ export class InitTsDsl extends Mixed { const node = ts.factory.createConstructorDeclaration( [...this.$decorators(), ...this.modifiers], this.$params(), - this.$node(new BlockTsDsl(...this._do)), + this.$node(new BlockTsDsl(...this._do).pretty()), ); return this.$docs(node); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/method.ts b/packages/openapi-ts/src/ts-dsl/decl/method.ts index 3def22f61..0cdc987c8 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/method.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/method.ts @@ -79,7 +79,7 @@ export class MethodTsDsl extends Mixed { this.$generics(), this.$params(), this.$type(this._returns), - this.$node(new BlockTsDsl(...this._do)), + this.$node(new BlockTsDsl(...this._do).pretty()), ); return this.$docs(node); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/setter.ts b/packages/openapi-ts/src/ts-dsl/decl/setter.ts index 19c7538dc..3b8845b90 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/setter.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/setter.ts @@ -61,7 +61,7 @@ export class SetterTsDsl extends Mixed { [...this.$decorators(), ...this.modifiers], this.name, this.$params(), - this.$node(new BlockTsDsl(...this._do)), + this.$node(new BlockTsDsl(...this._do).pretty()), ); return this.$docs(node); } diff --git a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts index 6be175036..d5dbce0d6 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/typeof.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/typeof.ts @@ -4,7 +4,7 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { OperatorMixin } from '../mixins/operator'; -import { registerLazyAccessTypeOfExprFactory } from '../mixins/type-expr'; +import { setTypeOfExprFactory } from '../mixins/type-expr'; const Mixed = OperatorMixin(TsDsl); @@ -28,4 +28,4 @@ export class TypeOfExprTsDsl extends Mixed { } } -registerLazyAccessTypeOfExprFactory((...args) => new TypeOfExprTsDsl(...args)); +setTypeOfExprFactory((...args) => new TypeOfExprTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts index 8da34667a..d9c97fa03 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/layout.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/layout.ts @@ -44,6 +44,7 @@ export function LayoutMixin>( if (this.layout === undefined) { this.layout = Layout.DEFAULT_THRESHOLD; } + if (count === 0) return false; return typeof this.layout === 'number' ? count >= this.layout : this.layout; diff --git a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts index 92b6c7579..5823b5ceb 100644 --- a/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts +++ b/packages/openapi-ts/src/ts-dsl/mixins/type-expr.ts @@ -14,10 +14,8 @@ type TypeExprFactory = ( fn?: (t: TypeExprTsDsl) => void, ) => TypeExprTsDsl; let typeExprFactory: TypeExprFactory | undefined; -/** Registers the TypeExpr DSL factory after its module has finished evaluating. */ -export function registerLazyAccessTypeExprFactory( - factory: TypeExprFactory, -): void { +/** Lazy register the factory to avoid circular imports. */ +export function setTypeExprFactory(factory: TypeExprFactory): void { typeExprFactory = factory; } @@ -26,10 +24,8 @@ type TypeIdxFactory = ( index: string | number | MaybeTsDsl, ) => TypeIdxTsDsl; let typeIdxFactory: TypeIdxFactory | undefined; -/** Registers the TypeIdxTsDsl DSL factory after its module has finished evaluating. */ -export function registerLazyAccessTypeIdxFactory( - factory: TypeIdxFactory, -): void { +/** Lazy register the factory to avoid circular imports. */ +export function setTypeIdxFactory(factory: TypeIdxFactory): void { typeIdxFactory = factory; } @@ -37,19 +33,15 @@ type TypeOfExprFactory = ( expr: string | MaybeTsDsl, ) => TypeOfExprTsDsl; let typeOfExprFactory: TypeOfExprFactory | undefined; -/** Registers the TypeOfExpr DSL factory after its module has finished evaluating. */ -export function registerLazyAccessTypeOfExprFactory( - factory: TypeOfExprFactory, -): void { +/** Lazy register the factory to avoid circular imports. */ +export function setTypeOfExprFactory(factory: TypeOfExprFactory): void { typeOfExprFactory = factory; } type TypeOperatorFactory = () => TypeOperatorTsDsl; let typeOperatorFactory: TypeOperatorFactory | undefined; -/** Registers the TypeOperatorTsDsl DSL factory after its module has finished evaluating. */ -export function registerLazyAccessTypeOperatorFactory( - factory: TypeOperatorFactory, -): void { +/** Lazy register the factory to avoid circular imports. */ +export function setTypeOperatorFactory(factory: TypeOperatorFactory): void { typeOperatorFactory = factory; } @@ -57,10 +49,8 @@ type TypeQueryFactory = ( expr: string | MaybeTsDsl, ) => TypeQueryTsDsl; let typeQueryFactory: TypeQueryFactory | undefined; -/** Registers the TypeQuery DSL factory after its module has finished evaluating. */ -export function registerLazyAccessTypeQueryFactory( - factory: TypeQueryFactory, -): void { +/** Lazy register the factory to avoid circular imports. */ +export function setTypeQueryFactory(factory: TypeQueryFactory): void { typeQueryFactory = factory; } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/if.ts b/packages/openapi-ts/src/ts-dsl/stmt/if.ts index d23c2d4db..37b521853 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/if.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/if.ts @@ -53,8 +53,10 @@ export class IfTsDsl extends Mixed { return ts.factory.createIfStatement( this.$node(this._condition), - this.$node(new BlockTsDsl(...this._do)), - this._else ? this.$node(new BlockTsDsl(this._else)) : undefined, + this.$node(new BlockTsDsl(...this._do).pretty()), + this._else + ? this.$node(new BlockTsDsl(...this._else).pretty()) + : undefined, ); } } diff --git a/packages/openapi-ts/src/ts-dsl/stmt/try.ts b/packages/openapi-ts/src/ts-dsl/stmt/try.ts index 0563ab71a..e053351ac 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/try.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/try.ts @@ -84,14 +84,16 @@ export class TryTsDsl extends Mixed { : undefined; return ts.factory.createTryStatement( - this.$node(new BlockTsDsl(...this._try)), + this.$node(new BlockTsDsl(...this._try).pretty()), ts.factory.createCatchClause( catchParam ? ts.factory.createVariableDeclaration(catchParam) : undefined, - this.$node(new BlockTsDsl(...(this._catch ?? []))), + this.$node(new BlockTsDsl(...(this._catch ?? [])).pretty()), ), - this._finally ? this.$node(new BlockTsDsl(...this._finally)) : undefined, + this._finally + ? this.$node(new BlockTsDsl(...this._finally).pretty()) + : undefined, ); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/expr.ts b/packages/openapi-ts/src/ts-dsl/type/expr.ts index af3035673..ddb804a08 100644 --- a/packages/openapi-ts/src/ts-dsl/type/expr.ts +++ b/packages/openapi-ts/src/ts-dsl/type/expr.ts @@ -4,10 +4,7 @@ import ts from 'typescript'; import { TypeTsDsl } from '../base'; import { TypeArgsMixin } from '../mixins/type-args'; -import { - registerLazyAccessTypeExprFactory, - TypeExprMixin, -} from '../mixins/type-expr'; +import { setTypeExprFactory, TypeExprMixin } from '../mixins/type-expr'; import { TypeAttrTsDsl } from './attr'; export type TypeExprName = Symbol | string; @@ -60,7 +57,7 @@ export class TypeExprTsDsl extends Mixed { } } -registerLazyAccessTypeExprFactory( +setTypeExprFactory( (...args) => new TypeExprTsDsl(...(args as ConstructorParameters)), ); diff --git a/packages/openapi-ts/src/ts-dsl/type/idx.ts b/packages/openapi-ts/src/ts-dsl/type/idx.ts index 55f1dea02..84905cfb7 100644 --- a/packages/openapi-ts/src/ts-dsl/type/idx.ts +++ b/packages/openapi-ts/src/ts-dsl/type/idx.ts @@ -3,10 +3,7 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { - registerLazyAccessTypeIdxFactory, - TypeExprMixin, -} from '../mixins/type-expr'; +import { setTypeIdxFactory, TypeExprMixin } from '../mixins/type-expr'; type Base = string | MaybeTsDsl; type Index = string | number | MaybeTsDsl; @@ -49,4 +46,4 @@ export class TypeIdxTsDsl extends Mixed { } } -registerLazyAccessTypeIdxFactory((...args) => new TypeIdxTsDsl(...args)); +setTypeIdxFactory((...args) => new TypeIdxTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/type/operator.ts b/packages/openapi-ts/src/ts-dsl/type/operator.ts index 07c1cc54f..4090383f3 100644 --- a/packages/openapi-ts/src/ts-dsl/type/operator.ts +++ b/packages/openapi-ts/src/ts-dsl/type/operator.ts @@ -3,7 +3,7 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { registerLazyAccessTypeOperatorFactory } from '../mixins/type-expr'; +import { setTypeOperatorFactory } from '../mixins/type-expr'; type Op = | ts.SyntaxKind.KeyOfKeyword @@ -92,6 +92,4 @@ export class TypeOperatorTsDsl extends Mixed { } } -registerLazyAccessTypeOperatorFactory( - (...args) => new TypeOperatorTsDsl(...args), -); +setTypeOperatorFactory((...args) => new TypeOperatorTsDsl(...args)); diff --git a/packages/openapi-ts/src/ts-dsl/type/query.ts b/packages/openapi-ts/src/ts-dsl/type/query.ts index ff4d27be1..c5251b519 100644 --- a/packages/openapi-ts/src/ts-dsl/type/query.ts +++ b/packages/openapi-ts/src/ts-dsl/type/query.ts @@ -3,10 +3,7 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TypeTsDsl } from '../base'; -import { - registerLazyAccessTypeQueryFactory, - TypeExprMixin, -} from '../mixins/type-expr'; +import { setTypeQueryFactory, TypeExprMixin } from '../mixins/type-expr'; const Mixed = TypeExprMixin(TypeTsDsl); @@ -31,4 +28,4 @@ export class TypeQueryTsDsl extends Mixed { } } -registerLazyAccessTypeQueryFactory((...args) => new TypeQueryTsDsl(...args)); +setTypeQueryFactory((...args) => new TypeQueryTsDsl(...args)); From ac638b78f4f18b24d351df06a39dcc8b1bf4a86c Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 09:08:16 +0800 Subject: [PATCH 08/15] chore: preserve types order --- dev/openapi-ts.config.ts | 2 +- .../src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- .../openapi-ts-axios/src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- .../openapi-ts-fetch/src/client/types.gen.ts | 8 +-- .../openapi-ts-ky/src/client/types.gen.ts | 8 +-- .../openapi-ts-next/src/client/types.gen.ts | 8 +-- .../openapi-ts-ofetch/src/client/types.gen.ts | 8 +-- .../openapi-ts-openai/src/client/types.gen.ts | 40 ++++++------- .../src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- .../src/client/types.gen.ts | 8 +-- packages/codegen-core/src/files/file.ts | 2 +- packages/codegen-core/src/nodes/registry.ts | 28 +++++----- packages/codegen-core/src/nodes/types.d.ts | 19 +++++-- packages/codegen-core/src/planner/analyzer.ts | 2 +- .../additional-properties-false/types.gen.ts | 8 +-- .../additional-properties-true/types.gen.ts | 8 +-- .../body-response-text-plain/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../2.0.x/enum-names-values/types.gen.ts | 8 +-- .../2.0.x/exclude-deprecated/types.gen.ts | 8 +-- .../__snapshots__/2.0.x/external/types.gen.ts | 8 +-- .../2.0.x/form-data/types.gen.ts | 8 +-- .../common/default-class/types.gen.ts | 8 +-- .../@angular/common/default/types.gen.ts | 8 +-- .../sdk-nested-classes-instance/types.gen.ts | 8 +-- .../sdk-nested-classes/types.gen.ts | 8 +-- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +-- .../@hey-api/sdk/instance/types.gen.ts | 8 +-- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +-- .../type-format-valibot/types.gen.ts | 8 +-- .../transformers/type-format-zod/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../transforms-read-write-ignore/types.gen.ts | 8 +-- .../@pinia/colada/asClass/types.gen.ts | 8 +-- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +-- .../asClass/types.gen.ts | 8 +-- .../axios/types.gen.ts | 8 +-- .../fetch/types.gen.ts | 8 +-- .../name-builder/types.gen.ts | 8 +-- .../react-query/asClass/types.gen.ts | 8 +-- .../@tanstack/react-query/axios/types.gen.ts | 8 +-- .../@tanstack/react-query/fetch/types.gen.ts | 8 +-- .../react-query/name-builder/types.gen.ts | 8 +-- .../solid-query/asClass/types.gen.ts | 8 +-- .../@tanstack/solid-query/axios/types.gen.ts | 8 +-- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +-- .../solid-query/name-builder/types.gen.ts | 8 +-- .../svelte-query/asClass/types.gen.ts | 8 +-- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +-- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +-- .../svelte-query/name-builder/types.gen.ts | 8 +-- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +-- .../@tanstack/vue-query/axios/types.gen.ts | 8 +-- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +-- .../vue-query/name-builder/types.gen.ts | 8 +-- .../plugins/fastify/default/types.gen.ts | 8 +-- .../2.0.x/schema-unknown/types.gen.ts | 8 +-- .../2.0.x/security-api-key/types.gen.ts | 8 +-- .../2.0.x/security-basic/types.gen.ts | 8 +-- .../2.0.x/security-false/types.gen.ts | 8 +-- .../2.0.x/security-oauth2/types.gen.ts | 8 +-- .../2.0.x/servers-base-path/types.gen.ts | 8 +-- .../2.0.x/servers-host/types.gen.ts | 8 +-- .../__snapshots__/2.0.x/servers/types.gen.ts | 8 +-- .../2.0.x/transforms-read-write/types.gen.ts | 8 +-- .../additional-properties-false/types.gen.ts | 8 +-- .../additional-properties-true/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../array-items-one-of-length-1/types.gen.ts | 8 +-- .../3.0.x/array-nested-one-of/types.gen.ts | 8 +-- .../body-response-text-plain/types.gen.ts | 8 +-- .../3.0.x/case-PascalCase/types.gen.ts | 8 +-- .../3.0.x/case-camelCase/types.gen.ts | 8 +-- .../3.0.x/case-preserve/types.gen.ts | 8 +-- .../3.0.x/case-snake_case/types.gen.ts | 8 +-- .../components-request-bodies/types.gen.ts | 8 +-- .../3.0.x/content-binary/types.gen.ts | 8 +-- .../3.0.x/content-types/types.gen.ts | 8 +-- .../3.0.x/discriminator-all-of/types.gen.ts | 8 +-- .../3.0.x/discriminator-any-of/types.gen.ts | 8 +-- .../discriminator-mapped-many/types.gen.ts | 8 +-- .../3.0.x/discriminator-one-of/types.gen.ts | 8 +-- .../3.0.x/enum-escape/types.gen.ts | 8 +-- .../3.0.x/enum-inline-javascript/types.gen.ts | 8 +-- .../3.0.x/enum-inline-typescript/types.gen.ts | 8 +-- .../3.0.x/enum-inline/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../3.0.x/enum-names-values/types.gen.ts | 8 +-- .../3.0.x/enum-null/types.gen.ts | 8 +-- .../3.0.x/exclude-deprecated/types.gen.ts | 8 +-- .../__snapshots__/3.0.x/external/types.gen.ts | 8 +-- .../3.0.x/internal-name-conflict/types.gen.ts | 8 +-- .../3.0.x/operation-204/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../parameter-explode-false/types.gen.ts | 8 +-- .../common/default-class/types.gen.ts | 8 +-- .../@angular/common/default/types.gen.ts | 8 +-- .../sdk-nested-classes-instance/types.gen.ts | 8 +-- .../sdk-nested-classes/types.gen.ts | 8 +-- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +-- .../@hey-api/sdk/instance/types.gen.ts | 8 +-- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +-- .../type-format-valibot/types.gen.ts | 8 +-- .../transformers/type-format-zod/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../transforms-read-write-ignore/types.gen.ts | 8 +-- .../@pinia/colada/asClass/types.gen.ts | 8 +-- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +-- .../asClass/types.gen.ts | 8 +-- .../axios/types.gen.ts | 8 +-- .../fetch/types.gen.ts | 8 +-- .../name-builder/types.gen.ts | 8 +-- .../react-query/asClass/types.gen.ts | 8 +-- .../@tanstack/react-query/axios/types.gen.ts | 8 +-- .../@tanstack/react-query/fetch/types.gen.ts | 8 +-- .../react-query/name-builder/types.gen.ts | 8 +-- .../solid-query/asClass/types.gen.ts | 8 +-- .../@tanstack/solid-query/axios/types.gen.ts | 8 +-- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +-- .../solid-query/name-builder/types.gen.ts | 8 +-- .../svelte-query/asClass/types.gen.ts | 8 +-- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +-- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +-- .../svelte-query/name-builder/types.gen.ts | 8 +-- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +-- .../@tanstack/vue-query/axios/types.gen.ts | 8 +-- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +-- .../vue-query/name-builder/types.gen.ts | 8 +-- .../plugins/fastify/default/types.gen.ts | 8 +-- .../3.0.x/security-api-key/types.gen.ts | 8 +-- .../3.0.x/security-false/types.gen.ts | 8 +-- .../3.0.x/security-http-bearer/types.gen.ts | 8 +-- .../3.0.x/security-oauth2/types.gen.ts | 8 +-- .../security-open-id-connect/types.gen.ts | 8 +-- .../__snapshots__/3.0.x/servers/types.gen.ts | 8 +-- .../3.0.x/transformers-all-of/types.gen.ts | 8 +-- .../transformers-any-of-null/types.gen.ts | 8 +-- .../3.0.x/transformers-array/types.gen.ts | 8 +-- .../3.0.x/transformers-recursive/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../3.0.x/transforms-read-write/types.gen.ts | 8 +-- .../3.0.x/type-invalid/types.gen.ts | 4 +- .../additional-properties-false/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../additional-properties-true/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../array-items-one-of-length-1/types.gen.ts | 8 +-- .../3.1.x/array-nested-one-of/types.gen.ts | 8 +-- .../body-response-text-plain/types.gen.ts | 8 +-- .../3.1.x/case-PascalCase/types.gen.ts | 8 +-- .../3.1.x/case-camelCase/types.gen.ts | 8 +-- .../3.1.x/case-preserve/types.gen.ts | 8 +-- .../3.1.x/case-snake_case/types.gen.ts | 8 +-- .../base-url-false/types.gen.ts | 8 +-- .../base-url-number/types.gen.ts | 8 +-- .../base-url-strict/types.gen.ts | 8 +-- .../base-url-string/types.gen.ts | 8 +-- .../client-angular/clean-false/types.gen.ts | 8 +-- .../client-angular/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-axios/base-url-false/types.gen.ts | 8 +-- .../client-axios/base-url-number/types.gen.ts | 8 +-- .../client-axios/base-url-strict/types.gen.ts | 8 +-- .../client-axios/base-url-string/types.gen.ts | 8 +-- .../client-axios/clean-false/types.gen.ts | 8 +-- .../client-axios/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-fetch/base-url-false/types.gen.ts | 8 +-- .../client-fetch/base-url-number/types.gen.ts | 8 +-- .../client-fetch/base-url-strict/types.gen.ts | 8 +-- .../client-fetch/base-url-string/types.gen.ts | 8 +-- .../client-fetch/clean-false/types.gen.ts | 8 +-- .../client-fetch/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-ky/base-url-false/types.gen.ts | 8 +-- .../client-ky/base-url-number/types.gen.ts | 8 +-- .../client-ky/base-url-strict/types.gen.ts | 8 +-- .../client-ky/base-url-string/types.gen.ts | 8 +-- .../client-ky/clean-false/types.gen.ts | 8 +-- .../@hey-api/client-ky/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-next/base-url-false/types.gen.ts | 8 +-- .../client-next/base-url-number/types.gen.ts | 8 +-- .../client-next/base-url-strict/types.gen.ts | 8 +-- .../client-next/base-url-string/types.gen.ts | 8 +-- .../client-next/clean-false/types.gen.ts | 8 +-- .../@hey-api/client-next/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-nuxt/base-url-false/types.gen.ts | 8 +-- .../client-nuxt/base-url-number/types.gen.ts | 8 +-- .../client-nuxt/base-url-strict/types.gen.ts | 8 +-- .../client-nuxt/base-url-string/types.gen.ts | 8 +-- .../client-nuxt/clean-false/types.gen.ts | 8 +-- .../@hey-api/client-nuxt/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-ofetch/base-url-false/types.gen.ts | 8 +-- .../base-url-number/types.gen.ts | 8 +-- .../base-url-strict/types.gen.ts | 8 +-- .../base-url-string/types.gen.ts | 8 +-- .../client-ofetch/clean-false/types.gen.ts | 8 +-- .../client-ofetch/default/types.gen.ts | 8 +-- .../import-file-extension-ts/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../tsconfig-nodenext-sdk/types.gen.ts | 8 +-- .../client-custom/base-url-false/types.gen.ts | 8 +-- .../base-url-number/types.gen.ts | 8 +-- .../base-url-strict/types.gen.ts | 8 +-- .../base-url-string/types.gen.ts | 8 +-- .../clients/client-custom/bundle/types.gen.ts | 8 +-- .../client-custom/default/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../my-client/base-url-false/types.gen.ts | 8 +-- .../my-client/base-url-number/types.gen.ts | 8 +-- .../my-client/base-url-strict/types.gen.ts | 8 +-- .../my-client/base-url-string/types.gen.ts | 8 +-- .../clients/my-client/bundle/types.gen.ts | 8 +-- .../clients/my-client/default/types.gen.ts | 8 +-- .../sdk-client-optional/types.gen.ts | 8 +-- .../sdk-client-required/types.gen.ts | 8 +-- .../components-request-bodies/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/const/types.gen.ts | 8 +-- .../3.1.x/content-binary/types.gen.ts | 8 +-- .../3.1.x/content-types/types.gen.ts | 8 +-- .../3.1.x/discriminator-all-of/types.gen.ts | 8 +-- .../3.1.x/discriminator-any-of/types.gen.ts | 8 +-- .../discriminator-mapped-many/types.gen.ts | 8 +-- .../3.1.x/discriminator-one-of/types.gen.ts | 8 +-- .../3.1.x/duplicate-null/types.gen.ts | 8 +-- .../3.1.x/enum-escape/types.gen.ts | 8 +-- .../3.1.x/enum-inline-javascript/types.gen.ts | 8 +-- .../3.1.x/enum-inline-typescript/types.gen.ts | 8 +-- .../3.1.x/enum-inline/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../3.1.x/enum-names-values/types.gen.ts | 8 +-- .../3.1.x/enum-null/types.gen.ts | 8 +-- .../3.1.x/exclude-deprecated/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/external/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/headers/types.gen.ts | 8 +-- .../3.1.x/internal-name-conflict/types.gen.ts | 8 +-- .../negative-property-names/types.gen.ts | 8 +-- .../object-properties-all-of/types.gen.ts | 8 +-- .../object-properties-any-of/types.gen.ts | 8 +-- .../object-properties-one-of/types.gen.ts | 8 +-- .../3.1.x/object-property-names/types.gen.ts | 8 +-- .../3.1.x/operation-204/types.gen.ts | 8 +-- .../3.1.x/pagination-ref/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../parameter-explode-false/types.gen.ts | 8 +-- .../3.1.x/parameter-tuple/types.gen.ts | 8 +-- .../3.1.x/pattern-properties/types.gen.ts | 8 +-- .../common/default-class/types.gen.ts | 8 +-- .../@angular/common/default/types.gen.ts | 8 +-- .../sdk-nested-classes-instance/types.gen.ts | 8 +-- .../sdk-nested-classes/types.gen.ts | 8 +-- .../plugins/@hey-api/sdk/default/types.gen.ts | 8 +-- .../@hey-api/sdk/instance/types.gen.ts | 8 +-- .../@hey-api/sdk/throwOnError/types.gen.ts | 8 +-- .../type-format-valibot/types.gen.ts | 8 +-- .../transformers/type-format-zod/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../transforms-read-write-ignore/types.gen.ts | 8 +-- .../@pinia/colada/asClass/types.gen.ts | 8 +-- .../plugins/@pinia/colada/fetch/types.gen.ts | 8 +-- .../asClass/types.gen.ts | 8 +-- .../axios/types.gen.ts | 8 +-- .../fetch/types.gen.ts | 8 +-- .../name-builder/types.gen.ts | 8 +-- .../react-query/asClass/types.gen.ts | 8 +-- .../@tanstack/react-query/axios/types.gen.ts | 8 +-- .../@tanstack/react-query/fetch/types.gen.ts | 8 +-- .../react-query/name-builder/types.gen.ts | 8 +-- .../solid-query/asClass/types.gen.ts | 8 +-- .../@tanstack/solid-query/axios/types.gen.ts | 8 +-- .../@tanstack/solid-query/fetch/types.gen.ts | 8 +-- .../solid-query/name-builder/types.gen.ts | 8 +-- .../svelte-query/asClass/types.gen.ts | 8 +-- .../@tanstack/svelte-query/axios/types.gen.ts | 8 +-- .../@tanstack/svelte-query/fetch/types.gen.ts | 8 +-- .../svelte-query/name-builder/types.gen.ts | 8 +-- .../@tanstack/vue-query/asClass/types.gen.ts | 8 +-- .../@tanstack/vue-query/axios/types.gen.ts | 8 +-- .../@tanstack/vue-query/fetch/types.gen.ts | 8 +-- .../vue-query/name-builder/types.gen.ts | 8 +-- .../plugins/fastify/default/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/ref-type/types.gen.ts | 8 +-- .../3.1.x/required-all-of-ref/types.gen.ts | 8 +-- .../3.1.x/required-any-of-ref/types.gen.ts | 8 +-- .../3.1.x/required-one-of-ref/types.gen.ts | 8 +-- .../3.1.x/schema-const/types.gen.ts | 8 +-- .../3.1.x/security-api-key/types.gen.ts | 8 +-- .../3.1.x/security-false/types.gen.ts | 8 +-- .../3.1.x/security-http-bearer/types.gen.ts | 8 +-- .../3.1.x/security-oauth2/types.gen.ts | 8 +-- .../security-open-id-connect/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/servers/types.gen.ts | 8 +-- .../3.1.x/sse-angular/types.gen.ts | 8 +-- .../3.1.x/sse-axios/types.gen.ts | 8 +-- .../3.1.x/sse-fetch/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/sse-next/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/sse-nuxt/types.gen.ts | 8 +-- .../3.1.x/sse-ofetch/types.gen.ts | 8 +-- .../3.1.x/string-with-format/types.gen.ts | 8 +-- .../3.1.x/transformers-all-of/types.gen.ts | 8 +-- .../transformers-any-of-null/types.gen.ts | 8 +-- .../3.1.x/transformers-array/types.gen.ts | 8 +-- .../3.1.x/transformers-recursive/types.gen.ts | 8 +-- .../transforms-read-write-nested/types.gen.ts | 8 +-- .../types.gen.ts | 8 +-- .../3.1.x/transforms-read-write/types.gen.ts | 8 +-- .../3.1.x/type-invalid/types.gen.ts | 4 +- .../3.1.x/union-types/types.gen.ts | 8 +-- .../__snapshots__/3.1.x/webhooks/types.gen.ts | 12 ++-- .../plugins/@tanstack/meta/types.gen.ts | 8 +-- .../method-class-conflict/class/types.gen.ts | 8 +-- .../method-class-conflict/flat/types.gen.ts | 8 +-- .../instance/types.gen.ts | 8 +-- .../__snapshots__/opencode/flat/types.gen.ts | 8 +-- .../opencode/grouped/types.gen.ts | 8 +-- .../typescript/shared/clientOptions.ts | 28 ++++++++-- .../plugins/@hey-api/typescript/v1/plugin.ts | 56 ++++++++----------- .../src/plugins/shared/utils/instance.ts | 8 ++- 378 files changed, 1579 insertions(+), 1554 deletions(-) diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 082f3acc2..51406dbff 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -46,7 +46,7 @@ export default defineConfig(() => { // 'openai.yaml', 'opencode.yaml', // 'pagination-ref.yaml', - 'sdk-instance.yaml', + // 'sdk-instance.yaml', // 'string-with-format.yaml', // 'transformers.json', // 'transformers-recursive.json', diff --git a/examples/openapi-ts-angular-common/src/client/types.gen.ts b/examples/openapi-ts-angular-common/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-angular-common/src/client/types.gen.ts +++ b/examples/openapi-ts-angular-common/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-angular/src/client/types.gen.ts b/examples/openapi-ts-angular/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-angular/src/client/types.gen.ts +++ b/examples/openapi-ts-angular/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-axios/src/client/types.gen.ts b/examples/openapi-ts-axios/src/client/types.gen.ts index 257d5446a..48da19d87 100644 --- a/examples/openapi-ts-axios/src/client/types.gen.ts +++ b/examples/openapi-ts-axios/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseURL: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-fastify/src/client/types.gen.ts b/examples/openapi-ts-fastify/src/client/types.gen.ts index a05af4065..054b6615e 100644 --- a/examples/openapi-ts-fastify/src/client/types.gen.ts +++ b/examples/openapi-ts-fastify/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://petstore.swagger.io/v1' | (string & {}); +}; + export type Pet = { id: number; name: string; @@ -96,7 +100,3 @@ export type ShowPetByIdResponses = { export type ShowPetByIdResponse = ShowPetByIdResponses[keyof ShowPetByIdResponses]; - -export type ClientOptions = { - baseUrl: 'http://petstore.swagger.io/v1' | (string & {}); -}; diff --git a/examples/openapi-ts-fetch/src/client/types.gen.ts b/examples/openapi-ts-fetch/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-fetch/src/client/types.gen.ts +++ b/examples/openapi-ts-fetch/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-ky/src/client/types.gen.ts b/examples/openapi-ts-ky/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-ky/src/client/types.gen.ts +++ b/examples/openapi-ts-ky/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-next/src/client/types.gen.ts b/examples/openapi-ts-next/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-next/src/client/types.gen.ts +++ b/examples/openapi-ts-next/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-ofetch/src/client/types.gen.ts b/examples/openapi-ts-ofetch/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-ofetch/src/client/types.gen.ts +++ b/examples/openapi-ts-ofetch/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-openai/src/client/types.gen.ts b/examples/openapi-ts-openai/src/client/types.gen.ts index 362b15ac4..ac7532f67 100644 --- a/examples/openapi-ts-openai/src/client/types.gen.ts +++ b/examples/openapi-ts-openai/src/client/types.gen.ts @@ -1,5 +1,25 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://api.openai.com/v1' | (string & {}); +}; + +export type Webhooks = + | PostBatchCancelledWebhookRequest + | PostBatchCompletedWebhookRequest + | PostBatchExpiredWebhookRequest + | PostBatchFailedWebhookRequest + | PostEvalRunCanceledWebhookRequest + | PostEvalRunFailedWebhookRequest + | PostEvalRunSucceededWebhookRequest + | PostFineTuningJobCancelledWebhookRequest + | PostFineTuningJobFailedWebhookRequest + | PostFineTuningJobSucceededWebhookRequest + | PostResponseCancelledWebhookRequest + | PostResponseCompletedWebhookRequest + | PostResponseFailedWebhookRequest + | PostResponseIncompleteWebhookRequest; + export type AddUploadPartRequest = { /** * The chunk of bytes for this Part. @@ -23453,23 +23473,3 @@ export type PostResponseIncompleteWebhookRequest = { path?: never; query?: never; }; - -export type ClientOptions = { - baseUrl: 'https://api.openai.com/v1' | (string & {}); -}; - -export type Webhooks = - | PostBatchCancelledWebhookRequest - | PostBatchCompletedWebhookRequest - | PostBatchExpiredWebhookRequest - | PostBatchFailedWebhookRequest - | PostEvalRunCanceledWebhookRequest - | PostEvalRunFailedWebhookRequest - | PostEvalRunSucceededWebhookRequest - | PostFineTuningJobCancelledWebhookRequest - | PostFineTuningJobFailedWebhookRequest - | PostFineTuningJobSucceededWebhookRequest - | PostResponseCancelledWebhookRequest - | PostResponseCompletedWebhookRequest - | PostResponseFailedWebhookRequest - | PostResponseIncompleteWebhookRequest; diff --git a/examples/openapi-ts-pinia-colada/src/client/types.gen.ts b/examples/openapi-ts-pinia-colada/src/client/types.gen.ts index f7044e662..99ce8e7d8 100644 --- a/examples/openapi-ts-pinia-colada/src/client/types.gen.ts +++ b/examples/openapi-ts-pinia-colada/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) +} + export type Order = { complete?: boolean id?: number @@ -687,7 +691,3 @@ export type UpdateUserResponses = { */ 200: unknown } - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) -} diff --git a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-angular-query-experimental/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-react-query/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts index 992c17fb2..a2e6be0fa 100644 --- a/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-svelte-query/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); +}; + export type Order = { complete?: boolean; id?: number; @@ -693,7 +697,3 @@ export type UpdateUserResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); -}; diff --git a/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts b/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts index f7044e662..99ce8e7d8 100644 --- a/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts +++ b/examples/openapi-ts-tanstack-vue-query/src/client/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) +} + export type Order = { complete?: boolean id?: number @@ -687,7 +691,3 @@ export type UpdateUserResponses = { */ 200: unknown } - -export type ClientOptions = { - baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}) -} diff --git a/packages/codegen-core/src/files/file.ts b/packages/codegen-core/src/files/file.ts index b3fbe9678..29245c53b 100644 --- a/packages/codegen-core/src/files/file.ts +++ b/packages/codegen-core/src/files/file.ts @@ -141,7 +141,7 @@ export class File { * Syntax nodes contained in this file. */ get nodes(): ReadonlyArray { - return this._nodes; + return [...this._nodes]; } /** diff --git a/packages/codegen-core/src/nodes/registry.ts b/packages/codegen-core/src/nodes/registry.ts index fad9bf0fc..b126feaaa 100644 --- a/packages/codegen-core/src/nodes/registry.ts +++ b/packages/codegen-core/src/nodes/registry.ts @@ -1,26 +1,28 @@ +import { fromRef, ref } from '../refs/refs'; +import type { Ref } from '../refs/types'; import type { INode } from './node'; import type { INodeRegistry } from './types'; export class NodeRegistry implements INodeRegistry { - private brands: Map> = new Map(); - private list: Array = []; + private list: Array> = []; - add(node: INode): void { - this.list.push(node); + add(node: INode | null): number { + const index = this.list.push(ref(node)); + return index - 1; + } - let group = this.brands.get(node['~brand']); - if (!group) { - group = []; - this.brands.set(node['~brand'], group); + *all(): Iterable { + for (const r of this.list) { + const node = fromRef(r); + if (node) yield node; } - group.push(node); } - all(): ReadonlyArray { - return this.list; + remove(index: number): void { + this.list[index] = ref(null); } - byBrand(brand: string): ReadonlyArray { - return this.brands.get(brand) ?? []; + update(index: number, node: INode | null): void { + this.list[index] = ref(node); } } diff --git a/packages/codegen-core/src/nodes/types.d.ts b/packages/codegen-core/src/nodes/types.d.ts index 8331c4fab..4b53c7650 100644 --- a/packages/codegen-core/src/nodes/types.d.ts +++ b/packages/codegen-core/src/nodes/types.d.ts @@ -3,14 +3,25 @@ import type { INode } from './node'; export interface INodeRegistry { /** * Register a syntax node. + * + * @returns The index of the registered node. */ - add(node: INode): void; + add(node: INode | null): number; /** * All nodes in insertion order. */ - all(): ReadonlyArray; + all(): Iterable; /** - * Nodes by backend brand, so planner doesn't need to filter repeatedly. + * Remove a node by its index. + * + * @param index Index of the node to remove. */ - byBrand(brand: string): ReadonlyArray; + remove(index: number): void; + /** + * Update a node at the given index. + * + * @param index Index of the node to update. + * @param node New node to set. + */ + update(index: number, node: INode | null): void; } diff --git a/packages/codegen-core/src/planner/analyzer.ts b/packages/codegen-core/src/planner/analyzer.ts index ec2a55214..1af9bfab9 100644 --- a/packages/codegen-core/src/planner/analyzer.ts +++ b/packages/codegen-core/src/planner/analyzer.ts @@ -98,7 +98,7 @@ export class Analyzer { } analyze( - nodes: ReadonlyArray, + nodes: Iterable, callback?: (ctx: AnalysisContext, node: INode) => void, ): void { for (const node of nodes) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts index 62bdb7f98..00338555a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type Foo = { foo: string; }; @@ -9,7 +13,3 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts index 067709e9c..4585c357e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/additional-properties-true/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type Foo = { foo: string; [key: string]: unknown | string; @@ -17,7 +21,3 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts index dc6943369..01dd71cbd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type PostFooData = { body: string; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts index 75974d016..d3ae11f34 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index 9a6366211..0a81f8f37 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts index add74c6d5..42fbe692f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts index cc2f95d07..6e92ca302 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts index c5610e015..4805d46f9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts index 7352108dc..c4db83602 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index cde22290f..d29c33f61 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts index 16ea57219..be7cbd0e5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts index 658609c2a..bbcdebda6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-const/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts index e8450c407..57e45fac7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts index 538bc4b3c..3d87fcc64 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts index 9452f2b9e..6ec248809 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/enum-names-values/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -17,7 +21,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts index 2f6988dd6..ff23db4fc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/exclude-deprecated/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type Foo = string; export type PostFooData = { @@ -15,7 +19,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts index 6dc77acc2..42a5c5e6c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/external/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type ExternalSchemaA = ExternalSharedExternalSharedModel; export type ExternalSchemaB = ExternalSharedExternalSharedModel; @@ -405,7 +409,3 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts index 7b434343a..997ebc24b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type Foo = { status?: number; }; @@ -22,7 +26,3 @@ export type PostV1FooResponses = { }; export type PostV1FooResponse = PostV1FooResponses[keyof PostV1FooResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 3c9d90569..3f503a59d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 3c9d90569..3f503a59d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index 04e4f45ee..b8aa017cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index 04e4f45ee..b8aa017cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index a7f908ad2..db3956e79 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type Baz = { baz?: string; }; @@ -55,7 +59,3 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index 54931798c..6ab8910b7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type FooRead = BarRead & { readonly foo?: string; }; @@ -43,7 +47,3 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index a197f754d..094d20902 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts index a197f754d..094d20902 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts index a197f754d..094d20902 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index a197f754d..094d20902 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts index a197f754d..094d20902 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 28d798a00..9844839de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts index d907320c3..d5dadd291 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + export type ExternalRefA = ExternalSharedExternalSharedModel; export type ExternalRefB = ExternalSharedExternalSharedModel; @@ -1182,7 +1186,3 @@ export type PostApiVbyApiVersionBodyResponses = { }; export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts index a31ef7865..34a73e0be 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://api.postmarkapp.com` | (string & {}); +}; + export type SendEmailRequest = { /** * The sender email address. Must have a registered and confirmed Sender Signature. @@ -130,7 +134,3 @@ export type SendEmailResponses = { }; export type SendEmailResponse2 = SendEmailResponses[keyof SendEmailResponses]; - -export type ClientOptions = { - baseUrl: `${string}://api.postmarkapp.com` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts index 47a6dbbce..4d911cbe3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts index 47a6dbbce..4d911cbe3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts index 47a6dbbce..4d911cbe3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts index 47a6dbbce..4d911cbe3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts index 7e1ba4007..c3fcf5dff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}/v1` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}/v1` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts index 85dba01eb..ca0a2a79e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://foo.com` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://foo.com` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts index 43d939745..b54728320 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts index 9db142760..127185a83 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: string; +}; + export type FooRead = BarRead & { readonly foo?: string; }; @@ -55,7 +59,3 @@ export type PostFooReadResponses = { }; export type PostFooReadResponse = PostFooReadResponses[keyof PostFooReadResponses]; - -export type ClientOptions = { - baseUrl: string; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts index d90f5b3af..2a149e830 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: string; }; @@ -9,7 +13,3 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts index d67d3d123..4452f8fca 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-true/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: string; [key: string]: unknown | string; @@ -17,7 +21,3 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts index 1097aeb99..d08207101 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/additional-properties-undefined/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: { [key: string]: unknown; }; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts index 4ac068762..22248bd72 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-items-one-of-length-1/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: Array; }; export type Bar = string; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts index 6a8c31d0a..d998d02b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/array-nested-one-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = Array<{ foo?: string; bar?: string; @@ -10,7 +14,3 @@ export type Foo = Array<{ foo?: string; bar?: string; }>; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts index a1b061174..5e6e1ffec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body: string; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts index 54cfcc64e..0dd627bfc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts index a29cd8ba6..038783521 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type clientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; - -export type clientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts index ef766fce0..d30a3e951 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts index 954c678b2..89b79fffe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/case-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type client_options = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type get_foo_responses = { }; export type get_foo_response = get_foo_responses[keyof get_foo_responses]; - -export type client_options = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts index 492b157bf..87f3a1faf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/components-request-bodies/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * Foo */ @@ -23,7 +27,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts index 908d5cbec..97bd27233 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-binary/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -25,7 +29,3 @@ export type GetBarResponses = { }; export type GetBarResponse = GetBarResponses[keyof GetBarResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts index a2e7d5433..71bb11304 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts index 3bd1045c3..517394ec6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-all-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { id: string; }; @@ -61,7 +65,3 @@ export type BazUnion = { }; export type QuxExtend = FooUnion; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts index a3d6081eb..902f48ad5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-any-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ type?: 'Bar'; } & Bar) | ({ @@ -26,7 +30,3 @@ export type Quuz = ({ } & Baz) | ({ type?: 'non-ascii'; } & Spæcial); - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts index 885b1c7d1..5fc5875d4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-mapped-many/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ foo: 'one' | 'two'; } & Bar) | ({ @@ -19,7 +23,3 @@ export type Baz = { export type Spæcial = { foo?: 'four'; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts index 73005d217..7637bb05f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/discriminator-one-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ type: 'Bar'; } & Bar) | ({ @@ -26,7 +30,3 @@ export type Quuz = ({ } & Baz) | ({ type: 'non-ascii'; } & Spæcial); - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts index 63e849599..b123b2122 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-escape/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: 'foo\'bar' | 'foo"bar'; }; export type Bar = 'foo\'bar' | 'foo"bar'; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts index 5e6bf05a3..fb5deac3a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-javascript/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: TypeEnum; }; @@ -7,7 +11,3 @@ export type Foo = { export const TypeEnum = { FOO: 'foo', BAR: 'bar' } as const; export type TypeEnum = typeof TypeEnum[keyof typeof TypeEnum]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts index 980626acc..ba7939b4f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline-typescript/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: TypeEnum; }; @@ -8,7 +12,3 @@ export enum TypeEnum { FOO = 'foo', BAR = 'bar' } - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts index c1d043ba0..93dd5188f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-inline/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: TypeEnum; }; export type TypeEnum = 'foo' | 'bar'; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts index fe3d00693..1d30f67ff 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -41,7 +45,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index ff4cd52a1..f20bb191c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -41,7 +45,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts index d1e42e3cd..50065b892 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -41,7 +45,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts index 697c11059..c92f919ad 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-ignore-null/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -40,7 +44,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts index fec1904fb..d131603e0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -41,7 +45,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts index 3dead7b87..d815d6b77 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -41,7 +45,3 @@ export const Arrays = { } as const; export type Arrays = typeof Arrays[keyof typeof Arrays]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts index d8b9e50d1..7f0916345 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index c25efe013..72d21c8b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts index 48930e998..ae4406721 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts index c99c71642..7b43908d9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-const/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts index 95af7e0f2..a4169a3d5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts index ece8dbc8d..c668186a7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -33,7 +37,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts index 7c6cf43ce..7bbcad881 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-names-values/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -17,7 +21,3 @@ export type Arrays = [ ] | [ 'baz' ]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts index 0f113e601..49d10ce0f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/enum-null/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = 'foo' | 'bar' | null; export type Bar = 'foo' | 'bar'; export type Baz = 'foo' | 'bar'; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts index 29f6d3874..bf1605beb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/exclude-deprecated/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = string; export type PostFooData = { @@ -15,7 +19,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts index 2ab40752d..8f041dff7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/external/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type ExternalSchemaA = ExternalSharedExternalSharedModel; export type ExternalSchemaB = ExternalSharedExternalSharedModel; @@ -430,7 +434,3 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts index 3b84b928c..fae694b9b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type CreateData = { body?: never; path?: never; @@ -41,7 +45,3 @@ export type Create3Responses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts index c8043dbaa..4c71cace9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/operation-204/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -19,7 +23,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts index 4639723fb..62af858b9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { */ default: unknown; }; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts index 7e5ae0357..d564215cf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { */ default: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 3c9d90569..3f503a59d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 3c9d90569..3f503a59d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://api.example.com/v1' | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: 'https://api.example.com/v1' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index 93212780a..87d807f95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index 93212780a..87d807f95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index 21ae98a77..09a3a4b1f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Baz = { baz?: string; }; @@ -106,7 +110,3 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index b73d450d0..68b3b8b10 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type FooReadWrite = BarRead & { foo?: string; }; @@ -89,7 +93,3 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index 35678bc91..a78194ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts index 35678bc91..a78194ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts index 35678bc91..a78194ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index 35678bc91..a78194ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts index 35678bc91..a78194ab9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts index 580f3bcbd..3cdab85a3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/fastify/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2066,7 +2070,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts index 7cd25c229..41519aa51 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -27,7 +31,3 @@ export type GetBarResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts index 02482e56a..d7a0ac461 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts index e2bd16164..f3fe6fe4c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: Array; }; @@ -40,7 +44,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts index dfee23093..12991171f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: Date; bar?: Date | null; @@ -21,7 +25,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts index 89be77eab..fd57de924 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -19,7 +23,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts index 359bc54e8..5a46bbbd8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TreeNode = { id?: string; name?: string; @@ -22,7 +26,3 @@ export type GetTreeResponses = { }; export type GetTreeResponse = GetTreeResponses[keyof GetTreeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts index 1b0c88c61..b25546e30 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-properties-required-by-default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | 'https://api.pos.dutchie.com' | (string & {}); +}; + export type Address = { addressId: number | null; customerId: number; @@ -10420,7 +10424,3 @@ export type WhoamiGetResponses = { }; export type WhoamiGetResponse = WhoamiGetResponses[keyof WhoamiGetResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | 'https://api.pos.dutchie.com' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts index 6c839b35d..57871fe36 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type FooReadWrite = BarRead; export type FooRead = BarRead & { @@ -106,7 +110,3 @@ export type PostFooWriteResponses = { }; export type PostFooWriteResponse = PostFooWriteResponses[keyof PostFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts index b507475fd..28b3e9b1c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/type-invalid/types.gen.ts @@ -1,7 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts -export type Foo = unknown; - export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; + +export type Foo = unknown; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts index d90f5b3af..2a149e830 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: string; }; @@ -9,7 +13,3 @@ export type Bar = Foo & {}; export type Baz = Foo & { bar: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts index 31ed4dfc7..f2bd4bfe8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true-any/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: string; [key: string]: any | string; @@ -17,7 +21,3 @@ export type Baz = Foo & { export type Qux = { [key: string]: any; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts index d67d3d123..4452f8fca 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-true/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: string; [key: string]: unknown | string; @@ -17,7 +21,3 @@ export type Baz = Foo & { export type Qux = { [key: string]: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts index 1097aeb99..d08207101 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/additional-properties-undefined/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: { [key: string]: unknown; }; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts index 4ac068762..22248bd72 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-items-one-of-length-1/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: Array; }; export type Bar = string; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts index 6a8c31d0a..d998d02b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/array-nested-one-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = Array<{ foo?: string; bar?: string; @@ -10,7 +14,3 @@ export type Foo = Array<{ foo?: string; bar?: string; }>; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts index a1b061174..5e6e1ffec 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body: string; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts index 54cfcc64e..0dd627bfc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts index a29cd8ba6..038783521 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type clientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; - -export type clientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts index ef766fce0..d30a3e951 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type getFooResponses = { }; export type getFooResponse = getFooResponses[keyof getFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts index 954c678b2..89b79fffe 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/case-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type client_options = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * original name: 201 */ @@ -83,7 +87,3 @@ export type get_foo_responses = { }; export type get_foo_response = get_foo_responses[keyof get_foo_responses]; - -export type client_options = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-angular/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts index 19fbb1057..503e4d9f7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ky/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts index 19fbb1057..503e4d9f7 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts index 7075ae04c..0c479de03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base'; +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base'; -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts index 492b157bf..87f3a1faf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/components-request-bodies/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * Foo */ @@ -23,7 +27,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts index 1d08e66f1..2a6c26099 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/const/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts index 908d5cbec..97bd27233 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-binary/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -25,7 +29,3 @@ export type GetBarResponses = { }; export type GetBarResponse = GetBarResponses[keyof GetBarResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts index a2e7d5433..71bb11304 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts index 3bd1045c3..517394ec6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-all-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { id: string; }; @@ -61,7 +65,3 @@ export type BazUnion = { }; export type QuxExtend = FooUnion; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts index a3d6081eb..902f48ad5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-any-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ type?: 'Bar'; } & Bar) | ({ @@ -26,7 +30,3 @@ export type Quuz = ({ } & Baz) | ({ type?: 'non-ascii'; } & Spæcial); - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts index 885b1c7d1..5fc5875d4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-mapped-many/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ foo: 'one' | 'two'; } & Bar) | ({ @@ -19,7 +23,3 @@ export type Baz = { export type Spæcial = { foo?: 'four'; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts index 73005d217..7637bb05f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/discriminator-one-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ type: 'Bar'; } & Bar) | ({ @@ -26,7 +30,3 @@ export type Quuz = ({ } & Baz) | ({ type: 'non-ascii'; } & Spæcial); - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts index 727f7529e..8ec65de2e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/duplicate-null/types.gen.ts @@ -1,10 +1,10 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * should not produce duplicate null */ export type WeirdEnum = '' | string | null; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts index 63e849599..b123b2122 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-escape/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: 'foo\'bar' | 'foo"bar'; }; export type Bar = 'foo\'bar' | 'foo"bar'; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts index e015b4866..f2de649af 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-javascript/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: FooEnum; }; @@ -71,7 +75,3 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts index 0679a5270..984824e60 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline-typescript/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: FooEnum; }; @@ -73,7 +77,3 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts index 9163b485e..11923fa03 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-inline/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { type?: FooEnum; }; @@ -65,7 +69,3 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts index 614aee388..3c6738766 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,7 +49,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts index e237043a8..f2ed061ad 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,7 +49,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts index 6502a3f45..10a93a00c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { 110: '1-10', 1120: '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,7 +49,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts index 23f30b6e6..27c737876 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-ignore-null/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -44,7 +48,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts index 32ab21b64..1a540d879 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1-10': '1-10', '11-20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,7 +49,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts index d58a2d74b..765fd48c8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-javascript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const _110 = { '1_10': '1-10', '11_20': '11-20' } as const; export type _110 = typeof _110[keyof typeof _110]; @@ -45,7 +49,3 @@ export type Arrays = typeof Arrays[keyof typeof Arrays]; export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts index c8965f281..17261bdc8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-PascalCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts index c97aa30dc..4dadefd72 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-SCREAMING_SNAKE_CASE/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts index b840a69cd..73e0c57a9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-camelCase/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts index 690678694..18729b813 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-const/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export const enum _110 { _110 = '1-10', _1120 = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts index a81c6479f..f9011b1e2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-preserve/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1-10' = '1-10', '11-20' = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts index a4ea1ca03..e74fd5c76 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values-typescript-snake_case/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export enum _110 { '1_10' = '1-10', '11_20' = '11-20' @@ -37,7 +41,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts index 28d7af1d6..143540e0b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-names-values/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type _110 = '1-10' | '11-20'; export type MyFoo = 'myFoo' | 'myBar'; @@ -21,7 +25,3 @@ export type Arrays = [ export type MyFooRef = { foo?: Array; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts index 0f113e601..49d10ce0f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/enum-null/types.gen.ts @@ -1,11 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = 'foo' | 'bar' | null; export type Bar = 'foo' | 'bar'; export type Baz = 'foo' | 'bar'; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts index 29f6d3874..bf1605beb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/exclude-deprecated/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = string; export type PostFooData = { @@ -15,7 +19,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts index fb7cc6bd2..888125c02 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/external/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * External schema (A) */ @@ -466,7 +470,3 @@ export type GetExternalPropertiesByIdResponses = { }; export type GetExternalPropertiesByIdResponse = GetExternalPropertiesByIdResponses[keyof GetExternalPropertiesByIdResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts index 2df3499e6..5eee04adf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body: string; headers: { @@ -72,7 +76,3 @@ export type PutFooResponses = { }; export type PutFooResponse = PutFooResponses[keyof PutFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts index 3b84b928c..fae694b9b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type CreateData = { body?: never; path?: never; @@ -41,7 +45,3 @@ export type Create3Responses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts index a578569a9..9527534c3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/negative-property-names/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * Reaction Rollup */ @@ -15,7 +19,3 @@ export type ReactionRollup = { eyes: number; rocket: number; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts index 52d79623a..437eada2f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-all-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { bar: string; } & { @@ -9,7 +13,3 @@ export type Foo = { bar?: string; baz?: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts index 626485d0c..a007c1a31 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-any-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ bar: string; } | { @@ -9,7 +13,3 @@ export type Foo = ({ bar?: string; baz?: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts index 626485d0c..a007c1a31 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-properties-one-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = ({ bar: string; } | { @@ -9,7 +13,3 @@ export type Foo = ({ bar?: string; baz?: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts index bc6d278d9..fb2658a1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/object-property-names/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = 'foo' | 'bar'; export type Bar = { @@ -9,7 +13,3 @@ export type Bar = { export type Baz = { [key in Foo]?: number; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts index c8043dbaa..4c71cace9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/operation-204/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -19,7 +23,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts index 71f2c1e40..d8c37a6ba 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { page?: number | null; }; @@ -41,7 +45,3 @@ export type PostFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts index 4639723fb..62af858b9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { */ default: unknown; }; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts index 7e5ae0357..d564215cf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type PostFooResponses = { */ default: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts index c455f81b4..bea1260fc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-tuple/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PostFooData = { body?: never; path?: never; @@ -20,7 +24,3 @@ export type PostFooResponses = { */ default: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts index a99c8e749..df7deafb0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pattern-properties/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type PatternPropertiesTest = { id?: string; metadata?: MetadataObject; @@ -50,7 +54,3 @@ export type PostPatternTestResponses = { }; export type PostPatternTestResponse = PostPatternTestResponses[keyof PostPatternTestResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts index 133a54ab9..8952a736a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts index 133a54ab9..8952a736a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type BusinessProvidersDomainsGetData = { body?: never; path?: never; @@ -79,7 +83,3 @@ export type GetResponses = { }; export type GetResponse = GetResponses[keyof GetResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts index 93212780a..87d807f95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts index 93212780a..87d807f95 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TypeID = `${T}_${string}`; export type UserId = TypeID<'user'>; @@ -30,7 +34,3 @@ export type PostFooResponses = { }; export type PostFooResponse = PostFooResponses[keyof PostFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts index 9ba1ea451..919e7c5de 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Baz = { baz?: string; }; @@ -160,7 +164,3 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts index ee224cabf..2660fdee6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type FooReadWrite = BarRead & { foo?: string; }; @@ -136,7 +140,3 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts index c2d694089..54ea996fa 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseURL: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts index 4001df3e9..836288372 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -95,7 +99,3 @@ export type FooBarPutResponses = { }; export type FooBarPutResponse = FooBarPutResponses[keyof FooBarPutResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts index b16291237..a6d8bf5f5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/fastify/default/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:3000/base' | (string & {}); +}; + /** * Model with number-only name */ @@ -2085,7 +2089,3 @@ export type PutWithFormUrlEncodedData = { query?: never; url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; }; - -export type ClientOptions = { - baseUrl: 'http://localhost:3000/base' | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts index ec2aea840..1f0922044 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/ref-type/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: Array<{ baz: Bar | null; @@ -25,7 +29,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts index a40131f08..afabab20e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-all-of-ref/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: string; baz?: string; @@ -10,7 +14,3 @@ export type Bar = Foo & { foo: string; baz: string; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts index 2faa0ef99..ac23756f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-any-of-ref/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: string; baz?: string; @@ -8,7 +12,3 @@ export type Foo = { export type Bar = Foo & { bar: number; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts index 2faa0ef99..ac23756f1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/required-one-of-ref/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: string; baz?: string; @@ -8,7 +12,3 @@ export type Foo = { export type Bar = Foo & { bar: number; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts index 692c9e20a..678965434 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/schema-const/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo?: 'foo'; bar?: 3.2; @@ -35,7 +39,3 @@ export type Foo = { stringInt64?: '-9223372036854775808'; stringUint64?: '18446744073709551615'; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts index 7cd25c229..41519aa51 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -27,7 +31,3 @@ export type GetBarResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts index 579f645ec..f0896eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -13,7 +17,3 @@ export type GetFooResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts index 02482e56a..d7a0ac461 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -15,7 +19,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: 'https://foo.com/v1' | `${string}://${string}/v1` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts index ea6b3e42a..d3fe8ca92 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts index a360dc82e..e8552bf4d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts index ea6b3e42a..d3fe8ca92 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts index ea6b3e42a..d3fe8ca92 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts index a360dc82e..e8552bf4d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseURL: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts index ea6b3e42a..d3fe8ca92 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Range = { start: { line: number; @@ -521,7 +525,3 @@ export type EventSubscribeResponses = { }; export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts index 521723fb3..21f18eeea 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/string-with-format/types.gen.ts @@ -1,9 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts -export type Foo = { - foo?: Array; -}; - export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; + +export type Foo = { + foo?: Array; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts index e2bd16164..f3fe6fe4c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Foo = { foo: Array; }; @@ -40,7 +44,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts index ab403042b..354c5b6e2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + /** * Object with a nested date structure */ @@ -47,7 +51,3 @@ export type NestedDateObjectResponses = { }; export type NestedDateObjectResponse = NestedDateObjectResponses[keyof NestedDateObjectResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts index 89be77eab..fd57de924 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -19,7 +23,3 @@ export type GetFooResponses = { }; export type GetFooResponse = GetFooResponses[keyof GetFooResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts index 359bc54e8..5a46bbbd8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type TreeNode = { id?: string; name?: string; @@ -22,7 +26,3 @@ export type GetTreeResponses = { }; export type GetTreeResponse = GetTreeResponses[keyof GetTreeResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts index ba16391c9..13302b480 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-nested/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type CreateItemRequest = { payload: Payload; }; @@ -33,7 +37,3 @@ export type ItemCreateResponses = { */ 201: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts index 9ae71d221..266d69175 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write-response/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type ItemListResponse = { items: Array; }; @@ -39,7 +43,3 @@ export type ItemListResponses = { }; export type ItemListResponse2 = ItemListResponses[keyof ItemListResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts index a23498084..039f4a8ef 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type FooReadWrite = BarRead; export type FooRead = BarRead & { @@ -160,7 +164,3 @@ export type PutFooWriteResponses = { }; export type PutFooWriteResponse = PutFooWriteResponses[keyof PutFooWriteResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts index b507475fd..28b3e9b1c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/type-invalid/types.gen.ts @@ -1,7 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts -export type Foo = unknown; - export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; + +export type Foo = unknown; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts index 36097cc14..248263eaf 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/union-types/types.gen.ts @@ -1,9 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts -export type Foo = { - bar?: number | boolean | string; -}; - export type ClientOptions = { baseUrl: `${string}://${string}` | (string & {}); }; + +export type Foo = { + bar?: number | boolean | string; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts index 975abdc96..96b1cbfb0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/webhooks/types.gen.ts @@ -1,5 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + +export type Webhooks = SessionUserPhoneCalloutRingingWebhookRequest | SessionUserRoomSystemCalloutRingingWebhookRequest | SessionRecordingStartedWebhookRequest | SessionRecordingResumedWebhookRequest | SessionLiveStreamingStoppedWebhookRequest | SessionStreamIngestionStoppedWebhookRequest | SessionUserRoomSystemCalloutRejectedWebhookRequest | SessionAlertWebhookRequest | SessionSharingEndedWebhookRequest | SessionRecordingPausedWebhookRequest | SessionEndedWebhookRequest | SessionStartedWebhookRequest | SessionStreamIngestionUnbindWebhookRequest | SessionLiveStreamingStartedWebhookRequest | SessionUserRoomSystemCalloutMissedWebhookRequest | SessionUserPhoneCalloutAcceptedWebhookRequest | SessionUserLeftWebhookRequest | SessionSharingStartedWebhookRequest | SessionUserPhoneCalloutCanceledWebhookRequest | SessionRecordingTranscriptCompletedWebhookRequest | SessionRecordingDeletedWebhookRequest | SessionUserRoomSystemCalloutFailedWebhookRequest | SessionRecordingCompletedWebhookRequest | SessionRecordingTranscriptFailedWebhookRequest | SessionRecordingTrashedWebhookRequest | SessionUserJoinedWebhookRequest | SessionStreamIngestionStartedWebhookRequest | SessionStreamIngestionConnectedWebhookRequest | SessionStreamIngestionDisconnectedWebhookRequest | SessionRecordingRecoveredWebhookRequest | SessionUserPhoneCalloutMissedWebhookRequest | SessionUserPhoneCalloutRejectedWebhookRequest | SessionUserRoomSystemCalloutAcceptedWebhookRequest | SessionRecordingStoppedWebhookRequest; + /** * # session.user_phone_callout_ringing * @@ -3331,9 +3337,3 @@ export type SessionRecordingStoppedWebhookRequest = { path?: never; query?: never; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; - -export type Webhooks = SessionUserPhoneCalloutRingingWebhookRequest | SessionUserRoomSystemCalloutRingingWebhookRequest | SessionRecordingStartedWebhookRequest | SessionRecordingResumedWebhookRequest | SessionLiveStreamingStoppedWebhookRequest | SessionStreamIngestionStoppedWebhookRequest | SessionUserRoomSystemCalloutRejectedWebhookRequest | SessionAlertWebhookRequest | SessionSharingEndedWebhookRequest | SessionRecordingPausedWebhookRequest | SessionEndedWebhookRequest | SessionStartedWebhookRequest | SessionStreamIngestionUnbindWebhookRequest | SessionLiveStreamingStartedWebhookRequest | SessionUserRoomSystemCalloutMissedWebhookRequest | SessionUserPhoneCalloutAcceptedWebhookRequest | SessionUserLeftWebhookRequest | SessionSharingStartedWebhookRequest | SessionUserPhoneCalloutCanceledWebhookRequest | SessionRecordingTranscriptCompletedWebhookRequest | SessionRecordingDeletedWebhookRequest | SessionUserRoomSystemCalloutFailedWebhookRequest | SessionRecordingCompletedWebhookRequest | SessionRecordingTranscriptFailedWebhookRequest | SessionRecordingTrashedWebhookRequest | SessionUserJoinedWebhookRequest | SessionStreamIngestionStartedWebhookRequest | SessionStreamIngestionConnectedWebhookRequest | SessionStreamIngestionDisconnectedWebhookRequest | SessionRecordingRecoveredWebhookRequest | SessionUserPhoneCalloutMissedWebhookRequest | SessionUserPhoneCalloutRejectedWebhookRequest | SessionUserRoomSystemCalloutAcceptedWebhookRequest | SessionRecordingStoppedWebhookRequest; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts index 7cd25c229..41519aa51 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type GetFooData = { body?: never; path?: never; @@ -27,7 +31,3 @@ export type GetBarResponses = { */ 200: unknown; }; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts index 482679acd..c3ffbb01d 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/class/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4183,7 +4187,3 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts index 482679acd..c3ffbb01d 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/flat/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4183,7 +4187,3 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts index 482679acd..c3ffbb01d 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type AccessTokenResponse = { readonly tokenType?: string; accessToken: string; @@ -4183,7 +4187,3 @@ export type PatchApiV1UsersByIdResponses = { }; export type PatchApiV1UsersByIdResponse = PatchApiV1UsersByIdResponses[keyof PatchApiV1UsersByIdResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts index 71e65f5eb..81a523f49 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Event = ({ type: 'installation.updated'; } & EventInstallationUpdated) | ({ @@ -1937,7 +1941,3 @@ export type AuthSetResponses = { }; export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts index 71e65f5eb..81a523f49 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + export type Event = ({ type: 'installation.updated'; } & EventInstallationUpdated) | ({ @@ -1937,7 +1941,3 @@ export type AuthSetResponses = { }; export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]; - -export type ClientOptions = { - baseUrl: `${string}://${string}` | (string & {}); -}; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts index 0e27f6863..995f27fe5 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/clientOptions.ts @@ -1,6 +1,5 @@ -import type { Symbol } from '@hey-api/codegen-core'; - import type { IR } from '~/ir/types'; +import { buildName } from '~/openApi/shared/utils/name'; import { getClientBaseUrlKey, getClientPlugin, @@ -28,13 +27,13 @@ const serverToBaseUrlType = ({ server }: { server: IR.ServerObject }) => { }; export const createClientOptions = ({ + nodeIndex, plugin, servers, - symbolClientOptions, }: { + nodeIndex: number; plugin: HeyApiTypeScriptPlugin['Instance']; servers: ReadonlyArray; - symbolClientOptions: Symbol; }) => { const client = getClientPlugin(plugin.context.config); @@ -50,8 +49,25 @@ export const createClientOptions = ({ types.push($.type.and($.type('string'), $.type.object())); } + const symbol = plugin.symbol( + buildName({ + config: { + case: plugin.config.case, + }, + name: 'ClientOptions', + }), + { + meta: { + category: 'type', + resource: 'client', + role: 'options', + tool: 'typescript', + }, + }, + ); + const node = $.type - .alias(symbolClientOptions) + .alias(symbol) .export() .type( $.type @@ -60,5 +76,5 @@ export const createClientOptions = ({ p.type($.type.or(...types)), ), ); - plugin.addNode(node); + plugin.updateNode(nodeIndex, node); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts index 393426a3e..0f5260e76 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/plugin.ts @@ -85,36 +85,10 @@ const handleComponent = ({ }; export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { - // reserve identifier for ClientOptions - const symbolClientOptions = plugin.registerSymbol({ - meta: { - category: 'type', - resource: 'client', - role: 'options', - tool: 'typescript', - }, - name: buildName({ - config: { - case: plugin.config.case, - }, - name: 'ClientOptions', - }), - }); - // reserve identifier for Webhooks - const symbolWebhooks = plugin.registerSymbol({ - meta: { - category: 'type', - resource: 'webhook', - tool: 'typescript', - variant: 'container', - }, - name: buildName({ - config: { - case: plugin.config.case, - }, - name: 'Webhooks', - }), - }); + // reserve node for ClientOptions + const nodeClientIndex = plugin.addNode(null); + // reserve node for Webhooks + const nodeWebhooksIndex = plugin.addNode(null); const servers: Array = []; const webhooks: Array = []; @@ -179,13 +153,29 @@ export const handlerV1: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => { }, ); - createClientOptions({ plugin, servers, symbolClientOptions }); + createClientOptions({ nodeIndex: nodeClientIndex, plugin, servers }); if (webhooks.length > 0) { + const symbol = plugin.symbol( + buildName({ + config: { + case: plugin.config.case, + }, + name: 'Webhooks', + }), + { + meta: { + category: 'type', + resource: 'webhook', + tool: 'typescript', + variant: 'container', + }, + }, + ); const node = $.type - .alias(symbolWebhooks) + .alias(symbol) .export() .type($.type.or(...webhooks)); - plugin.addNode(node); + plugin.updateNode(nodeWebhooksIndex, node); } }; diff --git a/packages/openapi-ts/src/plugins/shared/utils/instance.ts b/packages/openapi-ts/src/plugins/shared/utils/instance.ts index 4b0d2ec01..92c398822 100644 --- a/packages/openapi-ts/src/plugins/shared/utils/instance.ts +++ b/packages/openapi-ts/src/plugins/shared/utils/instance.ts @@ -106,9 +106,15 @@ export class PluginInstance { this.package = props.context.package; } - addNode(node: Node): void { + addNode(node: Node | null): number { return this.gen.nodes.add(node); } + removeNode(index: number): void { + return this.gen.nodes.remove(index); + } + updateNode(index: number, node: Node | null): void { + return this.gen.nodes.update(index, node); + } /** * Iterates over various input elements as specified by the event types, in From 1919405103f8ccba6c367b8d45104330edf80328 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 11:30:57 +0800 Subject: [PATCH 09/15] chore: remove deprecated APIs --- dev/openapi-ts.config.ts | 3 +- packages/codegen-core/src/symbols/registry.ts | 18 --- packages/codegen-core/src/symbols/types.d.ts | 15 --- .../sdk-nested-classes-instance/sdk.gen.ts | 36 +++--- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 36 +++--- .../type-format-valibot/sdk.gen.ts | 2 + .../type-format-valibot/transformers.gen.ts | 7 ++ .../transformers/type-format-zod/sdk.gen.ts | 2 + .../type-format-zod/transformers.gen.ts | 7 ++ .../sdk-nested-classes-instance/sdk.gen.ts | 36 +++--- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 36 +++--- .../type-format-valibot/sdk.gen.ts | 2 + .../type-format-valibot/transformers.gen.ts | 7 ++ .../transformers/type-format-zod/sdk.gen.ts | 2 + .../type-format-zod/transformers.gen.ts | 7 ++ .../transformers-all-of/transformers.gen.ts | 18 +++ .../transformers.gen.ts | 7 ++ .../transformers.gen.ts | 7 ++ .../sdk-nested-classes-instance/sdk.gen.ts | 36 +++--- .../plugins/@hey-api/sdk/instance/sdk.gen.ts | 36 +++--- .../type-format-valibot/sdk.gen.ts | 2 + .../type-format-valibot/transformers.gen.ts | 7 ++ .../transformers/type-format-zod/sdk.gen.ts | 2 + .../type-format-zod/transformers.gen.ts | 7 ++ .../transformers-all-of/transformers.gen.ts | 18 +++ .../transformers.gen.ts | 12 ++ .../transformers.gen.ts | 7 ++ .../method-class-conflict/instance/sdk.gen.ts | 36 +++--- .../src/plugins/@hey-api/sdk/shared/class.ts | 62 +++++----- .../plugins/@hey-api/transformers/plugin.ts | 28 ++--- .../src/plugins/shared/utils/instance.ts | 16 +-- .../src/plugins/zod/shared/operation.ts | 108 ++++++++++-------- 32 files changed, 356 insertions(+), 269 deletions(-) diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 51406dbff..fe320a1a6 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -44,9 +44,10 @@ export default defineConfig(() => { // 'full.yaml', // 'object-property-names.yaml', // 'openai.yaml', - 'opencode.yaml', + // 'opencode.yaml', // 'pagination-ref.yaml', // 'sdk-instance.yaml', + 'sdk-nested-classes.yaml', // 'string-with-format.yaml', // 'transformers.json', // 'transformers-recursive.json', diff --git a/packages/codegen-core/src/symbols/registry.ts b/packages/codegen-core/src/symbols/registry.ts index d7954b414..c101ea365 100644 --- a/packages/codegen-core/src/symbols/registry.ts +++ b/packages/codegen-core/src/symbols/registry.ts @@ -11,10 +11,6 @@ export class SymbolRegistry implements ISymbolRegistry { private _id: SymbolId = 0; private _indices: Map>> = new Map(); - /** - * @deprecated - */ - private _nodes: Map = new Map(); private _queryCache: Map> = new Map(); private _queryCacheDependencies: Map> = new Map(); @@ -29,13 +25,6 @@ export class SymbolRegistry implements ISymbolRegistry { : this.query(identifier)[0]; } - /** - * @deprecated - */ - getValue(symbolId: SymbolId): unknown { - return this._nodes.get(symbolId); - } - isRegistered(identifier: ISymbolIdentifier): boolean { const symbol = this.get(identifier); return symbol ? this._registered.has(symbol.id) : false; @@ -122,13 +111,6 @@ export class SymbolRegistry implements ISymbolRegistry { } } - /** - * @deprecated - */ - setValue(symbolId: SymbolId, value: unknown): Map { - return this._nodes.set(symbolId, value); - } - private buildCacheKey(filter: ISymbolMeta): QueryCacheKey { const indexKeySpace = this.buildIndexKeySpace(filter); return indexKeySpace diff --git a/packages/codegen-core/src/symbols/types.d.ts b/packages/codegen-core/src/symbols/types.d.ts index 348379e99..024312632 100644 --- a/packages/codegen-core/src/symbols/types.d.ts +++ b/packages/codegen-core/src/symbols/types.d.ts @@ -74,13 +74,6 @@ export interface ISymbolRegistry { * @returns The symbol, or undefined if not found. */ get(identifier: ISymbolIdentifier): Symbol | undefined; - /** - * Returns the value associated with a symbol ID. - * - * @param symbolId Symbol ID. - * @return The value associated with the symbol ID, or undefined if not found. - */ - getValue(symbolId: number): unknown; /** * Returns whether a symbol is registered in the registry. * @@ -123,12 +116,4 @@ export interface ISymbolRegistry { * @returns Array of all registered symbols, in insert order. */ registered(): IterableIterator; - /** - * Sets a value for a symbol by its ID. - * - * @param symbolId Symbol ID. - * @param value The value to set. - * @returns void - */ - setValue(symbolId: number, value: unknown): Map; } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index effd73175..42a9481df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Domains extends HeyApiClient { public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); @@ -50,24 +68,6 @@ export class Business extends HeyApiClient { providers = new Providers({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class NestedSdkWithInstance extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 966bfdf87..09d2b380f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Bar extends HeyApiClient { public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); @@ -50,24 +68,6 @@ export class Foo extends HeyApiClient { bar = new Bar({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class Sdk extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index c73c5bad5..b443e6ac2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,6 +4,7 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -23,6 +24,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index 37f15d4e5..db455df67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,6 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -21,6 +22,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index effd73175..42a9481df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Domains extends HeyApiClient { public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); @@ -50,24 +68,6 @@ export class Business extends HeyApiClient { providers = new Providers({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class NestedSdkWithInstance extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 966bfdf87..09d2b380f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Bar extends HeyApiClient { public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); @@ -50,24 +68,6 @@ export class Foo extends HeyApiClient { bar = new Bar({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class Sdk extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index c73c5bad5..b443e6ac2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,6 +4,7 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -23,6 +24,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index 37f15d4e5..db455df67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,6 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -21,6 +22,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts index 9c53d7569..5133e9e2c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetFooResponse } from './types.gen'; + const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { data.baz = new Date(data.baz); @@ -8,6 +10,22 @@ const quxSchemaResponseTransformer = (data: any) => { }; const bazSchemaResponseTransformer = (data: any) => { + data = quxSchemaResponseTransformer(data); data.bar = new Date(data.bar); return data; }; + +const barSchemaResponseTransformer = (data: any) => { + data.foo = data.foo.map((item: any) => bazSchemaResponseTransformer(item)); + return data; +}; + +const fooSchemaResponseTransformer = (data: any) => { + data.foo = data.foo.map((item: any) => barSchemaResponseTransformer(item)); + return data; +}; + +export const getFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts index 992665524..68360f01a 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { if (data.foo) { data.foo = new Date(data.foo); @@ -12,3 +14,8 @@ const fooSchemaResponseTransformer = (data: any) => { } return data; }; + +export const getFooResponseTransformer = async (data: any): Promise => { + data = data.map((item: any) => fooSchemaResponseTransformer(item)); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts index deb93e030..397ecdc84 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-recursive/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetTreeResponse } from './types.gen'; + const treeNodeSchemaResponseTransformer = (data: any) => { if (data.createdAt) { data.createdAt = new Date(data.createdAt); @@ -9,3 +11,8 @@ const treeNodeSchemaResponseTransformer = (data: any) => { } return data; }; + +export const getTreeResponseTransformer = async (data: any): Promise => { + data = data.map((item: any) => treeNodeSchemaResponseTransformer(item)); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts index effd73175..42a9481df 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Domains extends HeyApiClient { public get(options?: Options) { return (options?.client ?? this.client).get({ url: '/business/providers/domains', ...options }); @@ -50,24 +68,6 @@ export class Business extends HeyApiClient { providers = new Providers({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new NestedSdkWithInstance()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class NestedSdkWithInstance extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts index 966bfdf87..09d2b380f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class Bar extends HeyApiClient { public post(options?: Options) { return (options?.client ?? this.client).post({ url: '/foo/bar', ...options }); @@ -50,24 +68,6 @@ export class Foo extends HeyApiClient { bar = new Bar({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class Sdk extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts index c73c5bad5..b443e6ac2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/sdk.gen.ts @@ -4,6 +4,7 @@ import * as v from 'valibot'; import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { vPostFooData, vPostFooResponse } from './valibot.gen'; @@ -23,6 +24,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await v.parseAsync(vPostFooData, data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await v.parseAsync(vPostFooResponse, data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts index 37f15d4e5..db455df67 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/sdk.gen.ts @@ -2,6 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; +import { postFooResponseTransformer } from './transformers.gen'; import type { PostFooData, PostFooResponses } from './types.gen'; import { zPostFooData, zPostFooResponse } from './zod.gen'; @@ -21,6 +22,7 @@ export type Options(options?: Options) => (options?.client ?? client).post({ requestValidator: async (data) => await zPostFooData.parseAsync(data), + responseTransformer: postFooResponseTransformer, responseValidator: async (data) => await zPostFooResponse.parseAsync(data), url: '/foo', ...options diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts index 9c52054bc..cc9dcf841 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/transformers.gen.ts @@ -1,6 +1,13 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { PostFooResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { data.foo = BigInt(data.foo.toString()); return data; }; + +export const postFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts index 9c53d7569..5133e9e2c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetFooResponse } from './types.gen'; + const quxSchemaResponseTransformer = (data: any) => { if (data.baz) { data.baz = new Date(data.baz); @@ -8,6 +10,22 @@ const quxSchemaResponseTransformer = (data: any) => { }; const bazSchemaResponseTransformer = (data: any) => { + data = quxSchemaResponseTransformer(data); data.bar = new Date(data.bar); return data; }; + +const barSchemaResponseTransformer = (data: any) => { + data.foo = data.foo.map((item: any) => bazSchemaResponseTransformer(item)); + return data; +}; + +const fooSchemaResponseTransformer = (data: any) => { + data.foo = data.foo.map((item: any) => barSchemaResponseTransformer(item)); + return data; +}; + +export const getFooResponseTransformer = async (data: any): Promise => { + data = fooSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts index 281cc13b5..3d9ad6386 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetFooResponse, NestedDateObjectResponse } from './types.gen'; + const fooSchemaResponseTransformer = (data: any) => { if (data.foo) { data.foo = new Date(data.foo); @@ -16,6 +18,11 @@ const fooSchemaResponseTransformer = (data: any) => { return data; }; +export const getFooResponseTransformer = async (data: any): Promise => { + data = data.map((item: any) => fooSchemaResponseTransformer(item)); + return data; +}; + const nestedDateObjectSchemaResponseTransformer = (data: any) => { if (data.foo) { if (data.foo.bar) { @@ -24,3 +31,8 @@ const nestedDateObjectSchemaResponseTransformer = (data: any) => { } return data; }; + +export const nestedDateObjectResponseTransformer = async (data: any): Promise => { + data = nestedDateObjectSchemaResponseTransformer(data); + return data; +}; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts index deb93e030..397ecdc84 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-recursive/transformers.gen.ts @@ -1,5 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts +import type { GetTreeResponse } from './types.gen'; + const treeNodeSchemaResponseTransformer = (data: any) => { if (data.createdAt) { data.createdAt = new Date(data.createdAt); @@ -9,3 +11,8 @@ const treeNodeSchemaResponseTransformer = (data: any) => { } return data; }; + +export const getTreeResponseTransformer = async (data: any): Promise => { + data = data.map((item: any) => treeNodeSchemaResponseTransformer(item)); + return data; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts index 914b48e0c..2ba6a8fb3 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/method-class-conflict/instance/sdk.gen.ts @@ -28,6 +28,24 @@ class HeyApiClient { } } +class HeyApiRegistry { + private readonly defaultKey = 'default'; + + private readonly instances: Map = new Map(); + + get(key?: string): T { + const instance = this.instances.get(key ?? this.defaultKey); + if (!instance) { + throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); + } + return instance; + } + + set(value: T, key?: string): void { + this.instances.set(key ?? this.defaultKey, value); + } +} + export class AccountingCompanies extends HeyApiClient { public count(options?: Options) { return (options?.client ?? this.client).get({ url: '/api/v1/odata/AccountingCompanies/$count', ...options }); @@ -300,24 +318,6 @@ export class MapIdentityApi extends HeyApiClient { api = new Api({ client: this.client }); } -class HeyApiRegistry { - private readonly defaultKey = 'default'; - - private readonly instances: Map = new Map(); - - get(key?: string): T { - const instance = this.instances.get(key ?? this.defaultKey); - if (!instance) { - throw new Error(`No SDK client found. Create one with "new Sdk()" to fix this error.`); - } - return instance; - } - - set(value: T, key?: string): void { - this.instances.set(key ?? this.defaultKey, value); - } -} - export class Sdk extends HeyApiClient { public static readonly __registry = new HeyApiRegistry(); diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts index 745933e91..c59e9766f 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/class.ts @@ -305,27 +305,22 @@ export const generateClassSdk = ({ }, ); - const symbolHeyApiClient = plugin.config.instance - ? plugin.registerSymbol({ - meta: { - category: 'utility', - resource: 'class', - resourceId: 'HeyApiClient', - tool: 'sdk', - }, - name: 'HeyApiClient', - }) + const heyApiClientIndex = plugin.config.instance + ? plugin.addNode(null) : undefined; - const symbolHeyApiRegistry = plugin.config.instance - ? plugin.registerSymbol({ - meta: { - category: 'utility', - resource: 'class', - resourceId: 'HeyApiRegistry', - tool: 'sdk', - }, - name: 'HeyApiRegistry', - }) + const symbolHeyApiClient = + heyApiClientIndex !== undefined + ? plugin.symbol('HeyApiClient', { + meta: { + category: 'utility', + resource: 'class', + resourceId: 'HeyApiClient', + tool: 'sdk', + }, + }) + : undefined; + const heyApiRegistryIndex = plugin.config.instance + ? plugin.addNode(null) : undefined; const generateClass = (currentClass: SdkClassEntry) => { @@ -400,25 +395,28 @@ export const generateClassSdk = ({ } } - if (symbolHeyApiClient && !symbolHeyApiClient.node) { + if ( + heyApiClientIndex !== undefined && + symbolHeyApiClient && + !symbolHeyApiClient.node + ) { const node = createClientClass({ plugin, symbol: symbolHeyApiClient, }); - plugin.addNode(node); + plugin.updateNode(heyApiClientIndex, node); } - const symbol = plugin.registerSymbol({ + const symbol = plugin.symbol(resourceId, { meta: { category: 'utility', resource: 'class', resourceId, tool: 'sdk', }, - name: resourceId, }); - if (currentClass.root && symbolHeyApiRegistry) { + if (currentClass.root && heyApiRegistryIndex !== undefined) { const symClient = plugin.getSymbol({ category: 'client', }); @@ -454,18 +452,26 @@ export const generateClassSdk = ({ currentClass.nodes.unshift(ctor, $.newline()); } + const symbolRegistry = plugin.symbol('HeyApiRegistry', { + meta: { + category: 'utility', + resource: 'class', + resourceId: 'HeyApiRegistry', + tool: 'sdk', + }, + }); const node = createRegistryClass({ plugin, sdkSymbol: symbol, - symbol: symbolHeyApiRegistry, + symbol: symbolRegistry, }); - plugin.addNode(node); + plugin.updateNode(heyApiRegistryIndex, node); const registryNode = $.field(registryName, (f) => f .public() .static() .readonly() - .assign($.new(symbolHeyApiRegistry).generic(symbol)), + .assign($.new(symbolRegistry).generic(symbol)), ); currentClass.nodes.unshift(registryNode, $.newline()); } diff --git a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts index c76298dc5..88b01d7c8 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/transformers/plugin.ts @@ -59,33 +59,26 @@ const processSchemaType = ({ resource: 'definition', resourceId: schema.$ref, }; - - let symbol = plugin.getSymbol(query); - - if (!symbol) { - // Register a placeholder symbol immediately and set its value to null - // as a stop token to prevent infinite recursion for self-referential - // schemas. We also mark this symbol as "building" so that nested - // references to it can emit calls that will be implemented later. - symbol = plugin.registerSymbol({ - meta: query, - name: buildName({ + const symbol = + plugin.getSymbol(query) ?? + plugin.symbol( + buildName({ config: { case: 'camelCase', name: '{{name}}SchemaResponseTransformer', }, name: refToName(schema.$ref), }), - }); - plugin.setSymbolValue(symbol, null); - } + { + meta: query, + }, + ); // Only compute the implementation if the symbol isn't already being built. // This prevents infinite recursion on self-referential schemas. We still // allow emitting a call when the symbol is currently being built so // parent nodes can reference the transformer that will be emitted later. - const existingValue = plugin.gen.symbols.getValue(symbol.id); - if (!existingValue && !buildingSymbols.has(symbol.id)) { + if (!symbol.node && !buildingSymbols.has(symbol.id)) { buildingSymbols.add(symbol.id); try { const refSchema = plugin.context.resolveIrRef( @@ -113,8 +106,7 @@ const processSchemaType = ({ // Only emit a call if the symbol has a value (implementation) OR the // symbol is currently being built (recursive reference) — in the // latter case we allow emitting a call that will be implemented later. - const currentValue = plugin.gen.symbols.getValue(symbol.id); - if (currentValue || buildingSymbols.has(symbol.id)) { + if (symbol.node || buildingSymbols.has(symbol.id)) { const ref = plugin.referenceSymbol(query); const callExpression = $(ref).call(dataExpression); diff --git a/packages/openapi-ts/src/plugins/shared/utils/instance.ts b/packages/openapi-ts/src/plugins/shared/utils/instance.ts index 92c398822..de15a884b 100644 --- a/packages/openapi-ts/src/plugins/shared/utils/instance.ts +++ b/packages/openapi-ts/src/plugins/shared/utils/instance.ts @@ -317,6 +317,9 @@ export class PluginInstance { return this.gen.symbols.reference(meta); } + /** + * @deprecated use `plugin.symbol()` instead + */ registerSymbol(symbol: SymbolIn): Symbol { return this.symbol(symbol.name, symbol); } @@ -361,19 +364,6 @@ export class PluginInstance { return symbolOut; } - /** - * @deprecated use addNode - */ - setSymbolValue(symbol: Symbol, value: unknown): void { - for (const hook of this.eventHooks['symbol:setValue:before']) { - hook({ plugin: this, symbol, value }); - } - this.gen.symbols.setValue(symbol.id, value); - for (const hook of this.eventHooks['symbol:setValue:after']) { - hook({ plugin: this, symbol, value }); - } - } - private buildEventHooks(): EventHooks { const result: EventHooks = { 'plugin:handler:after': [], diff --git a/packages/openapi-ts/src/plugins/zod/shared/operation.ts b/packages/openapi-ts/src/plugins/zod/shared/operation.ts index d62e6b875..7bc41c05c 100644 --- a/packages/openapi-ts/src/plugins/zod/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/zod/shared/operation.ts @@ -118,38 +118,42 @@ export const irOperationToAst = ({ schemaData.required = [...requiredProperties]; const ast = getAst(schemaData, fromRef(state.path)); - const symbol = plugin.registerSymbol({ - meta: { - category: 'schema', - path: fromRef(state.path), - resource: 'operation', - resourceId: operation.id, - role: 'data', - tags: fromRef(state.tags), - tool: 'zod', - }, - name: buildName({ + const symbol = plugin.symbol( + buildName({ config: plugin.config.requests, name: operation.id, }), - }); + { + meta: { + category: 'schema', + path: fromRef(state.path), + resource: 'operation', + resourceId: operation.id, + role: 'data', + tags: fromRef(state.tags), + tool: 'zod', + }, + }, + ); const typeInferSymbol = plugin.config.requests.types.infer.enabled - ? plugin.registerSymbol({ - meta: { - category: 'type', - path: fromRef(state.path), - resource: 'operation', - resourceId: operation.id, - role: 'data', - tags: fromRef(state.tags), - tool: 'zod', - variant: 'infer', - }, - name: buildName({ + ? plugin.symbol( + buildName({ config: plugin.config.requests.types.infer, name: operation.id, }), - }) + { + meta: { + category: 'type', + path: fromRef(state.path), + resource: 'operation', + resourceId: operation.id, + role: 'data', + tags: fromRef(state.tags), + tool: 'zod', + variant: 'infer', + }, + }, + ) : undefined; exportAst({ ast, @@ -167,38 +171,42 @@ export const irOperationToAst = ({ if (response) { const path = [...fromRef(state.path), 'responses']; const ast = getAst(response, path); - const symbol = plugin.registerSymbol({ - meta: { - category: 'schema', - path, - resource: 'operation', - resourceId: operation.id, - role: 'responses', - tags: fromRef(state.tags), - tool: 'zod', - }, - name: buildName({ + const symbol = plugin.symbol( + buildName({ config: plugin.config.responses, name: operation.id, }), - }); + { + meta: { + category: 'schema', + path, + resource: 'operation', + resourceId: operation.id, + role: 'responses', + tags: fromRef(state.tags), + tool: 'zod', + }, + }, + ); const typeInferSymbol = plugin.config.responses.types.infer.enabled - ? plugin.registerSymbol({ - meta: { - category: 'type', - path, - resource: 'operation', - resourceId: operation.id, - role: 'responses', - tags: fromRef(state.tags), - tool: 'zod', - variant: 'infer', - }, - name: buildName({ + ? plugin.symbol( + buildName({ config: plugin.config.responses.types.infer, name: operation.id, }), - }) + { + meta: { + category: 'type', + path, + resource: 'operation', + resourceId: operation.id, + role: 'responses', + tags: fromRef(state.tags), + tool: 'zod', + variant: 'infer', + }, + }, + ) : undefined; exportAst({ ast, From 8e44ea8f48e461335fa87b90a49d5bafa3d57e0f Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 13:05:00 +0800 Subject: [PATCH 10/15] chore: normalize external path --- dev/openapi-ts.config.ts | 7 ++++--- packages/codegen-core/src/files/file.ts | 4 +++- packages/codegen-core/src/files/registry.ts | 5 ++++- packages/openapi-ts/src/ts-dsl/render/utils.ts | 7 +++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index fe320a1a6..d3fbdf807 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -35,19 +35,20 @@ export default defineConfig(() => { // }, path: path.resolve( getSpecsPath(), - // '3.0.x', - '3.1.x', + '3.0.x', + // '3.1.x', // 'circular.yaml', // 'dutchie.json', // 'enum-names-values.yaml', // 'invalid', // 'full.yaml', + 'sdk-method-class-conflict.yaml', // 'object-property-names.yaml', // 'openai.yaml', // 'opencode.yaml', // 'pagination-ref.yaml', // 'sdk-instance.yaml', - 'sdk-nested-classes.yaml', + // 'sdk-nested-classes.yaml', // 'string-with-format.yaml', // 'transformers.json', // 'transformers-recursive.json', diff --git a/packages/codegen-core/src/files/file.ts b/packages/codegen-core/src/files/file.ts index 0e0b43d3d..3e5aad135 100644 --- a/packages/codegen-core/src/files/file.ts +++ b/packages/codegen-core/src/files/file.ts @@ -1,3 +1,5 @@ +import path from 'node:path'; + import type { ExportModule, ImportModule } from '../bindings'; import { fileBrand } from '../brands'; import { debug } from '../debug'; @@ -63,7 +65,7 @@ export class File { this.external = input.external ?? false; this.id = id; if (input.language !== undefined) this._language = input.language; - this._logicalFilePath = input.logicalFilePath; + this._logicalFilePath = input.logicalFilePath.split(path.sep).join('/'); if (input.name !== undefined) this._name = input.name; this.project = project; } diff --git a/packages/codegen-core/src/files/registry.ts b/packages/codegen-core/src/files/registry.ts index 428647528..3ed0f7473 100644 --- a/packages/codegen-core/src/files/registry.ts +++ b/packages/codegen-core/src/files/registry.ts @@ -1,3 +1,5 @@ +import path from 'node:path'; + import type { IProject } from '../project/types'; import { File } from './file'; import type { FileKeyArgs, IFileIn, IFileRegistry } from './types'; @@ -50,6 +52,7 @@ export class FileRegistry implements IFileRegistry { } private createFileKey(args: FileKeyArgs): string { - return `${args.external ? 'ext:' : ''}${args.logicalFilePath}${args.language ? `:${args.language}` : ''}`; + const logicalPath = args.logicalFilePath.split(path.sep).join('/'); + return `${args.external ? 'ext:' : ''}${logicalPath}${args.language ? `:${args.language}` : ''}`; } } diff --git a/packages/openapi-ts/src/ts-dsl/render/utils.ts b/packages/openapi-ts/src/ts-dsl/render/utils.ts index 5ffa2098d..47f1deebf 100644 --- a/packages/openapi-ts/src/ts-dsl/render/utils.ts +++ b/packages/openapi-ts/src/ts-dsl/render/utils.ts @@ -97,9 +97,8 @@ export const moduleSortKey = ({ preferFileExtension: string; root: string; }): SortKey => { - const fromPath = fromFile.finalPath!; - const filePath = file.finalPath!; - let modulePath = fromPath; + const filePath = file.finalPath!.split(path.sep).join('/'); + let modulePath = fromFile.finalPath!.split(path.sep).join('/'); // built-ins // TODO: based on nodeBuiltins set @@ -110,7 +109,7 @@ export const moduleSortKey = ({ } // outside project root - if (!modulePath.startsWith(root)) { + if (!modulePath.startsWith(root.split(path.sep).join('/'))) { return [1, 0, modulePath]; } From d8b973b9f9872363f122ebdc7eba76ec99f190a6 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 14:43:30 +0800 Subject: [PATCH 11/15] chore: clean up reserved keywords --- dev/openapi-ts.config.ts | 8 +- .../openapi-ts-fastify/src/client/index.ts | 2 +- .../src/client/types.gen.ts | 8 +- .../openapi-ts-openai/src/client/index.ts | 2 +- .../openapi-ts-openai/src/client/types.gen.ts | 16 ++-- .../@angular/common/default-class/index.ts | 2 +- .../common/default-class/types.gen.ts | 2 +- .../plugins/@angular/common/default/index.ts | 2 +- .../@angular/common/default/types.gen.ts | 2 +- .../plugins/@hey-api/sdk/default/index.ts | 2 +- .../plugins/@hey-api/sdk/default/types.gen.ts | 2 +- .../@hey-api/sdk/throwOnError/index.ts | 2 +- .../@hey-api/sdk/throwOnError/types.gen.ts | 2 +- .../plugins/@pinia/colada/fetch/index.ts | 2 +- .../plugins/@pinia/colada/fetch/types.gen.ts | 2 +- .../angular-query-experimental/axios/index.ts | 2 +- .../axios/types.gen.ts | 2 +- .../angular-query-experimental/fetch/index.ts | 2 +- .../fetch/types.gen.ts | 2 +- .../@tanstack/react-query/axios/index.ts | 2 +- .../@tanstack/react-query/axios/types.gen.ts | 2 +- .../@tanstack/react-query/fetch/index.ts | 2 +- .../@tanstack/react-query/fetch/types.gen.ts | 2 +- .../@tanstack/solid-query/axios/index.ts | 2 +- .../@tanstack/solid-query/axios/types.gen.ts | 2 +- .../@tanstack/solid-query/fetch/index.ts | 2 +- .../@tanstack/solid-query/fetch/types.gen.ts | 2 +- .../@tanstack/svelte-query/axios/index.ts | 2 +- .../@tanstack/svelte-query/axios/types.gen.ts | 2 +- .../@tanstack/svelte-query/fetch/index.ts | 2 +- .../@tanstack/svelte-query/fetch/types.gen.ts | 2 +- .../@tanstack/vue-query/axios/index.ts | 2 +- .../@tanstack/vue-query/axios/types.gen.ts | 2 +- .../@tanstack/vue-query/fetch/index.ts | 2 +- .../@tanstack/vue-query/fetch/types.gen.ts | 2 +- .../2.0.x/plugins/fastify/default/index.ts | 2 +- .../plugins/fastify/default/types.gen.ts | 2 +- .../sdks/__snapshots__/opencode/flat/index.ts | 2 +- .../__snapshots__/opencode/flat/types.gen.ts | 6 +- .../__snapshots__/opencode/grouped/index.ts | 2 +- .../opencode/grouped/types.gen.ts | 6 +- .../plugins/@hey-api/sdk/shared/functions.ts | 3 +- .../plugins/@hey-api/sdk/shared/operation.ts | 3 +- .../src/plugins/@hey-api/sdk/shared/regexp.ts | 2 + .../@hey-api/typescript/shared/export.ts | 6 +- packages/openapi-ts/src/ts-dsl/decl/class.ts | 4 +- .../openapi-ts/src/ts-dsl/decl/decorator.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/enum.ts | 4 +- packages/openapi-ts/src/ts-dsl/decl/func.ts | 4 +- packages/openapi-ts/src/ts-dsl/expr/attr.ts | 6 +- packages/openapi-ts/src/ts-dsl/index.ts | 6 +- packages/openapi-ts/src/ts-dsl/stmt/var.ts | 4 +- packages/openapi-ts/src/ts-dsl/type/alias.ts | 4 +- .../src/ts-dsl/utils/__tests__/name.test.ts | 6 +- packages/openapi-ts/src/ts-dsl/utils/name.ts | 60 ++++++------ .../openapi-ts/src/ts-dsl/utils/regexp.ts | 37 +++---- .../openapi-ts/src/ts-dsl/utils/reserved.ts | 96 +++++++++++++++++++ 57 files changed, 234 insertions(+), 131 deletions(-) create mode 100644 packages/openapi-ts/src/plugins/@hey-api/sdk/shared/regexp.ts create mode 100644 packages/openapi-ts/src/ts-dsl/utils/reserved.ts diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index d3fbdf807..a32f38a5d 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -35,17 +35,17 @@ export default defineConfig(() => { // }, path: path.resolve( getSpecsPath(), - '3.0.x', - // '3.1.x', + // '3.0.x', + '3.1.x', // 'circular.yaml', // 'dutchie.json', // 'enum-names-values.yaml', // 'invalid', // 'full.yaml', - 'sdk-method-class-conflict.yaml', + // 'sdk-method-class-conflict.yaml', // 'object-property-names.yaml', // 'openai.yaml', - // 'opencode.yaml', + 'opencode.yaml', // 'pagination-ref.yaml', // 'sdk-instance.yaml', // 'sdk-nested-classes.yaml', diff --git a/examples/openapi-ts-fastify/src/client/index.ts b/examples/openapi-ts-fastify/src/client/index.ts index 304c5d749..9b3d76871 100644 --- a/examples/openapi-ts-fastify/src/client/index.ts +++ b/examples/openapi-ts-fastify/src/client/index.ts @@ -2,12 +2,12 @@ export { createPets, listPets, type Options, showPetById } from './sdk.gen'; export type { - _Error, ClientOptions, CreatePetsData, CreatePetsError, CreatePetsErrors, CreatePetsResponses, + Error, ListPetsData, ListPetsError, ListPetsErrors, diff --git a/examples/openapi-ts-fastify/src/client/types.gen.ts b/examples/openapi-ts-fastify/src/client/types.gen.ts index 054b6615e..bd956ecb7 100644 --- a/examples/openapi-ts-fastify/src/client/types.gen.ts +++ b/examples/openapi-ts-fastify/src/client/types.gen.ts @@ -12,7 +12,7 @@ export type Pet = { export type Pets = Array; -export type _Error = { +export type Error = { code: number; message: string; }; @@ -33,7 +33,7 @@ export type ListPetsErrors = { /** * unexpected error */ - default: _Error; + default: Error; }; export type ListPetsError = ListPetsErrors[keyof ListPetsErrors]; @@ -58,7 +58,7 @@ export type CreatePetsErrors = { /** * unexpected error */ - default: _Error; + default: Error; }; export type CreatePetsError = CreatePetsErrors[keyof CreatePetsErrors]; @@ -86,7 +86,7 @@ export type ShowPetByIdErrors = { /** * unexpected error */ - default: _Error; + default: Error; }; export type ShowPetByIdError = ShowPetByIdErrors[keyof ShowPetByIdErrors]; diff --git a/examples/openapi-ts-openai/src/client/index.ts b/examples/openapi-ts-openai/src/client/index.ts index 29b6bf2df..87dd223a3 100644 --- a/examples/openapi-ts-openai/src/client/index.ts +++ b/examples/openapi-ts-openai/src/client/index.ts @@ -2,7 +2,6 @@ export { OpenAi, type Options } from './sdk.gen'; export { - type _Error, type ActivateOrganizationCertificatesData, type ActivateOrganizationCertificatesResponse, type ActivateOrganizationCertificatesResponses, @@ -403,6 +402,7 @@ export { type Drag, type EasyInputMessage, type Embedding, + type Error, type ErrorEvent, type ErrorResponse, type Eval, diff --git a/examples/openapi-ts-openai/src/client/types.gen.ts b/examples/openapi-ts-openai/src/client/types.gen.ts index ac7532f67..154964e7c 100644 --- a/examples/openapi-ts-openai/src/client/types.gen.ts +++ b/examples/openapi-ts-openai/src/client/types.gen.ts @@ -5404,7 +5404,7 @@ export type Embedding = { object: 'embedding'; }; -export type _Error = { +export type Error = { code: string; message: string; param: string; @@ -5416,11 +5416,11 @@ export type _Error = { */ export type ErrorEvent = { event: 'error'; - data: _Error; + data: Error; }; export type ErrorResponse = { - error: _Error; + error: Error; }; /** @@ -19409,7 +19409,7 @@ export type DeleteEvalErrors = { /** * Evaluation not found. */ - 404: _Error; + 404: Error; }; export type DeleteEvalError = DeleteEvalErrors[keyof DeleteEvalErrors]; @@ -19533,7 +19533,7 @@ export type CreateEvalRunErrors = { /** * Bad request (for example, missing eval object) */ - 400: _Error; + 400: Error; }; export type CreateEvalRunError = CreateEvalRunErrors[keyof CreateEvalRunErrors]; @@ -19568,7 +19568,7 @@ export type DeleteEvalRunErrors = { /** * Run not found */ - 404: _Error; + 404: Error; }; export type DeleteEvalRunError = DeleteEvalRunErrors[keyof DeleteEvalRunErrors]; @@ -22116,7 +22116,7 @@ export type DeleteResponseErrors = { /** * Not Found */ - 404: _Error; + 404: Error; }; export type DeleteResponseError = @@ -22198,7 +22198,7 @@ export type CancelResponseErrors = { /** * Not Found */ - 404: _Error; + 404: Error; }; export type CancelResponseError = diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts index 094d20902..0f0ece794 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts index 094d20902..0f0ece794 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts index 094d20902..0f0ece794 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts index 094d20902..0f0ece794 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts index 094d20902..0f0ece794 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts index 0bd4f3256..e45478b1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, headCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, optionsCallWithoutParametersAndResponse, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from './sdk.gen'; -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts index b05f3d9d8..e6075bae2 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/index.ts @@ -1,3 +1,3 @@ // This file is auto-generated by @hey-api/openapi-ts -export type { _Date, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; +export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen'; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts index d5dadd291..1723622dc 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/fastify/default/types.gen.ts @@ -174,7 +174,7 @@ export type DictionaryWithProperties = { /** * This is a type-only model that defines Date as a string */ -export type _Date = string; +export type Date = string; /** * This is a model with one number property diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts index 63cb483a9..1c5264152 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { appAgents, appGet, appInit, appLog, authSet, configGet, configProviders, eventSubscribe, fileRead, fileStatus, findFiles, findSymbols, findText, type Options, postSessionByIdPermissionsByPermissionId, sessionAbort, sessionChat, sessionChildren, sessionCreate, sessionDelete, sessionGet, sessionInit, sessionList, sessionMessage, sessionMessages, sessionRevert, sessionShare, sessionShell, sessionSummarize, sessionUnrevert, sessionUnshare, sessionUpdate, tuiAppendPrompt, tuiClearPrompt, tuiExecuteCommand, tuiOpenHelp, tuiOpenModels, tuiOpenSessions, tuiOpenThemes, tuiShowToast, tuiSubmitPrompt } from './sdk.gen'; -export type { _Error, Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; +export type { Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Error, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts index 81a523f49..ccd376c4b 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/types.gen.ts @@ -1017,7 +1017,7 @@ export type McpRemoteConfig = { export type LayoutConfig = 'auto' | 'stretch'; -export type _Error = { +export type Error = { data: { [key: string]: unknown; }; @@ -1217,7 +1217,7 @@ export type SessionCreateErrors = { /** * Bad request */ - 400: _Error; + 400: Error; }; export type SessionCreateError = SessionCreateErrors[keyof SessionCreateErrors]; @@ -1928,7 +1928,7 @@ export type AuthSetErrors = { /** * Bad request */ - 400: _Error; + 400: Error; }; export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts index 63cb483a9..1c5264152 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { appAgents, appGet, appInit, appLog, authSet, configGet, configProviders, eventSubscribe, fileRead, fileStatus, findFiles, findSymbols, findText, type Options, postSessionByIdPermissionsByPermissionId, sessionAbort, sessionChat, sessionChildren, sessionCreate, sessionDelete, sessionGet, sessionInit, sessionList, sessionMessage, sessionMessages, sessionRevert, sessionShare, sessionShell, sessionSummarize, sessionUnrevert, sessionUnshare, sessionUpdate, tuiAppendPrompt, tuiClearPrompt, tuiExecuteCommand, tuiOpenHelp, tuiOpenModels, tuiOpenSessions, tuiOpenThemes, tuiShowToast, tuiSubmitPrompt } from './sdk.gen'; -export type { _Error, Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; +export type { Agent, AgentConfig, AgentPart, AgentPartInput, ApiAuth, App, AppAgentsData, AppAgentsResponse, AppAgentsResponses, AppGetData, AppGetResponse, AppGetResponses, AppInitData, AppInitResponse, AppInitResponses, AppLogData, AppLogResponse, AppLogResponses, AssistantMessage, Auth, AuthSetData, AuthSetError, AuthSetErrors, AuthSetResponse, AuthSetResponses, ClientOptions, Config, ConfigGetData, ConfigGetResponse, ConfigGetResponses, ConfigProvidersData, ConfigProvidersResponse, ConfigProvidersResponses, Error, Event, EventFileEdited, EventFileWatcherUpdated, EventIdeInstalled, EventInstallationUpdated, EventLspClientDiagnostics, EventMessagePartRemoved, EventMessagePartUpdated, EventMessageRemoved, EventMessageUpdated, EventPermissionReplied, EventPermissionUpdated, EventServerConnected, EventSessionDeleted, EventSessionError, EventSessionIdle, EventSessionUpdated, EventStorageWrite, EventSubscribeData, EventSubscribeResponse, EventSubscribeResponses, File, FilePart, FilePartInput, FilePartSource, FilePartSourceText, FileReadData, FileReadResponse, FileReadResponses, FileSource, FileStatusData, FileStatusResponse, FileStatusResponses, FindFilesData, FindFilesResponse, FindFilesResponses, FindSymbolsData, FindSymbolsResponse, FindSymbolsResponses, FindTextData, FindTextResponse, FindTextResponses, KeybindsConfig, LayoutConfig, McpLocalConfig, McpRemoteConfig, Message, MessageAbortedError, MessageOutputLengthError, Model, OAuth, Part, PatchPart, Permission, PostSessionByIdPermissionsByPermissionIdData, PostSessionByIdPermissionsByPermissionIdResponse, PostSessionByIdPermissionsByPermissionIdResponses, Provider, ProviderAuthError, Range, ReasoningPart, Session, SessionAbortData, SessionAbortResponse, SessionAbortResponses, SessionChatData, SessionChatResponse, SessionChatResponses, SessionChildrenData, SessionChildrenResponse, SessionChildrenResponses, SessionCreateData, SessionCreateError, SessionCreateErrors, SessionCreateResponse, SessionCreateResponses, SessionDeleteData, SessionDeleteResponse, SessionDeleteResponses, SessionGetData, SessionGetResponse, SessionGetResponses, SessionInitData, SessionInitResponse, SessionInitResponses, SessionListData, SessionListResponse, SessionListResponses, SessionMessageData, SessionMessageResponse, SessionMessageResponses, SessionMessagesData, SessionMessagesResponse, SessionMessagesResponses, SessionRevertData, SessionRevertResponse, SessionRevertResponses, SessionShareData, SessionShareResponse, SessionShareResponses, SessionShellData, SessionShellResponse, SessionShellResponses, SessionSummarizeData, SessionSummarizeResponse, SessionSummarizeResponses, SessionUnrevertData, SessionUnrevertResponse, SessionUnrevertResponses, SessionUnshareData, SessionUnshareResponse, SessionUnshareResponses, SessionUpdateData, SessionUpdateResponse, SessionUpdateResponses, SnapshotPart, StepFinishPart, StepStartPart, Symbol, SymbolSource, TextPart, TextPartInput, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, TuiAppendPromptData, TuiAppendPromptResponse, TuiAppendPromptResponses, TuiClearPromptData, TuiClearPromptResponse, TuiClearPromptResponses, TuiExecuteCommandData, TuiExecuteCommandResponse, TuiExecuteCommandResponses, TuiOpenHelpData, TuiOpenHelpResponse, TuiOpenHelpResponses, TuiOpenModelsData, TuiOpenModelsResponse, TuiOpenModelsResponses, TuiOpenSessionsData, TuiOpenSessionsResponse, TuiOpenSessionsResponses, TuiOpenThemesData, TuiOpenThemesResponse, TuiOpenThemesResponses, TuiShowToastData, TuiShowToastResponse, TuiShowToastResponses, TuiSubmitPromptData, TuiSubmitPromptResponse, TuiSubmitPromptResponses, UnknownError, UserMessage, WellKnownAuth } from './types.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts index 81a523f49..ccd376c4b 100644 --- a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/grouped/types.gen.ts @@ -1017,7 +1017,7 @@ export type McpRemoteConfig = { export type LayoutConfig = 'auto' | 'stretch'; -export type _Error = { +export type Error = { data: { [key: string]: unknown; }; @@ -1217,7 +1217,7 @@ export type SessionCreateErrors = { /** * Bad request */ - 400: _Error; + 400: Error; }; export type SessionCreateError = SessionCreateErrors[keyof SessionCreateErrors]; @@ -1928,7 +1928,7 @@ export type AuthSetErrors = { /** * Bad request */ - 400: _Error; + 400: Error; }; export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]; diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts index fe1d5b612..42a483f04 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/functions.ts @@ -4,11 +4,12 @@ import { createOperationComment, isOperationOptionsRequired, } from '~/plugins/shared/utils/operation'; -import { $, reservedJavaScriptKeywordsRegExp } from '~/ts-dsl'; +import { $ } from '~/ts-dsl'; import type { HeyApiSdkPlugin } from '../types'; import { nuxtTypeComposable, nuxtTypeDefault } from './constants'; import { operationParameters, operationStatements } from './operation'; +import { reservedJavaScriptKeywordsRegExp } from './regexp'; const serviceFunctionIdentifier = ({ id, diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts index 84a6eaa41..3a8f88ffa 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/operation.ts @@ -6,7 +6,7 @@ import { statusCodeToGroup } from '~/ir/operation'; import type { IR } from '~/ir/types'; import { sanitizeNamespaceIdentifier } from '~/openApi/common/parser/sanitize'; import { getClientPlugin } from '~/plugins/@hey-api/client-core/utils'; -import { $, reservedJavaScriptKeywordsRegExp } from '~/ts-dsl'; +import { $ } from '~/ts-dsl'; import { stringCase } from '~/utils/stringCase'; import { transformClassName } from '~/utils/transform'; @@ -14,6 +14,7 @@ import type { Field, Fields } from '../../client-core/bundle/params'; import type { HeyApiSdkPlugin } from '../types'; import { operationAuth } from './auth'; import { nuxtTypeComposable, nuxtTypeDefault } from './constants'; +import { reservedJavaScriptKeywordsRegExp } from './regexp'; import { getSignatureParameters } from './signature'; import { createRequestValidator, createResponseValidator } from './validator'; diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/regexp.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/regexp.ts new file mode 100644 index 000000000..1af0b9a29 --- /dev/null +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/shared/regexp.ts @@ -0,0 +1,2 @@ +export const reservedJavaScriptKeywordsRegExp = + /^(arguments|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|from|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts index a68ffd8aa..87f259187 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts @@ -4,7 +4,7 @@ import type { IR } from '~/ir/types'; import { buildName } from '~/openApi/shared/utils/name'; import { createSchemaComment } from '~/plugins/shared/utils/schema'; import type { MaybeTsDsl, TypeTsDsl } from '~/ts-dsl'; -import { $, numberRegExp } from '~/ts-dsl'; +import { $, regexp } from '~/ts-dsl'; import { pathToJsonPointer, refToName } from '~/utils/ref'; import { stringCase } from '~/utils/stringCase'; @@ -58,10 +58,10 @@ const schemaToEnumObject = ({ value: key, }); - numberRegExp.lastIndex = 0; + regexp.number.lastIndex = 0; // TypeScript enum keys cannot be numbers if ( - numberRegExp.test(key) && + regexp.number.test(key) && plugin.config.enums.enabled && (plugin.config.enums.mode === 'typescript' || plugin.config.enums.mode === 'typescript-const') diff --git a/packages/openapi-ts/src/ts-dsl/decl/class.ts b/packages/openapi-ts/src/ts-dsl/decl/class.ts index 7bd3b2155..14e145213 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/class.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/class.ts @@ -9,7 +9,7 @@ import { DecoratorMixin } from '../mixins/decorator'; import { DocMixin } from '../mixins/doc'; import { AbstractMixin, DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; -import { safeSymbolName } from '../utils/name'; +import { safeRuntimeName } from '../utils/name'; import { FieldTsDsl } from './field'; import { InitTsDsl } from './init'; import { MethodTsDsl } from './method'; @@ -38,7 +38,7 @@ export class ClassTsDsl extends Mixed { this.name = ref(name); if (isSymbol(name)) { name.setKind('class'); - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeRuntimeName); name.setNode(this); } } diff --git a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts index 3f1eeec09..b7237e68b 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/decorator.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/decorator.ts @@ -5,7 +5,7 @@ import ts from 'typescript'; import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { ArgsMixin } from '../mixins/args'; -import { safeSymbolName } from '../utils/name'; +import { safeRuntimeName } from '../utils/name'; export type DecoratorName = Symbol | string | MaybeTsDsl; @@ -23,7 +23,7 @@ export class DecoratorTsDsl extends Mixed { super(); this.name = ref(name); if (isSymbol(name)) { - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeRuntimeName); } this.args(...args); } diff --git a/packages/openapi-ts/src/ts-dsl/decl/enum.ts b/packages/openapi-ts/src/ts-dsl/decl/enum.ts index 6665f7355..79c721fdf 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/enum.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/enum.ts @@ -6,7 +6,7 @@ import type { MaybeTsDsl } from '../base'; import { TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ConstMixin, ExportMixin } from '../mixins/modifiers'; -import { safeSymbolName } from '../utils/name'; +import { safeRuntimeName } from '../utils/name'; import { EnumMemberTsDsl } from './member'; export type EnumName = Symbol | string; @@ -26,7 +26,7 @@ export class EnumTsDsl extends Mixed { this._name = ref(name); if (isSymbol(name)) { name.setKind('enum'); - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeRuntimeName); name.setNode(this); } fn?.(this); diff --git a/packages/openapi-ts/src/ts-dsl/decl/func.ts b/packages/openapi-ts/src/ts-dsl/decl/func.ts index 25a3e3a8a..78fcbc174 100644 --- a/packages/openapi-ts/src/ts-dsl/decl/func.ts +++ b/packages/openapi-ts/src/ts-dsl/decl/func.ts @@ -19,7 +19,7 @@ import { ParamMixin } from '../mixins/param'; import { TypeParamsMixin } from '../mixins/type-params'; import { BlockTsDsl } from '../stmt/block'; import { TypeExprTsDsl } from '../type/expr'; -import { safeSymbolName } from '../utils/name'; +import { safeRuntimeName } from '../utils/name'; export type FuncMode = 'arrow' | 'decl' | 'expr'; export type FuncName = Symbol | string; @@ -70,7 +70,7 @@ class ImplFuncTsDsl extends Mixed { this.name = ref(name); if (isSymbol(name)) { name.setKind('function'); - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeRuntimeName); name.setNode(this); } fn?.(this as unknown as FuncTsDsl<'decl'>); diff --git a/packages/openapi-ts/src/ts-dsl/expr/attr.ts b/packages/openapi-ts/src/ts-dsl/expr/attr.ts index 179da70c1..635451126 100644 --- a/packages/openapi-ts/src/ts-dsl/expr/attr.ts +++ b/packages/openapi-ts/src/ts-dsl/expr/attr.ts @@ -9,7 +9,7 @@ import { ExprMixin, setAttrFactory } from '../mixins/expr'; import { OperatorMixin } from '../mixins/operator'; import { OptionalMixin } from '../mixins/optional'; import { TokenTsDsl } from '../token'; -import { validTypescriptIdentifierRegExp } from '../utils/regexp'; +import { regexp } from '../utils/regexp'; import { LiteralTsDsl } from './literal'; export type AttrLeft = Symbol | string | MaybeTsDsl; @@ -46,11 +46,11 @@ export class AttrTsDsl extends Mixed { override toAst() { const leftNode = this.$node(this.left); - validTypescriptIdentifierRegExp.lastIndex = 0; + regexp.typeScriptIdentifier.lastIndex = 0; if ( typeof fromRef(this.right) === 'number' || (typeof fromRef(this.right) === 'string' && - !validTypescriptIdentifierRegExp.test(fromRef(this.right) as string)) + !regexp.typeScriptIdentifier.test(fromRef(this.right) as string)) ) { if (this._optional) { return ts.factory.createElementAccessChain( diff --git a/packages/openapi-ts/src/ts-dsl/index.ts b/packages/openapi-ts/src/ts-dsl/index.ts index 4be7f83e1..fa8f7b874 100644 --- a/packages/openapi-ts/src/ts-dsl/index.ts +++ b/packages/openapi-ts/src/ts-dsl/index.ts @@ -350,8 +350,4 @@ export type DollarTsDsl = { export type { MaybeTsDsl, TypeTsDsl } from './base'; export { TsDsl } from './base'; export { TypeScriptRenderer } from './render/typescript'; -export { - numberRegExp, - reservedJavaScriptKeywordsRegExp, - validTypescriptIdentifierRegExp, -} from './utils/regexp'; +export { regexp } from './utils/regexp'; diff --git a/packages/openapi-ts/src/ts-dsl/stmt/var.ts b/packages/openapi-ts/src/ts-dsl/stmt/var.ts index 8cbda5974..33e0c7aa3 100644 --- a/packages/openapi-ts/src/ts-dsl/stmt/var.ts +++ b/packages/openapi-ts/src/ts-dsl/stmt/var.ts @@ -9,7 +9,7 @@ import { DefaultMixin, ExportMixin } from '../mixins/modifiers'; import { PatternMixin } from '../mixins/pattern'; import { ValueMixin } from '../mixins/value'; import { TypeExprTsDsl } from '../type/expr'; -import { safeSymbolName } from '../utils/name'; +import { safeRuntimeName } from '../utils/name'; export type VarName = Symbol | string; @@ -33,7 +33,7 @@ export class VarTsDsl extends Mixed { if (name) this.name = ref(name); if (isSymbol(name)) { name.setKind('var'); - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeRuntimeName); name.setNode(this); } } diff --git a/packages/openapi-ts/src/ts-dsl/type/alias.ts b/packages/openapi-ts/src/ts-dsl/type/alias.ts index c5f3e9a03..bf590b4e5 100644 --- a/packages/openapi-ts/src/ts-dsl/type/alias.ts +++ b/packages/openapi-ts/src/ts-dsl/type/alias.ts @@ -7,7 +7,7 @@ import { TsDsl } from '../base'; import { DocMixin } from '../mixins/doc'; import { ExportMixin } from '../mixins/modifiers'; import { TypeParamsMixin } from '../mixins/type-params'; -import { safeSymbolName } from '../utils/name'; +import { safeTypeName } from '../utils/name'; type Name = Symbol | string; type Value = MaybeTsDsl; @@ -27,7 +27,7 @@ export class TypeAliasTsDsl extends Mixed { this.name = ref(name); if (isSymbol(name)) { name.setKind('type'); - name.setNameSanitizer(safeSymbolName); + name.setNameSanitizer(safeTypeName); name.setNode(this); } fn?.(this); diff --git a/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts b/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts index e172f8a93..e62c9ea1a 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/__tests__/name.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from 'vitest'; -import { safeSymbolName } from '../name'; +import { safeRuntimeName } from '../name'; -describe('safeSymbolName', () => { +describe('safeRuntimeName', () => { const scenarios: ReadonlyArray<{ name: string; output: string; @@ -356,7 +356,7 @@ describe('safeSymbolName', () => { it.each(scenarios)( 'transforms $name -> $output', async ({ name, output }) => { - expect(safeSymbolName(name)).toEqual(output); + expect(safeRuntimeName(name)).toEqual(output); }, ); }); diff --git a/packages/openapi-ts/src/ts-dsl/utils/name.ts b/packages/openapi-ts/src/ts-dsl/utils/name.ts index 8743e6095..205524995 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/name.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/name.ts @@ -3,56 +3,46 @@ import type ts from 'typescript'; import type { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; import { LiteralTsDsl } from '../expr/literal'; +import { regexp } from './regexp'; import { - illegalStartCharactersRegExp, - numberRegExp, - reservedBrowserGlobalsRegExp, - reservedJavaScriptGlobalsRegExp, - reservedJavaScriptKeywordsRegExp, - reservedNodeGlobalsRegExp, - reservedTypeScriptKeywordsRegExp, - validTypescriptIdentifierRegExp, -} from './regexp'; + browserGlobals, + javaScriptGlobals, + javaScriptKeywords, + nodeGlobals, + typeScriptKeywords, +} from './reserved'; export const safeMemberName = (name: string): TsDsl => { - validTypescriptIdentifierRegExp.lastIndex = 0; - if (validTypescriptIdentifierRegExp.test(name)) { + regexp.typeScriptIdentifier.lastIndex = 0; + if (regexp.typeScriptIdentifier.test(name)) { return new IdTsDsl(name); } return new LiteralTsDsl(name) as TsDsl; }; export const safePropName = (name: string): TsDsl => { - numberRegExp.lastIndex = 0; - if (numberRegExp.test(name)) { + regexp.number.lastIndex = 0; + if (regexp.number.test(name)) { return name.startsWith('-') ? (new LiteralTsDsl(name) as TsDsl) : (new LiteralTsDsl(Number(name)) as TsDsl); } - validTypescriptIdentifierRegExp.lastIndex = 0; - if (validTypescriptIdentifierRegExp.test(name)) { + regexp.typeScriptIdentifier.lastIndex = 0; + if (regexp.typeScriptIdentifier.test(name)) { return new IdTsDsl(name); } return new LiteralTsDsl(name) as TsDsl; }; -const regexps = [ - reservedJavaScriptKeywordsRegExp, - reservedTypeScriptKeywordsRegExp, - reservedJavaScriptGlobalsRegExp, - reservedNodeGlobalsRegExp, - reservedBrowserGlobalsRegExp, -]; - -export const safeSymbolName = (name: string): string => { +const sanitizeName = (name: string, reserved: Set): string => { let sanitized = ''; let index: number; const first = name[0]!; - illegalStartCharactersRegExp.lastIndex = 0; - if (illegalStartCharactersRegExp.test(first)) { + regexp.illegalStartCharacters.lastIndex = 0; + if (regexp.illegalStartCharacters.test(first)) { sanitized += '_'; index = 0; } else { @@ -66,9 +56,23 @@ export const safeSymbolName = (name: string): string => { index += 1; } - for (const regexp of regexps) { - sanitized = sanitized.replace(regexp, '_$1'); + if (reserved.has(sanitized)) { + sanitized = `_${sanitized}`; } return sanitized || '_'; }; + +const runtimeReserved = new Set([ + ...browserGlobals, + ...javaScriptGlobals, + ...javaScriptKeywords, + ...nodeGlobals, + ...typeScriptKeywords, +]); + +const typeReserved = new Set([...javaScriptKeywords, ...typeScriptKeywords]); + +export const safeRuntimeName = (name: string) => + sanitizeName(name, runtimeReserved); +export const safeTypeName = (name: string) => sanitizeName(name, typeReserved); diff --git a/packages/openapi-ts/src/ts-dsl/utils/regexp.ts b/packages/openapi-ts/src/ts-dsl/utils/regexp.ts index ce2eb70d5..53ac1cde9 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/regexp.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/regexp.ts @@ -1,31 +1,34 @@ /** * Matches characters from the start as long as they're not allowed. */ -export const illegalStartCharactersRegExp = /^[^$_\p{ID_Start}]+/u; +const illegalStartCharactersRegExp = /^[^$_\p{ID_Start}]+/u; /** * Matches string if it contains only digits and optionally decimal point or * leading minus sign. */ -export const numberRegExp = /^-?\d+(\.\d+)?$/; - -export const reservedBrowserGlobalsRegExp = - /^(document|history|location|navigator|window)$/g; - -export const reservedJavaScriptGlobalsRegExp = - /^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g; - -export const reservedJavaScriptKeywordsRegExp = - /^(arguments|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|from|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g; - -export const reservedNodeGlobalsRegExp = /^(global|process|Buffer)$/g; - -export const reservedTypeScriptKeywordsRegExp = - /^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g; +const numberRegExp = /^-?\d+(\.\d+)?$/; /** * Javascript identifier regexp pattern retrieved from * {@link} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers */ -export const validTypescriptIdentifierRegExp = +const validTypescriptIdentifierRegExp = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u; + +export const regexp = { + /** + * Matches characters from the start as long as they're not allowed. + */ + illegalStartCharacters: illegalStartCharactersRegExp, + /** + * Matches string if it contains only digits and optionally decimal point or + * leading minus sign. + */ + number: numberRegExp, + /** + * Javascript identifier regexp pattern retrieved from + * {@link} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers + */ + typeScriptIdentifier: validTypescriptIdentifierRegExp, +}; diff --git a/packages/openapi-ts/src/ts-dsl/utils/reserved.ts b/packages/openapi-ts/src/ts-dsl/utils/reserved.ts new file mode 100644 index 000000000..6020eb2c2 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/utils/reserved.ts @@ -0,0 +1,96 @@ +export const browserGlobals = [ + 'document', + 'history', + 'location', + 'navigator', + 'window', +]; + +export const javaScriptGlobals = [ + 'console', + 'Array', + 'Date', + 'Error', + 'Function', + 'JSON', + 'Map', + 'Math', + 'Object', + 'Promise', + 'RegExp', + 'Set', + 'WeakMap', + 'WeakSet', +]; + +export const javaScriptKeywords = [ + 'arguments', + 'async', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'from', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'var', + 'void', + 'while', + 'with', + 'yield', +]; + +export const nodeGlobals = ['global', 'process', 'Buffer']; + +export const typeScriptKeywords = [ + 'any', + 'as', + 'bigint', + 'boolean', + 'namespace', + 'never', + 'null', + 'number', + 'string', + 'symbol', + 'type', + 'undefined', + 'unknown', + 'void', +]; From 3fc1239980a1c5f6cb7a1d5687309b7550e7e076 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 16:07:13 +0800 Subject: [PATCH 12/15] chore: expose reserved keywords --- .vscode/launch.json | 3 +- dev/openapi-ts.config.ts | 5 +- packages/openapi-ts/src/ts-dsl/index.ts | 2 + .../openapi-ts/src/ts-dsl/utils/keywords.ts | 104 ++++++++++++ packages/openapi-ts/src/ts-dsl/utils/name.ts | 28 +--- .../openapi-ts/src/ts-dsl/utils/reserved.ts | 148 +++++++----------- 6 files changed, 174 insertions(+), 116 deletions(-) create mode 100644 packages/openapi-ts/src/ts-dsl/utils/keywords.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index edbd4ea4b..e83d654b7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,8 +15,7 @@ "skipFiles": ["/**"], "cwd": "${workspaceFolder}/dev", "runtimeExecutable": "node", - "runtimeArgs": ["-r", "ts-node/register/transpile-only"], - "program": "${workspaceFolder}/packages/openapi-ts/src/run.ts", + "program": "${workspaceFolder}/packages/openapi-ts/dist/run.mjs", "env": { "DEBUG": "false" } diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index a32f38a5d..2bd71dca0 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -5,13 +5,16 @@ import path from 'node:path'; // @ts-ignore import { customClientPlugin } from '@hey-api/custom-client/plugin'; // @ts-ignore -import { defineConfig, utils } from '@hey-api/openapi-ts'; +import { defineConfig, reserved, utils } from '@hey-api/openapi-ts'; // @ts-ignore import { myClientPlugin } from '../packages/openapi-ts-tests/main/test/custom/client/plugin'; // @ts-ignore import { getSpecsPath } from '../packages/openapi-ts-tests/utils'; +reserved.runtime.set((list) => [...list, 'Agent']); +reserved.type.set((list) => [...list, 'Agent']); + // @ts-ignore export default defineConfig(() => { // ... diff --git a/packages/openapi-ts/src/ts-dsl/index.ts b/packages/openapi-ts/src/ts-dsl/index.ts index fa8f7b874..201729a9b 100644 --- a/packages/openapi-ts/src/ts-dsl/index.ts +++ b/packages/openapi-ts/src/ts-dsl/index.ts @@ -350,4 +350,6 @@ export type DollarTsDsl = { export type { MaybeTsDsl, TypeTsDsl } from './base'; export { TsDsl } from './base'; export { TypeScriptRenderer } from './render/typescript'; +export { keywords } from './utils/keywords'; export { regexp } from './utils/regexp'; +export { reserved } from './utils/reserved'; diff --git a/packages/openapi-ts/src/ts-dsl/utils/keywords.ts b/packages/openapi-ts/src/ts-dsl/utils/keywords.ts new file mode 100644 index 000000000..4b0e2b926 --- /dev/null +++ b/packages/openapi-ts/src/ts-dsl/utils/keywords.ts @@ -0,0 +1,104 @@ +const browserGlobals = [ + 'document', + 'history', + 'location', + 'navigator', + 'window', +]; + +const javaScriptGlobals = [ + 'console', + 'Array', + 'Date', + 'Error', + 'Function', + 'JSON', + 'Map', + 'Math', + 'Object', + 'Promise', + 'RegExp', + 'Set', + 'WeakMap', + 'WeakSet', +]; + +const javaScriptKeywords = [ + 'arguments', + 'async', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'from', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'var', + 'void', + 'while', + 'with', + 'yield', +]; + +const nodeGlobals = ['global', 'process', 'Buffer']; + +const typeScriptKeywords = [ + 'any', + 'as', + 'bigint', + 'boolean', + 'namespace', + 'never', + 'null', + 'number', + 'string', + 'symbol', + 'type', + 'undefined', + 'unknown', + 'void', +]; + +export const keywords = { + browserGlobals, + javaScriptGlobals, + javaScriptKeywords, + nodeGlobals, + typeScriptKeywords, +}; diff --git a/packages/openapi-ts/src/ts-dsl/utils/name.ts b/packages/openapi-ts/src/ts-dsl/utils/name.ts index 205524995..ce4a7045c 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/name.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/name.ts @@ -4,13 +4,8 @@ import type { TsDsl } from '../base'; import { IdTsDsl } from '../expr/id'; import { LiteralTsDsl } from '../expr/literal'; import { regexp } from './regexp'; -import { - browserGlobals, - javaScriptGlobals, - javaScriptKeywords, - nodeGlobals, - typeScriptKeywords, -} from './reserved'; +import type { ReservedList } from './reserved'; +import { reserved } from './reserved'; export const safeMemberName = (name: string): TsDsl => { regexp.typeScriptIdentifier.lastIndex = 0; @@ -36,7 +31,7 @@ export const safePropName = (name: string): TsDsl => { return new LiteralTsDsl(name) as TsDsl; }; -const sanitizeName = (name: string, reserved: Set): string => { +const safeName = (name: string, reserved: ReservedList): string => { let sanitized = ''; let index: number; @@ -56,23 +51,14 @@ const sanitizeName = (name: string, reserved: Set): string => { index += 1; } - if (reserved.has(sanitized)) { + if (reserved['~values'].has(sanitized)) { sanitized = `_${sanitized}`; } return sanitized || '_'; }; -const runtimeReserved = new Set([ - ...browserGlobals, - ...javaScriptGlobals, - ...javaScriptKeywords, - ...nodeGlobals, - ...typeScriptKeywords, -]); - -const typeReserved = new Set([...javaScriptKeywords, ...typeScriptKeywords]); - export const safeRuntimeName = (name: string) => - sanitizeName(name, runtimeReserved); -export const safeTypeName = (name: string) => sanitizeName(name, typeReserved); + safeName(name, reserved.runtime); + +export const safeTypeName = (name: string) => safeName(name, reserved.type); diff --git a/packages/openapi-ts/src/ts-dsl/utils/reserved.ts b/packages/openapi-ts/src/ts-dsl/utils/reserved.ts index 6020eb2c2..751f9e13d 100644 --- a/packages/openapi-ts/src/ts-dsl/utils/reserved.ts +++ b/packages/openapi-ts/src/ts-dsl/utils/reserved.ts @@ -1,96 +1,60 @@ -export const browserGlobals = [ - 'document', - 'history', - 'location', - 'navigator', - 'window', -]; +import { keywords } from './keywords'; -export const javaScriptGlobals = [ - 'console', - 'Array', - 'Date', - 'Error', - 'Function', - 'JSON', - 'Map', - 'Math', - 'Object', - 'Promise', - 'RegExp', - 'Set', - 'WeakMap', - 'WeakSet', -]; +type List = ReadonlyArray; -export const javaScriptKeywords = [ - 'arguments', - 'async', - 'await', - 'break', - 'case', - 'catch', - 'class', - 'const', - 'continue', - 'debugger', - 'default', - 'delete', - 'do', - 'else', - 'enum', - 'eval', - 'export', - 'extends', - 'false', - 'finally', - 'for', - 'from', - 'function', - 'if', - 'implements', - 'import', - 'in', - 'instanceof', - 'interface', - 'let', - 'new', - 'null', - 'package', - 'private', - 'protected', - 'public', - 'return', - 'static', - 'super', - 'switch', - 'this', - 'throw', - 'true', - 'try', - 'typeof', - 'var', - 'void', - 'while', - 'with', - 'yield', -]; +export class ReservedList { + private _array: List; + private _set: Set; -export const nodeGlobals = ['global', 'process', 'Buffer']; + constructor(values: List) { + this._array = values; + this._set = new Set(values); + } -export const typeScriptKeywords = [ - 'any', - 'as', - 'bigint', - 'boolean', - 'namespace', - 'never', - 'null', - 'number', - 'string', - 'symbol', - 'type', - 'undefined', - 'unknown', - 'void', -]; + get '~values'() { + return this._set; + } + + /** + * Updates the reserved list with new values. + * + * @param values New reserved values or a function that receives the previous + * reserved values and returns the new ones. + */ + set(values: List | ((prev: List) => List)): void { + const vals = typeof values === 'function' ? values(this._array) : values; + this._array = vals; + this._set = new Set(vals); + } +} + +const runtimeReserved = new ReservedList([ + ...keywords.browserGlobals, + ...keywords.javaScriptGlobals, + ...keywords.javaScriptKeywords, + ...keywords.nodeGlobals, + ...keywords.typeScriptKeywords, +]); + +const typeReserved = new ReservedList([ + ...keywords.javaScriptKeywords, + ...keywords.typeScriptKeywords, +]); + +/** + * Reserved names for identifiers. These names will not be used + * for variables, functions, classes, or other identifiers in generated code. + */ +export const reserved = { + /** + * Reserved names for runtime identifiers. These names will not be used + * for variables, functions, classes, or other runtime identifiers in + * generated code. + */ + runtime: runtimeReserved, + /** + * Reserved names for type identifiers. These names will not be used + * for type or interface identifiers in generated code. + */ + type: typeReserved, +}; From b6afac903acc01acb42bc3094d05a0604a60bf43 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 16:40:10 +0800 Subject: [PATCH 13/15] chore: expose name conflict resolver --- dev/openapi-ts.config.ts | 8 ++++++-- .../codegen-core/src/__tests__/exports.test.ts | 1 + packages/codegen-core/src/index.ts | 5 ++++- packages/openapi-ts/src/ir/context.ts | 15 +++++++-------- packages/openapi-ts/src/types/output.d.ts | 11 +++++++++++ 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index 2bd71dca0..e391a6546 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -47,8 +47,8 @@ export default defineConfig(() => { // 'full.yaml', // 'sdk-method-class-conflict.yaml', // 'object-property-names.yaml', - // 'openai.yaml', - 'opencode.yaml', + 'openai.yaml', + // 'opencode.yaml', // 'pagination-ref.yaml', // 'sdk-instance.yaml', // 'sdk-nested-classes.yaml', @@ -106,6 +106,10 @@ export default defineConfig(() => { // importFileExtension: '.js', // indexFile: false, // lint: 'eslint', + nameConflictResolver({ attempt, baseName }) { + console.log('resolving conflict for:', { attempt, baseName }); + return attempt === 0 ? baseName : `${baseName}_N${attempt + 1}`; + }, path: path.resolve(__dirname, '.gen'), preferExportAll: true, resolveModuleName: (moduleName) => { diff --git a/packages/codegen-core/src/__tests__/exports.test.ts b/packages/codegen-core/src/__tests__/exports.test.ts index b8f54bbfc..94aa02c71 100644 --- a/packages/codegen-core/src/__tests__/exports.test.ts +++ b/packages/codegen-core/src/__tests__/exports.test.ts @@ -39,6 +39,7 @@ export type _TypeExports = [ index.ImportMember, index.ImportModule, index.Language, + index.NameConflictResolver, index.NameConflictResolvers, index.Node, index.Output, diff --git a/packages/codegen-core/src/index.ts b/packages/codegen-core/src/index.ts index f4a235156..307b70a74 100644 --- a/packages/codegen-core/src/index.ts +++ b/packages/codegen-core/src/index.ts @@ -26,7 +26,10 @@ export { simpleNameConflictResolver, underscoreNameConflictResolver, } from './planner/resolvers'; -export type { IAnalysisContext as AnalysisContext } from './planner/types'; +export type { + IAnalysisContext as AnalysisContext, + NameConflictResolver, +} from './planner/types'; export { Project } from './project/project'; export type { IProject } from './project/types'; export { fromRef, fromRefs, isRef, ref, refs } from './refs/refs'; diff --git a/packages/openapi-ts/src/ir/context.ts b/packages/openapi-ts/src/ir/context.ts index adcb261a6..416a10b93 100644 --- a/packages/openapi-ts/src/ir/context.ts +++ b/packages/openapi-ts/src/ir/context.ts @@ -1,4 +1,4 @@ -import { Project, simpleNameConflictResolver } from '@hey-api/codegen-core'; +import { Project } from '@hey-api/codegen-core'; import type { Package } from '~/config/utils/package'; import { packageFactory } from '~/config/utils/package'; @@ -68,11 +68,9 @@ export class Context = any> { spec: Spec; }) { this.config = config; + // TODO: allow overriding via config this.gen = new Project({ defaultFileName: 'index', - defaultNameConflictResolver(args) { - return simpleNameConflictResolver(args); - }, fileName: (base) => { const name = buildName({ config: config.output.fileName, @@ -86,10 +84,11 @@ export class Context = any> { ? name : `${name}${suffix}`; }, - nameConflictResolvers: { - // TODO: allow overriding via config - }, - // TODO: allow overriding via config + nameConflictResolvers: config.output.nameConflictResolver + ? { + typescript: config.output.nameConflictResolver, + } + : undefined, renderers: [ new TypeScriptRenderer({ preferExportAll: config.output.preferExportAll, diff --git a/packages/openapi-ts/src/types/output.d.ts b/packages/openapi-ts/src/types/output.d.ts index ee03a8f9d..471bda9ef 100644 --- a/packages/openapi-ts/src/types/output.d.ts +++ b/packages/openapi-ts/src/types/output.d.ts @@ -1,3 +1,4 @@ +import type { NameConflictResolver } from '@hey-api/codegen-core'; import type ts from 'typescript'; import type { StringCase, StringName } from './case'; @@ -89,6 +90,11 @@ export type UserOutput = { * @default null */ lint?: Linters | null; + /** + * Optional name conflict resolver to customize how naming conflicts + * are handled. + */ + nameConflictResolver?: NameConflictResolver; /** * The absolute path to the output folder. */ @@ -178,6 +184,11 @@ export type Output = { * Which linter to use to process output folder? */ lint: Linters | null; + /** + * Optional name conflict resolver to customize how naming conflicts + * are handled. + */ + nameConflictResolver: NameConflictResolver | undefined; /** * The absolute path to the output folder. */ From 5898775b95322a9def9c83d0a5704d44c05f72d9 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 19:05:08 +0800 Subject: [PATCH 14/15] docs: add migration notes for 0.89.0 --- dev/openapi-ts.config.ts | 18 +- docs/openapi-ts/configuration/output.md | 31 +- docs/openapi-ts/migrating.md | 22 + docs/openapi-ts/output.md | 4 - packages/codegen-core/src/planner/planner.ts | 6 +- .../opencode/export-all/client.gen.ts | 16 + .../opencode/export-all/client/client.gen.ts | 301 +++ .../opencode/export-all/client/index.ts | 25 + .../opencode/export-all/client/types.gen.ts | 241 ++ .../opencode/export-all/client/utils.gen.ts | 332 +++ .../opencode/export-all/core/auth.gen.ts | 42 + .../export-all/core/bodySerializer.gen.ts | 100 + .../opencode/export-all/core/params.gen.ts | 176 ++ .../export-all/core/pathSerializer.gen.ts | 181 ++ .../export-all/core/queryKeySerializer.gen.ts | 136 ++ .../export-all/core/serverSentEvents.gen.ts | 266 +++ .../opencode/export-all/core/types.gen.ts | 118 + .../opencode/export-all/core/utils.gen.ts | 143 ++ .../opencode/export-all/index.ts | 4 + .../opencode/export-all/sdk.gen.ts | 594 +++++ .../opencode/export-all/types.gen.ts | 1943 +++++++++++++++++ .../sdks/test/opencode.test.ts | 16 + .../openapi-ts/src/parser/types/hooks.d.ts | 62 +- .../src/plugins/shared/utils/instance.ts | 25 +- 24 files changed, 4745 insertions(+), 57 deletions(-) create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/client.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/index.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/types.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/utils.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/auth.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/bodySerializer.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/params.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/pathSerializer.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/queryKeySerializer.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/serverSentEvents.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/types.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/utils.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/index.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/sdk.gen.ts create mode 100644 packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/types.gen.ts diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts index e391a6546..d3586b30d 100644 --- a/dev/openapi-ts.config.ts +++ b/dev/openapi-ts.config.ts @@ -107,11 +107,11 @@ export default defineConfig(() => { // indexFile: false, // lint: 'eslint', nameConflictResolver({ attempt, baseName }) { - console.log('resolving conflict for:', { attempt, baseName }); + // console.log('resolving conflict for:', { attempt, baseName }); return attempt === 0 ? baseName : `${baseName}_N${attempt + 1}`; }, path: path.resolve(__dirname, '.gen'), - preferExportAll: true, + // preferExportAll: true, resolveModuleName: (moduleName) => { if (moduleName === 'valibot') { return 'valibot'; @@ -146,6 +146,14 @@ export default defineConfig(() => { }, hooks: { events: { + // 'node:set:after': ({ node, plugin }) => { + // if (node) { + // console.log(`(${plugin.name}) set node:`, node.symbol); + // } + // }, + // 'node:set:before': ({ node, plugin }) => { + // console.log(`(${plugin.name}) setting node:`, node?.symbol?.id); + // }, // 'plugin:handler:after': ({ plugin }) => { // console.log(`(${plugin.name}): handler finished`); // }, @@ -171,12 +179,6 @@ export default defineConfig(() => { // ); // } }, - // 'symbol:setValue:after': ({ plugin, symbol }) => { - // console.log(`(${plugin.name}) set value:`, symbol.id); - // }, - // 'symbol:setValue:before': ({ plugin, symbol }) => { - // console.log(`(${plugin.name}) setting value:`, symbol.id); - // }, }, operations: { getKind() { diff --git a/docs/openapi-ts/configuration/output.md b/docs/openapi-ts/configuration/output.md index a47ace0e4..8c7627986 100644 --- a/docs/openapi-ts/configuration/output.md +++ b/docs/openapi-ts/configuration/output.md @@ -108,9 +108,9 @@ export default { ::: -## Import File Extension +## Module Extension -You can customize the extension used for imported TypeScript files. +You can customize the extension used for TypeScript modules. ::: code-group @@ -258,6 +258,33 @@ export default { You can also prevent your output from being linted by adding your output path to the linter's ignore file. +## Name Conflicts + +As your project grows, the chances of name conflicts increase. We use a simple conflict resolver that appends numeric suffixes to duplicate identifiers. If you prefer a different strategy, you can provide your own `nameConflictResolver` function. + +::: code-group + +```js [config] +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: { + nameConflictResolver({ attempt, baseName }) { + // [!code ++] + return attempt === 0 ? baseName : `${baseName}_N${attempt + 1}`; // [!code ++] + }, // [!code ++] + path: 'src/client', + }, +}; +``` + +```ts [example] +export type ChatCompletion = string; + +export type ChatCompletion_N2 = number; +``` + +::: + ## TSConfig Path We use the [TSConfig file](https://www.typescriptlang.org/tsconfig/) to generate output matching your project's settings. By default, we attempt to find a TSConfig file starting from the location of the `@hey-api/openapi-ts` configuration file and traversing up. diff --git a/docs/openapi-ts/migrating.md b/docs/openapi-ts/migrating.md index 39953f135..063bfaf89 100644 --- a/docs/openapi-ts/migrating.md +++ b/docs/openapi-ts/migrating.md @@ -7,6 +7,28 @@ description: Migrating to @hey-api/openapi-ts. While we try to avoid breaking changes, sometimes it's unavoidable in order to offer you the latest features. This page lists changes that require updates to your code. If you run into a problem with migration, please [open an issue](https://github.com/hey-api/openapi-ts/issues). +## v0.89.0 + +### Prefer named exports + +This release changes the default for `index.ts` to prefer named exports. Named exports may lead to better IDE and bundler performance compared to asterisk (`*`) as your tooling doesn't have to inspect the underlying module to discover exports. + +While this change is merely cosmetic, you can set `output.preferExportAll` to `true` if you prefer to use the asterisk. + +```js +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: { + path: 'src/client', + preferExportAll: true, // [!code ++] + }, +}; +``` + +### Removed `symbol:setValue:*` events + +These events have been removed in favor of `node:set:*` events. + ## v0.88.0 ### Removed `compiler` and `tsc` exports diff --git a/docs/openapi-ts/output.md b/docs/openapi-ts/output.md index a949e215b..cffd611a6 100644 --- a/docs/openapi-ts/output.md +++ b/docs/openapi-ts/output.md @@ -111,9 +111,5 @@ export default { }; ``` -::: warning -Re-exporting additional files from index file may result in broken output due to naming conflicts. -::: - diff --git a/packages/codegen-core/src/planner/planner.ts b/packages/codegen-core/src/planner/planner.ts index 25bfe34ba..ca0467166 100644 --- a/packages/codegen-core/src/planner/planner.ts +++ b/packages/codegen-core/src/planner/planner.ts @@ -384,10 +384,10 @@ export class Planner { const ok = kinds.every((kind) => canShareName(symbol.kind, kind)); if (ok) break; + const language = symbol.node?.language || symbol.file?.language; const resolver = - (symbol.node?.language - ? this.project.nameConflictResolvers[symbol.node.language] - : undefined) ?? this.project.defaultNameConflictResolver; + (language ? this.project.nameConflictResolvers[language] : undefined) ?? + this.project.defaultNameConflictResolver; const resolvedName = resolver({ attempt, baseName }); if (!resolvedName) { throw new Error(`Unresolvable name conflict: ${symbol.toString()}`); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client.gen.ts new file mode 100644 index 000000000..cab3c7019 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client.gen.ts @@ -0,0 +1,16 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { type ClientOptions, type Config, createClient, createConfig } from './client'; +import type { ClientOptions as ClientOptions2 } from './types.gen'; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = (override?: Config) => Config & T>; + +export const client = createClient(createConfig()); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/client.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/client.gen.ts new file mode 100644 index 000000000..c2a5190c2 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/client.gen.ts @@ -0,0 +1,301 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { createSseClient } from '../core/serverSentEvents.gen'; +import type { HttpMethod } from '../core/types.gen'; +import { getValidRequestBody } from '../core/utils.gen'; +import type { + Client, + Config, + RequestOptions, + ResolvedRequestOptions, +} from './types.gen'; +import { + buildUrl, + createConfig, + createInterceptors, + getParseAs, + mergeConfigs, + mergeHeaders, + setAuthParams, +} from './utils.gen'; + +type ReqInit = Omit & { + body?: any; + headers: ReturnType; +}; + +export const createClient = (config: Config = {}): Client => { + let _config = mergeConfigs(createConfig(), config); + + const getConfig = (): Config => ({ ..._config }); + + const setConfig = (config: Config): Config => { + _config = mergeConfigs(_config, config); + return getConfig(); + }; + + const interceptors = createInterceptors< + Request, + Response, + unknown, + ResolvedRequestOptions + >(); + + const beforeRequest = async (options: RequestOptions) => { + const opts = { + ..._config, + ...options, + fetch: options.fetch ?? _config.fetch ?? globalThis.fetch, + headers: mergeHeaders(_config.headers, options.headers), + serializedBody: undefined, + }; + + if (opts.security) { + await setAuthParams({ + ...opts, + security: opts.security, + }); + } + + if (opts.requestValidator) { + await opts.requestValidator(opts); + } + + if (opts.body !== undefined && opts.bodySerializer) { + opts.serializedBody = opts.bodySerializer(opts.body); + } + + // remove Content-Type header if body is empty to avoid sending invalid requests + if (opts.body === undefined || opts.serializedBody === '') { + opts.headers.delete('Content-Type'); + } + + const url = buildUrl(opts); + + return { opts, url }; + }; + + const request: Client['request'] = async (options) => { + // @ts-expect-error + const { opts, url } = await beforeRequest(options); + const requestInit: ReqInit = { + redirect: 'follow', + ...opts, + body: getValidRequestBody(opts), + }; + + let request = new Request(url, requestInit); + + for (const fn of interceptors.request.fns) { + if (fn) { + request = await fn(request, opts); + } + } + + // fetch must be assigned here, otherwise it would throw the error: + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation + const _fetch = opts.fetch!; + let response: Response; + + try { + response = await _fetch(request); + } catch (error) { + // Handle fetch exceptions (AbortError, network errors, etc.) + let finalError = error; + + for (const fn of interceptors.error.fns) { + if (fn) { + finalError = (await fn( + error, + undefined as any, + request, + opts, + )) as unknown; + } + } + + finalError = finalError || ({} as unknown); + + if (opts.throwOnError) { + throw finalError; + } + + // Return error response + return opts.responseStyle === 'data' + ? undefined + : { + error: finalError, + request, + response: undefined as any, + }; + } + + for (const fn of interceptors.response.fns) { + if (fn) { + response = await fn(response, request, opts); + } + } + + const result = { + request, + response, + }; + + if (response.ok) { + const parseAs = + (opts.parseAs === 'auto' + ? getParseAs(response.headers.get('Content-Type')) + : opts.parseAs) ?? 'json'; + + if ( + response.status === 204 || + response.headers.get('Content-Length') === '0' + ) { + let emptyData: any; + switch (parseAs) { + case 'arrayBuffer': + case 'blob': + case 'text': + emptyData = await response[parseAs](); + break; + case 'formData': + emptyData = new FormData(); + break; + case 'stream': + emptyData = response.body; + break; + case 'json': + default: + emptyData = {}; + break; + } + return opts.responseStyle === 'data' + ? emptyData + : { + data: emptyData, + ...result, + }; + } + + let data: any; + switch (parseAs) { + case 'arrayBuffer': + case 'blob': + case 'formData': + case 'json': + case 'text': + data = await response[parseAs](); + break; + case 'stream': + return opts.responseStyle === 'data' + ? response.body + : { + data: response.body, + ...result, + }; + } + + if (parseAs === 'json') { + if (opts.responseValidator) { + await opts.responseValidator(data); + } + + if (opts.responseTransformer) { + data = await opts.responseTransformer(data); + } + } + + return opts.responseStyle === 'data' + ? data + : { + data, + ...result, + }; + } + + const textError = await response.text(); + let jsonError: unknown; + + try { + jsonError = JSON.parse(textError); + } catch { + // noop + } + + const error = jsonError ?? textError; + let finalError = error; + + for (const fn of interceptors.error.fns) { + if (fn) { + finalError = (await fn(error, response, request, opts)) as string; + } + } + + finalError = finalError || ({} as string); + + if (opts.throwOnError) { + throw finalError; + } + + // TODO: we probably want to return error and improve types + return opts.responseStyle === 'data' + ? undefined + : { + error: finalError, + ...result, + }; + }; + + const makeMethodFn = + (method: Uppercase) => (options: RequestOptions) => + request({ ...options, method }); + + const makeSseFn = + (method: Uppercase) => async (options: RequestOptions) => { + const { opts, url } = await beforeRequest(options); + return createSseClient({ + ...opts, + body: opts.body as BodyInit | null | undefined, + headers: opts.headers as unknown as Record, + method, + onRequest: async (url, init) => { + let request = new Request(url, init); + for (const fn of interceptors.request.fns) { + if (fn) { + request = await fn(request, opts); + } + } + return request; + }, + url, + }); + }; + + return { + buildUrl, + connect: makeMethodFn('CONNECT'), + delete: makeMethodFn('DELETE'), + get: makeMethodFn('GET'), + getConfig, + head: makeMethodFn('HEAD'), + interceptors, + options: makeMethodFn('OPTIONS'), + patch: makeMethodFn('PATCH'), + post: makeMethodFn('POST'), + put: makeMethodFn('PUT'), + request, + setConfig, + sse: { + connect: makeSseFn('CONNECT'), + delete: makeSseFn('DELETE'), + get: makeSseFn('GET'), + head: makeSseFn('HEAD'), + options: makeSseFn('OPTIONS'), + patch: makeSseFn('PATCH'), + post: makeSseFn('POST'), + put: makeSseFn('PUT'), + trace: makeSseFn('TRACE'), + }, + trace: makeMethodFn('TRACE'), + } as Client; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/index.ts new file mode 100644 index 000000000..b295edeca --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/index.ts @@ -0,0 +1,25 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type { Auth } from '../core/auth.gen'; +export type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +export { + formDataBodySerializer, + jsonBodySerializer, + urlSearchParamsBodySerializer, +} from '../core/bodySerializer.gen'; +export { buildClientParams } from '../core/params.gen'; +export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen'; +export { createClient } from './client.gen'; +export type { + Client, + ClientOptions, + Config, + CreateClientConfig, + Options, + RequestOptions, + RequestResult, + ResolvedRequestOptions, + ResponseStyle, + TDataShape, +} from './types.gen'; +export { createConfig, mergeHeaders } from './utils.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/types.gen.ts new file mode 100644 index 000000000..b4a499cc0 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/types.gen.ts @@ -0,0 +1,241 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth } from '../core/auth.gen'; +import type { + ServerSentEventsOptions, + ServerSentEventsResult, +} from '../core/serverSentEvents.gen'; +import type { + Client as CoreClient, + Config as CoreConfig, +} from '../core/types.gen'; +import type { Middleware } from './utils.gen'; + +export type ResponseStyle = 'data' | 'fields'; + +export interface Config + extends Omit, + CoreConfig { + /** + * Base URL for all requests made by this client. + */ + baseUrl?: T['baseUrl']; + /** + * Fetch API implementation. You can use this option to provide a custom + * fetch instance. + * + * @default globalThis.fetch + */ + fetch?: typeof fetch; + /** + * Please don't use the Fetch client for Next.js applications. The `next` + * options won't have any effect. + * + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. + */ + next?: never; + /** + * Return the response data parsed in a specified format. By default, `auto` + * will infer the appropriate method from the `Content-Type` response header. + * You can override this behavior with any of the {@link Body} methods. + * Select `stream` if you don't want to parse response data at all. + * + * @default 'auto' + */ + parseAs?: + | 'arrayBuffer' + | 'auto' + | 'blob' + | 'formData' + | 'json' + | 'stream' + | 'text'; + /** + * Should we return only data or multiple fields (data, error, response, etc.)? + * + * @default 'fields' + */ + responseStyle?: ResponseStyle; + /** + * Throw an error instead of returning it in the response? + * + * @default false + */ + throwOnError?: T['throwOnError']; +} + +export interface RequestOptions< + TData = unknown, + TResponseStyle extends ResponseStyle = 'fields', + ThrowOnError extends boolean = boolean, + Url extends string = string, +> extends Config<{ + responseStyle: TResponseStyle; + throwOnError: ThrowOnError; + }>, + Pick< + ServerSentEventsOptions, + | 'onSseError' + | 'onSseEvent' + | 'sseDefaultRetryDelay' + | 'sseMaxRetryAttempts' + | 'sseMaxRetryDelay' + > { + /** + * Any body that you want to add to your request. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#body} + */ + body?: unknown; + path?: Record; + query?: Record; + /** + * Security mechanism(s) to use for the request. + */ + security?: ReadonlyArray; + url: Url; +} + +export interface ResolvedRequestOptions< + TResponseStyle extends ResponseStyle = 'fields', + ThrowOnError extends boolean = boolean, + Url extends string = string, +> extends RequestOptions { + serializedBody?: string; +} + +export type RequestResult< + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = boolean, + TResponseStyle extends ResponseStyle = 'fields', +> = ThrowOnError extends true + ? Promise< + TResponseStyle extends 'data' + ? TData extends Record + ? TData[keyof TData] + : TData + : { + data: TData extends Record + ? TData[keyof TData] + : TData; + request: Request; + response: Response; + } + > + : Promise< + TResponseStyle extends 'data' + ? + | (TData extends Record + ? TData[keyof TData] + : TData) + | undefined + : ( + | { + data: TData extends Record + ? TData[keyof TData] + : TData; + error: undefined; + } + | { + data: undefined; + error: TError extends Record + ? TError[keyof TError] + : TError; + } + ) & { + request: Request; + response: Response; + } + >; + +export interface ClientOptions { + baseUrl?: string; + responseStyle?: ResponseStyle; + throwOnError?: boolean; +} + +type MethodFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'>, +) => RequestResult; + +type SseFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'>, +) => Promise>; + +type RequestFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'> & + Pick< + Required>, + 'method' + >, +) => RequestResult; + +type BuildUrlFn = < + TData extends { + body?: unknown; + path?: Record; + query?: Record; + url: string; + }, +>( + options: TData & Options, +) => string; + +export type Client = CoreClient< + RequestFn, + Config, + MethodFn, + BuildUrlFn, + SseFn +> & { + interceptors: Middleware; +}; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = ( + override?: Config, +) => Config & T>; + +export interface TDataShape { + body?: unknown; + headers?: unknown; + path?: unknown; + query?: unknown; + url: string; +} + +type OmitKeys = Pick>; + +export type Options< + TData extends TDataShape = TDataShape, + ThrowOnError extends boolean = boolean, + TResponse = unknown, + TResponseStyle extends ResponseStyle = 'fields', +> = OmitKeys< + RequestOptions, + 'body' | 'path' | 'query' | 'url' +> & + ([TData] extends [never] ? unknown : Omit); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/utils.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/utils.gen.ts new file mode 100644 index 000000000..4c48a9ee1 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/client/utils.gen.ts @@ -0,0 +1,332 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { getAuthToken } from '../core/auth.gen'; +import type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +import { jsonBodySerializer } from '../core/bodySerializer.gen'; +import { + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from '../core/pathSerializer.gen'; +import { getUrl } from '../core/utils.gen'; +import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; + +export const createQuerySerializer = ({ + parameters = {}, + ...args +}: QuerySerializerOptions = {}) => { + const querySerializer = (queryParams: T) => { + const search: string[] = []; + if (queryParams && typeof queryParams === 'object') { + for (const name in queryParams) { + const value = queryParams[name]; + + if (value === undefined || value === null) { + continue; + } + + const options = parameters[name] || args; + + if (Array.isArray(value)) { + const serializedArray = serializeArrayParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'form', + value, + ...options.array, + }); + if (serializedArray) search.push(serializedArray); + } else if (typeof value === 'object') { + const serializedObject = serializeObjectParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'deepObject', + value: value as Record, + ...options.object, + }); + if (serializedObject) search.push(serializedObject); + } else { + const serializedPrimitive = serializePrimitiveParam({ + allowReserved: options.allowReserved, + name, + value: value as string, + }); + if (serializedPrimitive) search.push(serializedPrimitive); + } + } + } + return search.join('&'); + }; + return querySerializer; +}; + +/** + * Infers parseAs value from provided Content-Type header. + */ +export const getParseAs = ( + contentType: string | null, +): Exclude => { + if (!contentType) { + // If no Content-Type header is provided, the best we can do is return the raw response body, + // which is effectively the same as the 'stream' option. + return 'stream'; + } + + const cleanContent = contentType.split(';')[0]?.trim(); + + if (!cleanContent) { + return; + } + + if ( + cleanContent.startsWith('application/json') || + cleanContent.endsWith('+json') + ) { + return 'json'; + } + + if (cleanContent === 'multipart/form-data') { + return 'formData'; + } + + if ( + ['application/', 'audio/', 'image/', 'video/'].some((type) => + cleanContent.startsWith(type), + ) + ) { + return 'blob'; + } + + if (cleanContent.startsWith('text/')) { + return 'text'; + } + + return; +}; + +const checkForExistence = ( + options: Pick & { + headers: Headers; + }, + name?: string, +): boolean => { + if (!name) { + return false; + } + if ( + options.headers.has(name) || + options.query?.[name] || + options.headers.get('Cookie')?.includes(`${name}=`) + ) { + return true; + } + return false; +}; + +export const setAuthParams = async ({ + security, + ...options +}: Pick, 'security'> & + Pick & { + headers: Headers; + }) => { + for (const auth of security) { + if (checkForExistence(options, auth.name)) { + continue; + } + + const token = await getAuthToken(auth, options.auth); + + if (!token) { + continue; + } + + const name = auth.name ?? 'Authorization'; + + switch (auth.in) { + case 'query': + if (!options.query) { + options.query = {}; + } + options.query[name] = token; + break; + case 'cookie': + options.headers.append('Cookie', `${name}=${token}`); + break; + case 'header': + default: + options.headers.set(name, token); + break; + } + } +}; + +export const buildUrl: Client['buildUrl'] = (options) => + getUrl({ + baseUrl: options.baseUrl as string, + path: options.path, + query: options.query, + querySerializer: + typeof options.querySerializer === 'function' + ? options.querySerializer + : createQuerySerializer(options.querySerializer), + url: options.url, + }); + +export const mergeConfigs = (a: Config, b: Config): Config => { + const config = { ...a, ...b }; + if (config.baseUrl?.endsWith('/')) { + config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1); + } + config.headers = mergeHeaders(a.headers, b.headers); + return config; +}; + +const headersEntries = (headers: Headers): Array<[string, string]> => { + const entries: Array<[string, string]> = []; + headers.forEach((value, key) => { + entries.push([key, value]); + }); + return entries; +}; + +export const mergeHeaders = ( + ...headers: Array['headers'] | undefined> +): Headers => { + const mergedHeaders = new Headers(); + for (const header of headers) { + if (!header) { + continue; + } + + const iterator = + header instanceof Headers + ? headersEntries(header) + : Object.entries(header); + + for (const [key, value] of iterator) { + if (value === null) { + mergedHeaders.delete(key); + } else if (Array.isArray(value)) { + for (const v of value) { + mergedHeaders.append(key, v as string); + } + } else if (value !== undefined) { + // assume object headers are meant to be JSON stringified, i.e. their + // content value in OpenAPI specification is 'application/json' + mergedHeaders.set( + key, + typeof value === 'object' ? JSON.stringify(value) : (value as string), + ); + } + } + } + return mergedHeaders; +}; + +type ErrInterceptor = ( + error: Err, + response: Res, + request: Req, + options: Options, +) => Err | Promise; + +type ReqInterceptor = ( + request: Req, + options: Options, +) => Req | Promise; + +type ResInterceptor = ( + response: Res, + request: Req, + options: Options, +) => Res | Promise; + +class Interceptors { + fns: Array = []; + + clear(): void { + this.fns = []; + } + + eject(id: number | Interceptor): void { + const index = this.getInterceptorIndex(id); + if (this.fns[index]) { + this.fns[index] = null; + } + } + + exists(id: number | Interceptor): boolean { + const index = this.getInterceptorIndex(id); + return Boolean(this.fns[index]); + } + + getInterceptorIndex(id: number | Interceptor): number { + if (typeof id === 'number') { + return this.fns[id] ? id : -1; + } + return this.fns.indexOf(id); + } + + update( + id: number | Interceptor, + fn: Interceptor, + ): number | Interceptor | false { + const index = this.getInterceptorIndex(id); + if (this.fns[index]) { + this.fns[index] = fn; + return id; + } + return false; + } + + use(fn: Interceptor): number { + this.fns.push(fn); + return this.fns.length - 1; + } +} + +export interface Middleware { + error: Interceptors>; + request: Interceptors>; + response: Interceptors>; +} + +export const createInterceptors = (): Middleware< + Req, + Res, + Err, + Options +> => ({ + error: new Interceptors>(), + request: new Interceptors>(), + response: new Interceptors>(), +}); + +const defaultQuerySerializer = createQuerySerializer({ + allowReserved: false, + array: { + explode: true, + style: 'form', + }, + object: { + explode: true, + style: 'deepObject', + }, +}); + +const defaultHeaders = { + 'Content-Type': 'application/json', +}; + +export const createConfig = ( + override: Config & T> = {}, +): Config & T> => ({ + ...jsonBodySerializer, + headers: defaultHeaders, + parseAs: 'auto', + querySerializer: defaultQuerySerializer, + ...override, +}); diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/auth.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/auth.gen.ts new file mode 100644 index 000000000..f8a73266f --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/auth.gen.ts @@ -0,0 +1,42 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type AuthToken = string | undefined; + +export interface Auth { + /** + * Which part of the request do we use to send the auth? + * + * @default 'header' + */ + in?: 'header' | 'query' | 'cookie'; + /** + * Header or query parameter name. + * + * @default 'Authorization' + */ + name?: string; + scheme?: 'basic' | 'bearer'; + type: 'apiKey' | 'http'; +} + +export const getAuthToken = async ( + auth: Auth, + callback: ((auth: Auth) => Promise | AuthToken) | AuthToken, +): Promise => { + const token = + typeof callback === 'function' ? await callback(auth) : callback; + + if (!token) { + return; + } + + if (auth.scheme === 'bearer') { + return `Bearer ${token}`; + } + + if (auth.scheme === 'basic') { + return `Basic ${btoa(token)}`; + } + + return token; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/bodySerializer.gen.ts new file mode 100644 index 000000000..552b50f7c --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/bodySerializer.gen.ts @@ -0,0 +1,100 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { + ArrayStyle, + ObjectStyle, + SerializerOptions, +} from './pathSerializer.gen'; + +export type QuerySerializer = (query: Record) => string; + +export type BodySerializer = (body: any) => any; + +type QuerySerializerOptionsObject = { + allowReserved?: boolean; + array?: Partial>; + object?: Partial>; +}; + +export type QuerySerializerOptions = QuerySerializerOptionsObject & { + /** + * Per-parameter serialization overrides. When provided, these settings + * override the global array/object settings for specific parameter names. + */ + parameters?: Record; +}; + +const serializeFormDataPair = ( + data: FormData, + key: string, + value: unknown, +): void => { + if (typeof value === 'string' || value instanceof Blob) { + data.append(key, value); + } else if (value instanceof Date) { + data.append(key, value.toISOString()); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +const serializeUrlSearchParamsPair = ( + data: URLSearchParams, + key: string, + value: unknown, +): void => { + if (typeof value === 'string') { + data.append(key, value); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +export const formDataBodySerializer = { + bodySerializer: | Array>>( + body: T, + ): FormData => { + const data = new FormData(); + + Object.entries(body).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeFormDataPair(data, key, v)); + } else { + serializeFormDataPair(data, key, value); + } + }); + + return data; + }, +}; + +export const jsonBodySerializer = { + bodySerializer: (body: T): string => + JSON.stringify(body, (_key, value) => + typeof value === 'bigint' ? value.toString() : value, + ), +}; + +export const urlSearchParamsBodySerializer = { + bodySerializer: | Array>>( + body: T, + ): string => { + const data = new URLSearchParams(); + + Object.entries(body).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)); + } else { + serializeUrlSearchParamsPair(data, key, value); + } + }); + + return data.toString(); + }, +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/params.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/params.gen.ts new file mode 100644 index 000000000..602715c46 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/params.gen.ts @@ -0,0 +1,176 @@ +// This file is auto-generated by @hey-api/openapi-ts + +type Slot = 'body' | 'headers' | 'path' | 'query'; + +export type Field = + | { + in: Exclude; + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If omitted, we use the same value as `key`. + */ + map?: string; + } + | { + in: Extract; + /** + * Key isn't required for bodies. + */ + key?: string; + map?: string; + } + | { + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If `in` is omitted, `map` aliases `key` to the transport layer. + */ + map: Slot; + }; + +export interface Fields { + allowExtra?: Partial>; + args?: ReadonlyArray; +} + +export type FieldsConfig = ReadonlyArray; + +const extraPrefixesMap: Record = { + $body_: 'body', + $headers_: 'headers', + $path_: 'path', + $query_: 'query', +}; +const extraPrefixes = Object.entries(extraPrefixesMap); + +type KeyMap = Map< + string, + | { + in: Slot; + map?: string; + } + | { + in?: never; + map: Slot; + } +>; + +const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { + if (!map) { + map = new Map(); + } + + for (const config of fields) { + if ('in' in config) { + if (config.key) { + map.set(config.key, { + in: config.in, + map: config.map, + }); + } + } else if ('key' in config) { + map.set(config.key, { + map: config.map, + }); + } else if (config.args) { + buildKeyMap(config.args, map); + } + } + + return map; +}; + +interface Params { + body: unknown; + headers: Record; + path: Record; + query: Record; +} + +const stripEmptySlots = (params: Params) => { + for (const [slot, value] of Object.entries(params)) { + if (value && typeof value === 'object' && !Object.keys(value).length) { + delete params[slot as Slot]; + } + } +}; + +export const buildClientParams = ( + args: ReadonlyArray, + fields: FieldsConfig, +) => { + const params: Params = { + body: {}, + headers: {}, + path: {}, + query: {}, + }; + + const map = buildKeyMap(fields); + + let config: FieldsConfig[number] | undefined; + + for (const [index, arg] of args.entries()) { + if (fields[index]) { + config = fields[index]; + } + + if (!config) { + continue; + } + + if ('in' in config) { + if (config.key) { + const field = map.get(config.key)!; + const name = field.map || config.key; + if (field.in) { + (params[field.in] as Record)[name] = arg; + } + } else { + params.body = arg; + } + } else { + for (const [key, value] of Object.entries(arg ?? {})) { + const field = map.get(key); + + if (field) { + if (field.in) { + const name = field.map || key; + (params[field.in] as Record)[name] = value; + } else { + params[field.map] = value; + } + } else { + const extra = extraPrefixes.find(([prefix]) => + key.startsWith(prefix), + ); + + if (extra) { + const [prefix, slot] = extra; + (params[slot] as Record)[ + key.slice(prefix.length) + ] = value; + } else if ('allowExtra' in config && config.allowExtra) { + for (const [slot, allowed] of Object.entries(config.allowExtra)) { + if (allowed) { + (params[slot as Slot] as Record)[key] = value; + break; + } + } + } + } + } + } + } + + stripEmptySlots(params); + + return params; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/pathSerializer.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/pathSerializer.gen.ts new file mode 100644 index 000000000..8d9993104 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/pathSerializer.gen.ts @@ -0,0 +1,181 @@ +// This file is auto-generated by @hey-api/openapi-ts + +interface SerializeOptions + extends SerializePrimitiveOptions, + SerializerOptions {} + +interface SerializePrimitiveOptions { + allowReserved?: boolean; + name: string; +} + +export interface SerializerOptions { + /** + * @default true + */ + explode: boolean; + style: T; +} + +export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited'; +export type ArraySeparatorStyle = ArrayStyle | MatrixStyle; +type MatrixStyle = 'label' | 'matrix' | 'simple'; +export type ObjectStyle = 'form' | 'deepObject'; +type ObjectSeparatorStyle = ObjectStyle | MatrixStyle; + +interface SerializePrimitiveParam extends SerializePrimitiveOptions { + value: string; +} + +export const separatorArrayExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'form': + return ','; + case 'pipeDelimited': + return '|'; + case 'spaceDelimited': + return '%20'; + default: + return ','; + } +}; + +export const separatorObjectExplode = (style: ObjectSeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const serializeArrayParam = ({ + allowReserved, + explode, + name, + style, + value, +}: SerializeOptions & { + value: unknown[]; +}) => { + if (!explode) { + const joinedValues = ( + allowReserved ? value : value.map((v) => encodeURIComponent(v as string)) + ).join(separatorArrayNoExplode(style)); + switch (style) { + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + case 'simple': + return joinedValues; + default: + return `${name}=${joinedValues}`; + } + } + + const separator = separatorArrayExplode(style); + const joinedValues = value + .map((v) => { + if (style === 'label' || style === 'simple') { + return allowReserved ? v : encodeURIComponent(v as string); + } + + return serializePrimitiveParam({ + allowReserved, + name, + value: v as string, + }); + }) + .join(separator); + return style === 'label' || style === 'matrix' + ? separator + joinedValues + : joinedValues; +}; + +export const serializePrimitiveParam = ({ + allowReserved, + name, + value, +}: SerializePrimitiveParam) => { + if (value === undefined || value === null) { + return ''; + } + + if (typeof value === 'object') { + throw new Error( + 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.', + ); + } + + return `${name}=${allowReserved ? value : encodeURIComponent(value)}`; +}; + +export const serializeObjectParam = ({ + allowReserved, + explode, + name, + style, + value, + valueOnly, +}: SerializeOptions & { + value: Record | Date; + valueOnly?: boolean; +}) => { + if (value instanceof Date) { + return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`; + } + + if (style !== 'deepObject' && !explode) { + let values: string[] = []; + Object.entries(value).forEach(([key, v]) => { + values = [ + ...values, + key, + allowReserved ? (v as string) : encodeURIComponent(v as string), + ]; + }); + const joinedValues = values.join(','); + switch (style) { + case 'form': + return `${name}=${joinedValues}`; + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + default: + return joinedValues; + } + } + + const separator = separatorObjectExplode(style); + const joinedValues = Object.entries(value) + .map(([key, v]) => + serializePrimitiveParam({ + allowReserved, + name: style === 'deepObject' ? `${name}[${key}]` : key, + value: v as string, + }), + ) + .join(separator); + return style === 'label' || style === 'matrix' + ? separator + joinedValues + : joinedValues; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/queryKeySerializer.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/queryKeySerializer.gen.ts new file mode 100644 index 000000000..d3bb68396 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/queryKeySerializer.gen.ts @@ -0,0 +1,136 @@ +// This file is auto-generated by @hey-api/openapi-ts + +/** + * JSON-friendly union that mirrors what Pinia Colada can hash. + */ +export type JsonValue = + | null + | string + | number + | boolean + | JsonValue[] + | { [key: string]: JsonValue }; + +/** + * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. + */ +export const queryKeyJsonReplacer = (_key: string, value: unknown) => { + if ( + value === undefined || + typeof value === 'function' || + typeof value === 'symbol' + ) { + return undefined; + } + if (typeof value === 'bigint') { + return value.toString(); + } + if (value instanceof Date) { + return value.toISOString(); + } + return value; +}; + +/** + * Safely stringifies a value and parses it back into a JsonValue. + */ +export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { + try { + const json = JSON.stringify(input, queryKeyJsonReplacer); + if (json === undefined) { + return undefined; + } + return JSON.parse(json) as JsonValue; + } catch { + return undefined; + } +}; + +/** + * Detects plain objects (including objects with a null prototype). + */ +const isPlainObject = (value: unknown): value is Record => { + if (value === null || typeof value !== 'object') { + return false; + } + const prototype = Object.getPrototypeOf(value as object); + return prototype === Object.prototype || prototype === null; +}; + +/** + * Turns URLSearchParams into a sorted JSON object for deterministic keys. + */ +const serializeSearchParams = (params: URLSearchParams): JsonValue => { + const entries = Array.from(params.entries()).sort(([a], [b]) => + a.localeCompare(b), + ); + const result: Record = {}; + + for (const [key, value] of entries) { + const existing = result[key]; + if (existing === undefined) { + result[key] = value; + continue; + } + + if (Array.isArray(existing)) { + (existing as string[]).push(value); + } else { + result[key] = [existing, value]; + } + } + + return result; +}; + +/** + * Normalizes any accepted value into a JSON-friendly shape for query keys. + */ +export const serializeQueryKeyValue = ( + value: unknown, +): JsonValue | undefined => { + if (value === null) { + return null; + } + + if ( + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) { + return value; + } + + if ( + value === undefined || + typeof value === 'function' || + typeof value === 'symbol' + ) { + return undefined; + } + + if (typeof value === 'bigint') { + return value.toString(); + } + + if (value instanceof Date) { + return value.toISOString(); + } + + if (Array.isArray(value)) { + return stringifyToJsonValue(value); + } + + if ( + typeof URLSearchParams !== 'undefined' && + value instanceof URLSearchParams + ) { + return serializeSearchParams(value); + } + + if (isPlainObject(value)) { + return stringifyToJsonValue(value); + } + + return undefined; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/serverSentEvents.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/serverSentEvents.gen.ts new file mode 100644 index 000000000..343d25af8 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/serverSentEvents.gen.ts @@ -0,0 +1,266 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Config } from './types.gen'; + +export type ServerSentEventsOptions = Omit< + RequestInit, + 'method' +> & + Pick & { + /** + * Fetch API implementation. You can use this option to provide a custom + * fetch instance. + * + * @default globalThis.fetch + */ + fetch?: typeof fetch; + /** + * Implementing clients can call request interceptors inside this hook. + */ + onRequest?: (url: string, init: RequestInit) => Promise; + /** + * Callback invoked when a network or parsing error occurs during streaming. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param error The error that occurred. + */ + onSseError?: (error: unknown) => void; + /** + * Callback invoked when an event is streamed from the server. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param event Event streamed from the server. + * @returns Nothing (void). + */ + onSseEvent?: (event: StreamEvent) => void; + serializedBody?: RequestInit['body']; + /** + * Default retry delay in milliseconds. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 3000 + */ + sseDefaultRetryDelay?: number; + /** + * Maximum number of retry attempts before giving up. + */ + sseMaxRetryAttempts?: number; + /** + * Maximum retry delay in milliseconds. + * + * Applies only when exponential backoff is used. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 30000 + */ + sseMaxRetryDelay?: number; + /** + * Optional sleep function for retry backoff. + * + * Defaults to using `setTimeout`. + */ + sseSleepFn?: (ms: number) => Promise; + url: string; + }; + +export interface StreamEvent { + data: TData; + event?: string; + id?: string; + retry?: number; +} + +export type ServerSentEventsResult< + TData = unknown, + TReturn = void, + TNext = unknown, +> = { + stream: AsyncGenerator< + TData extends Record ? TData[keyof TData] : TData, + TReturn, + TNext + >; +}; + +export const createSseClient = ({ + onRequest, + onSseError, + onSseEvent, + responseTransformer, + responseValidator, + sseDefaultRetryDelay, + sseMaxRetryAttempts, + sseMaxRetryDelay, + sseSleepFn, + url, + ...options +}: ServerSentEventsOptions): ServerSentEventsResult => { + let lastEventId: string | undefined; + + const sleep = + sseSleepFn ?? + ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))); + + const createStream = async function* () { + let retryDelay: number = sseDefaultRetryDelay ?? 3000; + let attempt = 0; + const signal = options.signal ?? new AbortController().signal; + + while (true) { + if (signal.aborted) break; + + attempt++; + + const headers = + options.headers instanceof Headers + ? options.headers + : new Headers(options.headers as Record | undefined); + + if (lastEventId !== undefined) { + headers.set('Last-Event-ID', lastEventId); + } + + try { + const requestInit: RequestInit = { + redirect: 'follow', + ...options, + body: options.serializedBody, + headers, + signal, + }; + let request = new Request(url, requestInit); + if (onRequest) { + request = await onRequest(url, requestInit); + } + // fetch must be assigned here, otherwise it would throw the error: + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation + const _fetch = options.fetch ?? globalThis.fetch; + const response = await _fetch(request); + + if (!response.ok) + throw new Error( + `SSE failed: ${response.status} ${response.statusText}`, + ); + + if (!response.body) throw new Error('No body in SSE response'); + + const reader = response.body + .pipeThrough(new TextDecoderStream()) + .getReader(); + + let buffer = ''; + + const abortHandler = () => { + try { + reader.cancel(); + } catch { + // noop + } + }; + + signal.addEventListener('abort', abortHandler); + + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buffer += value; + // Normalize line endings: CRLF -> LF, then CR -> LF + buffer = buffer.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); + + const chunks = buffer.split('\n\n'); + buffer = chunks.pop() ?? ''; + + for (const chunk of chunks) { + const lines = chunk.split('\n'); + const dataLines: Array = []; + let eventName: string | undefined; + + for (const line of lines) { + if (line.startsWith('data:')) { + dataLines.push(line.replace(/^data:\s*/, '')); + } else if (line.startsWith('event:')) { + eventName = line.replace(/^event:\s*/, ''); + } else if (line.startsWith('id:')) { + lastEventId = line.replace(/^id:\s*/, ''); + } else if (line.startsWith('retry:')) { + const parsed = Number.parseInt( + line.replace(/^retry:\s*/, ''), + 10, + ); + if (!Number.isNaN(parsed)) { + retryDelay = parsed; + } + } + } + + let data: unknown; + let parsedJson = false; + + if (dataLines.length) { + const rawData = dataLines.join('\n'); + try { + data = JSON.parse(rawData); + parsedJson = true; + } catch { + data = rawData; + } + } + + if (parsedJson) { + if (responseValidator) { + await responseValidator(data); + } + + if (responseTransformer) { + data = await responseTransformer(data); + } + } + + onSseEvent?.({ + data, + event: eventName, + id: lastEventId, + retry: retryDelay, + }); + + if (dataLines.length) { + yield data as any; + } + } + } + } finally { + signal.removeEventListener('abort', abortHandler); + reader.releaseLock(); + } + + break; // exit loop on normal completion + } catch (error) { + // connection failed or aborted; retry after delay + onSseError?.(error); + + if ( + sseMaxRetryAttempts !== undefined && + attempt >= sseMaxRetryAttempts + ) { + break; // stop after firing error + } + + // exponential backoff: double retry each attempt, cap at 30s + const backoff = Math.min( + retryDelay * 2 ** (attempt - 1), + sseMaxRetryDelay ?? 30000, + ); + await sleep(backoff); + } + } + }; + + const stream = createStream(); + + return { stream }; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/types.gen.ts new file mode 100644 index 000000000..643c070c9 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/types.gen.ts @@ -0,0 +1,118 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth, AuthToken } from './auth.gen'; +import type { + BodySerializer, + QuerySerializer, + QuerySerializerOptions, +} from './bodySerializer.gen'; + +export type HttpMethod = + | 'connect' + | 'delete' + | 'get' + | 'head' + | 'options' + | 'patch' + | 'post' + | 'put' + | 'trace'; + +export type Client< + RequestFn = never, + Config = unknown, + MethodFn = never, + BuildUrlFn = never, + SseFn = never, +> = { + /** + * Returns the final request URL. + */ + buildUrl: BuildUrlFn; + getConfig: () => Config; + request: RequestFn; + setConfig: (config: Config) => Config; +} & { + [K in HttpMethod]: MethodFn; +} & ([SseFn] extends [never] + ? { sse?: never } + : { sse: { [K in HttpMethod]: SseFn } }); + +export interface Config { + /** + * Auth token or a function returning auth token. The resolved value will be + * added to the request payload as defined by its `security` array. + */ + auth?: ((auth: Auth) => Promise | AuthToken) | AuthToken; + /** + * A function for serializing request body parameter. By default, + * {@link JSON.stringify()} will be used. + */ + bodySerializer?: BodySerializer | null; + /** + * An object containing any HTTP headers that you want to pre-populate your + * `Headers` object with. + * + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} + */ + headers?: + | RequestInit['headers'] + | Record< + string, + | string + | number + | boolean + | (string | number | boolean)[] + | null + | undefined + | unknown + >; + /** + * The request method. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more} + */ + method?: Uppercase; + /** + * A function for serializing request query parameters. By default, arrays + * will be exploded in form style, objects will be exploded in deepObject + * style, and reserved characters are percent-encoded. + * + * This method will have no effect if the native `paramsSerializer()` Axios + * API function is used. + * + * {@link https://swagger.io/docs/specification/serialization/#query View examples} + */ + querySerializer?: QuerySerializer | QuerySerializerOptions; + /** + * A function validating request data. This is useful if you want to ensure + * the request conforms to the desired shape, so it can be safely sent to + * the server. + */ + requestValidator?: (data: unknown) => Promise; + /** + * A function transforming response data before it's returned. This is useful + * for post-processing data, e.g. converting ISO strings into Date objects. + */ + responseTransformer?: (data: unknown) => Promise; + /** + * A function validating response data. This is useful if you want to ensure + * the response conforms to the desired shape, so it can be safely passed to + * the transformers and returned to the user. + */ + responseValidator?: (data: unknown) => Promise; +} + +type IsExactlyNeverOrNeverUndefined = [T] extends [never] + ? true + : [T] extends [never | undefined] + ? [undefined] extends [T] + ? false + : true + : false; + +export type OmitNever> = { + [K in keyof T as IsExactlyNeverOrNeverUndefined extends true + ? never + : K]: T[K]; +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/utils.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/utils.gen.ts new file mode 100644 index 000000000..0b5389d08 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/core/utils.gen.ts @@ -0,0 +1,143 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { BodySerializer, QuerySerializer } from './bodySerializer.gen'; +import { + type ArraySeparatorStyle, + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from './pathSerializer.gen'; + +export interface PathSerializer { + path: Record; + url: string; +} + +export const PATH_PARAM_RE = /\{[^{}]+\}/g; + +export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { + let url = _url; + const matches = _url.match(PATH_PARAM_RE); + if (matches) { + for (const match of matches) { + let explode = false; + let name = match.substring(1, match.length - 1); + let style: ArraySeparatorStyle = 'simple'; + + if (name.endsWith('*')) { + explode = true; + name = name.substring(0, name.length - 1); + } + + if (name.startsWith('.')) { + name = name.substring(1); + style = 'label'; + } else if (name.startsWith(';')) { + name = name.substring(1); + style = 'matrix'; + } + + const value = path[name]; + + if (value === undefined || value === null) { + continue; + } + + if (Array.isArray(value)) { + url = url.replace( + match, + serializeArrayParam({ explode, name, style, value }), + ); + continue; + } + + if (typeof value === 'object') { + url = url.replace( + match, + serializeObjectParam({ + explode, + name, + style, + value: value as Record, + valueOnly: true, + }), + ); + continue; + } + + if (style === 'matrix') { + url = url.replace( + match, + `;${serializePrimitiveParam({ + name, + value: value as string, + })}`, + ); + continue; + } + + const replaceValue = encodeURIComponent( + style === 'label' ? `.${value as string}` : (value as string), + ); + url = url.replace(match, replaceValue); + } + } + return url; +}; + +export const getUrl = ({ + baseUrl, + path, + query, + querySerializer, + url: _url, +}: { + baseUrl?: string; + path?: Record; + query?: Record; + querySerializer: QuerySerializer; + url: string; +}) => { + const pathUrl = _url.startsWith('/') ? _url : `/${_url}`; + let url = (baseUrl ?? '') + pathUrl; + if (path) { + url = defaultPathSerializer({ path, url }); + } + let search = query ? querySerializer(query) : ''; + if (search.startsWith('?')) { + search = search.substring(1); + } + if (search) { + url += `?${search}`; + } + return url; +}; + +export function getValidRequestBody(options: { + body?: unknown; + bodySerializer?: BodySerializer | null; + serializedBody?: unknown; +}) { + const hasBody = options.body !== undefined; + const isSerializedBody = hasBody && options.bodySerializer; + + if (isSerializedBody) { + if ('serializedBody' in options) { + const hasSerializedBody = + options.serializedBody !== undefined && options.serializedBody !== ''; + + return hasSerializedBody ? options.serializedBody : null; + } + + // not all clients implement a serializedBody property (i.e. client-axios) + return options.body !== '' ? options.body : null; + } + + // plain/text body + if (hasBody) { + return options.body; + } + + // no body was provided + return undefined; +} diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/index.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/index.ts new file mode 100644 index 000000000..57ed02bf5 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/index.ts @@ -0,0 +1,4 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export * from './sdk.gen'; +export type * from './types.gen'; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/sdk.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/sdk.gen.ts new file mode 100644 index 000000000..56ce2c581 --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/sdk.gen.ts @@ -0,0 +1,594 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { buildClientParams, type Client, type Options as Options2, type TDataShape } from './client'; +import { client } from './client.gen'; +import type { AgentPartInput, AppAgentsResponses, AppGetResponses, AppInitResponses, AppLogResponses, Auth, AuthSetErrors, AuthSetResponses, ConfigGetResponses, ConfigProvidersResponses, EventSubscribeResponses, FilePartInput, FileReadResponses, FileStatusResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, PostSessionByIdPermissionsByPermissionIdResponses, SessionAbortResponses, SessionChatResponses, SessionChildrenResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteResponses, SessionGetResponses, SessionInitResponses, SessionListResponses, SessionMessageResponses, SessionMessagesResponses, SessionRevertResponses, SessionShareResponses, SessionShellResponses, SessionSummarizeResponses, SessionUnrevertResponses, SessionUnshareResponses, SessionUpdateResponses, TextPartInput, TuiAppendPromptResponses, TuiClearPromptResponses, TuiExecuteCommandResponses, TuiOpenHelpResponses, TuiOpenModelsResponses, TuiOpenSessionsResponses, TuiOpenThemesResponses, TuiShowToastResponses, TuiSubmitPromptResponses } from './types.gen'; + +export type Options = Options2 & { + /** + * You can provide a client instance returned by `createClient()` instead of + * individual options. This might be also useful if you want to implement a + * custom client. + */ + client?: Client; + /** + * You can pass arbitrary values through the `meta` object. This can be + * used to access values that aren't defined as part of the SDK function. + */ + meta?: Record; +}; + +/** + * Get events + */ +export const eventSubscribe = (options?: Options) => (options?.client ?? client).sse.get({ url: '/event', ...options }); + +/** + * Get app info + */ +export const appGet = (options?: Options) => (options?.client ?? client).get({ url: '/app', ...options }); + +/** + * Initialize the app + */ +export const appInit = (options?: Options) => (options?.client ?? client).post({ url: '/app/init', ...options }); + +/** + * Get config info + */ +export const configGet = (options?: Options) => (options?.client ?? client).get({ url: '/config', ...options }); + +/** + * List all sessions + */ +export const sessionList = (options?: Options) => (options?.client ?? client).get({ url: '/session', ...options }); + +/** + * Create a new session + */ +export const sessionCreate = (parameters?: { + parentID?: string; + title?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'parentID' }, { in: 'body', key: 'title' }] }]); + return (options?.client ?? client).post({ + url: '/session', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Delete a session and all its data + */ +export const sessionDelete = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).delete({ + url: '/session/{id}', + ...options, + ...params + }); +}; + +/** + * Get session + */ +export const sessionGet = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}', + ...options, + ...params + }); +}; + +/** + * Update session properties + */ +export const sessionUpdate = (parameters: { + id: string; + title?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'body', key: 'title' }] }]); + return (options?.client ?? client).patch({ + url: '/session/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Get a session's children + */ +export const sessionChildren = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/children', + ...options, + ...params + }); +}; + +/** + * Analyze the app and create an AGENTS.md file + */ +export const sessionInit = (parameters: { + id: string; + messageID?: string; + providerID?: string; + modelID?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/init', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Abort a session + */ +export const sessionAbort = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/abort', + ...options, + ...params + }); +}; + +/** + * Unshare the session + */ +export const sessionUnshare = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).delete({ + url: '/session/{id}/share', + ...options, + ...params + }); +}; + +/** + * Share a session + */ +export const sessionShare = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/share', + ...options, + ...params + }); +}; + +/** + * Summarize the session + */ +export const sessionSummarize = (parameters: { + id: string; + providerID?: string; + modelID?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/summarize', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * List messages for a session + */ +export const sessionMessages = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/message', + ...options, + ...params + }); +}; + +/** + * Create and send a new message to a session + */ +export const sessionChat = (parameters: { + id: string; + messageID?: string; + providerID?: string; + modelID?: string; + agent?: string; + system?: string; + tools?: { + [key: string]: boolean; + }; + parts?: Array<({ + type: 'text'; + } & TextPartInput) | ({ + type: 'file'; + } & FilePartInput) | ({ + type: 'agent'; + } & AgentPartInput)>; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'providerID' }, + { in: 'body', key: 'modelID' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'system' }, + { in: 'body', key: 'tools' }, + { in: 'body', key: 'parts' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/message', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Get a message from a session + */ +export const sessionMessage = (parameters: { + id: string; + messageID: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { in: 'path', key: 'messageID' }] }]); + return (options?.client ?? client).get({ + url: '/session/{id}/message/{messageID}', + ...options, + ...params + }); +}; + +/** + * Run a shell command + */ +export const sessionShell = (parameters: { + id: string; + agent?: string; + command?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'agent' }, + { in: 'body', key: 'command' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/shell', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Revert a message + */ +export const sessionRevert = (parameters: { + id: string; + messageID?: string; + partID?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'body', key: 'messageID' }, + { in: 'body', key: 'partID' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/revert', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Restore all reverted messages + */ +export const sessionUnrevert = (parameters: { + id: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/unrevert', + ...options, + ...params + }); +}; + +/** + * Respond to a permission request + */ +export const postSessionByIdPermissionsByPermissionId = (parameters: { + id: string; + permissionID: string; + response?: 'once' | 'always' | 'reject'; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'path', key: 'id' }, + { in: 'path', key: 'permissionID' }, + { in: 'body', key: 'response' } + ] }]); + return (options?.client ?? client).post({ + url: '/session/{id}/permissions/{permissionID}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * List all providers + */ +export const configProviders = (options?: Options) => (options?.client ?? client).get({ url: '/config/providers', ...options }); + +/** + * Find text in files + */ +export const findText = (parameters: { + pattern: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'pattern' }] }]); + return (options?.client ?? client).get({ + url: '/find', + ...options, + ...params + }); +}; + +/** + * Find files + */ +export const findFiles = (parameters: { + query: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); + return (options?.client ?? client).get({ + url: '/find/file', + ...options, + ...params + }); +}; + +/** + * Find workspace symbols + */ +export const findSymbols = (parameters: { + query: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'query' }] }]); + return (options?.client ?? client).get({ + url: '/find/symbol', + ...options, + ...params + }); +}; + +/** + * Read a file + */ +export const fileRead = (parameters: { + path: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'path' }] }]); + return (options?.client ?? client).get({ + url: '/file', + ...options, + ...params + }); +}; + +/** + * Get file status + */ +export const fileStatus = (options?: Options) => (options?.client ?? client).get({ url: '/file/status', ...options }); + +/** + * Write a log entry to the server logs + */ +export const appLog = (parameters?: { + service?: string; + level?: 'debug' | 'info' | 'error' | 'warn'; + message?: string; + extra?: { + [key: string]: unknown; + }; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'body', key: 'service' }, + { in: 'body', key: 'level' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'extra' } + ] }]); + return (options?.client ?? client).post({ + url: '/log', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * List all agents + */ +export const appAgents = (options?: Options) => (options?.client ?? client).get({ url: '/agent', ...options }); + +/** + * Append prompt to the TUI + */ +export const tuiAppendPrompt = (parameters?: { + text?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'text' }] }]); + return (options?.client ?? client).post({ + url: '/tui/append-prompt', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Open the help dialog + */ +export const tuiOpenHelp = (options?: Options) => (options?.client ?? client).post({ url: '/tui/open-help', ...options }); + +/** + * Open the session dialog + */ +export const tuiOpenSessions = (options?: Options) => (options?.client ?? client).post({ url: '/tui/open-sessions', ...options }); + +/** + * Open the theme dialog + */ +export const tuiOpenThemes = (options?: Options) => (options?.client ?? client).post({ url: '/tui/open-themes', ...options }); + +/** + * Open the model dialog + */ +export const tuiOpenModels = (options?: Options) => (options?.client ?? client).post({ url: '/tui/open-models', ...options }); + +/** + * Submit the prompt + */ +export const tuiSubmitPrompt = (options?: Options) => (options?.client ?? client).post({ url: '/tui/submit-prompt', ...options }); + +/** + * Clear the prompt + */ +export const tuiClearPrompt = (options?: Options) => (options?.client ?? client).post({ url: '/tui/clear-prompt', ...options }); + +/** + * Execute a TUI command (e.g. agent_cycle) + */ +export const tuiExecuteCommand = (parameters?: { + command?: string; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'body', key: 'command' }] }]); + return (options?.client ?? client).post({ + url: '/tui/execute-command', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Show a toast notification in the TUI + */ +export const tuiShowToast = (parameters?: { + title?: string; + message?: string; + variant?: 'info' | 'success' | 'warning' | 'error'; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [ + { in: 'body', key: 'title' }, + { in: 'body', key: 'message' }, + { in: 'body', key: 'variant' } + ] }]); + return (options?.client ?? client).post({ + url: '/tui/show-toast', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; + +/** + * Set authentication credentials + */ +export const authSet = (parameters: { + id: string; + auth?: Auth; +}, options?: Options) => { + const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'id' }, { key: 'auth', map: 'body' }] }]); + return (options?.client ?? client).put({ + url: '/auth/{id}', + ...options, + ...params, + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + ...params.headers + } + }); +}; diff --git a/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/types.gen.ts b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/types.gen.ts new file mode 100644 index 000000000..ccd376c4b --- /dev/null +++ b/packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/types.gen.ts @@ -0,0 +1,1943 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + +export type Event = ({ + type: 'installation.updated'; +} & EventInstallationUpdated) | ({ + type: 'lsp.client.diagnostics'; +} & EventLspClientDiagnostics) | ({ + type: 'message.updated'; +} & EventMessageUpdated) | ({ + type: 'message.removed'; +} & EventMessageRemoved) | ({ + type: 'message.part.updated'; +} & EventMessagePartUpdated) | ({ + type: 'message.part.removed'; +} & EventMessagePartRemoved) | ({ + type: 'storage.write'; +} & EventStorageWrite) | ({ + type: 'permission.updated'; +} & EventPermissionUpdated) | ({ + type: 'permission.replied'; +} & EventPermissionReplied) | ({ + type: 'file.edited'; +} & EventFileEdited) | ({ + type: 'session.updated'; +} & EventSessionUpdated) | ({ + type: 'session.deleted'; +} & EventSessionDeleted) | ({ + type: 'session.idle'; +} & EventSessionIdle) | ({ + type: 'session.error'; +} & EventSessionError) | ({ + type: 'server.connected'; +} & EventServerConnected) | ({ + type: 'file.watcher.updated'; +} & EventFileWatcherUpdated) | ({ + type: 'ide.installed'; +} & EventIdeInstalled); + +export type EventInstallationUpdated = { + type: 'installation.updated'; + properties: { + version: string; + }; +}; + +export type EventLspClientDiagnostics = { + type: 'lsp.client.diagnostics'; + properties: { + serverID: string; + path: string; + }; +}; + +export type EventMessageUpdated = { + type: 'message.updated'; + properties: { + info: Message; + }; +}; + +export type Message = ({ + role: 'user'; +} & UserMessage) | ({ + role: 'assistant'; +} & AssistantMessage); + +export type UserMessage = { + id: string; + sessionID: string; + role: 'user'; + time: { + created: number; + }; +}; + +export type AssistantMessage = { + id: string; + sessionID: string; + role: 'assistant'; + time: { + created: number; + completed?: number; + }; + error?: ({ + name: 'ProviderAuthError'; + } & ProviderAuthError) | ({ + name: 'UnknownError'; + } & UnknownError) | ({ + name: 'MessageOutputLengthError'; + } & MessageOutputLengthError) | ({ + name: 'MessageAbortedError'; + } & MessageAbortedError); + system: Array; + modelID: string; + providerID: string; + mode: string; + path: { + cwd: string; + root: string; + }; + summary?: boolean; + cost: number; + tokens: { + input: number; + output: number; + reasoning: number; + cache: { + read: number; + write: number; + }; + }; +}; + +export type ProviderAuthError = { + name: 'ProviderAuthError'; + data: { + providerID: string; + message: string; + }; +}; + +export type UnknownError = { + name: 'UnknownError'; + data: { + message: string; + }; +}; + +export type MessageOutputLengthError = { + name: 'MessageOutputLengthError'; + data: { + [key: string]: unknown; + }; +}; + +export type MessageAbortedError = { + name: 'MessageAbortedError'; + data: { + [key: string]: unknown; + }; +}; + +export type EventMessageRemoved = { + type: 'message.removed'; + properties: { + sessionID: string; + messageID: string; + }; +}; + +export type EventMessagePartUpdated = { + type: 'message.part.updated'; + properties: { + part: Part; + }; +}; + +export type Part = ({ + type: 'text'; +} & TextPart) | ({ + type: 'reasoning'; +} & ReasoningPart) | ({ + type: 'file'; +} & FilePart) | ({ + type: 'tool'; +} & ToolPart) | ({ + type: 'step-start'; +} & StepStartPart) | ({ + type: 'step-finish'; +} & StepFinishPart) | ({ + type: 'snapshot'; +} & SnapshotPart) | ({ + type: 'patch'; +} & PatchPart) | ({ + type: 'agent'; +} & AgentPart); + +export type TextPart = { + id: string; + sessionID: string; + messageID: string; + type: 'text'; + text: string; + synthetic?: boolean; + time?: { + start: number; + end?: number; + }; +}; + +export type ReasoningPart = { + id: string; + sessionID: string; + messageID: string; + type: 'reasoning'; + text: string; + metadata?: { + [key: string]: unknown; + }; + time: { + start: number; + end?: number; + }; +}; + +export type FilePart = { + id: string; + sessionID: string; + messageID: string; + type: 'file'; + mime: string; + filename?: string; + url: string; + source?: FilePartSource; +}; + +export type FilePartSource = ({ + type: 'file'; +} & FileSource) | ({ + type: 'symbol'; +} & SymbolSource); + +export type FileSource = { + text: FilePartSourceText; + type: 'file'; + path: string; +}; + +export type FilePartSourceText = { + value: string; + start: number; + end: number; +}; + +export type SymbolSource = { + text: FilePartSourceText; + type: 'symbol'; + path: string; + range: Range; + name: string; + kind: number; +}; + +export type Range = { + start: { + line: number; + character: number; + }; + end: { + line: number; + character: number; + }; +}; + +export type ToolPart = { + id: string; + sessionID: string; + messageID: string; + type: 'tool'; + callID: string; + tool: string; + state: ToolState; +}; + +export type ToolState = ({ + status: 'pending'; +} & ToolStatePending) | ({ + status: 'running'; +} & ToolStateRunning) | ({ + status: 'completed'; +} & ToolStateCompleted) | ({ + status: 'error'; +} & ToolStateError); + +export type ToolStatePending = { + status: 'pending'; +}; + +export type ToolStateRunning = { + status: 'running'; + input?: unknown; + title?: string; + metadata?: { + [key: string]: unknown; + }; + time: { + start: number; + }; +}; + +export type ToolStateCompleted = { + status: 'completed'; + input: { + [key: string]: unknown; + }; + output: string; + title: string; + metadata: { + [key: string]: unknown; + }; + time: { + start: number; + end: number; + }; +}; + +export type ToolStateError = { + status: 'error'; + input: { + [key: string]: unknown; + }; + error: string; + metadata?: { + [key: string]: unknown; + }; + time: { + start: number; + end: number; + }; +}; + +export type StepStartPart = { + id: string; + sessionID: string; + messageID: string; + type: 'step-start'; +}; + +export type StepFinishPart = { + id: string; + sessionID: string; + messageID: string; + type: 'step-finish'; + cost: number; + tokens: { + input: number; + output: number; + reasoning: number; + cache: { + read: number; + write: number; + }; + }; +}; + +export type SnapshotPart = { + id: string; + sessionID: string; + messageID: string; + type: 'snapshot'; + snapshot: string; +}; + +export type PatchPart = { + id: string; + sessionID: string; + messageID: string; + type: 'patch'; + hash: string; + files: Array; +}; + +export type AgentPart = { + id: string; + sessionID: string; + messageID: string; + type: 'agent'; + name: string; + source?: { + value: string; + start: number; + end: number; + }; +}; + +export type EventMessagePartRemoved = { + type: 'message.part.removed'; + properties: { + sessionID: string; + messageID: string; + partID: string; + }; +}; + +export type EventStorageWrite = { + type: 'storage.write'; + properties: { + key: string; + content?: unknown; + }; +}; + +export type EventPermissionUpdated = { + type: 'permission.updated'; + properties: Permission; +}; + +export type Permission = { + id: string; + type: string; + pattern?: string; + sessionID: string; + messageID: string; + callID?: string; + title: string; + metadata: { + [key: string]: unknown; + }; + time: { + created: number; + }; +}; + +export type EventPermissionReplied = { + type: 'permission.replied'; + properties: { + sessionID: string; + permissionID: string; + response: string; + }; +}; + +export type EventFileEdited = { + type: 'file.edited'; + properties: { + file: string; + }; +}; + +export type EventSessionUpdated = { + type: 'session.updated'; + properties: { + info: Session; + }; +}; + +export type Session = { + id: string; + parentID?: string; + share?: { + url: string; + }; + title: string; + version: string; + time: { + created: number; + updated: number; + }; + revert?: { + messageID: string; + partID?: string; + snapshot?: string; + diff?: string; + }; +}; + +export type EventSessionDeleted = { + type: 'session.deleted'; + properties: { + info: Session; + }; +}; + +export type EventSessionIdle = { + type: 'session.idle'; + properties: { + sessionID: string; + }; +}; + +export type EventSessionError = { + type: 'session.error'; + properties: { + sessionID?: string; + error?: ({ + name: 'ProviderAuthError'; + } & ProviderAuthError) | ({ + name: 'UnknownError'; + } & UnknownError) | ({ + name: 'MessageOutputLengthError'; + } & MessageOutputLengthError) | ({ + name: 'MessageAbortedError'; + } & MessageAbortedError); + }; +}; + +export type EventServerConnected = { + type: 'server.connected'; + properties: { + [key: string]: unknown; + }; +}; + +export type EventFileWatcherUpdated = { + type: 'file.watcher.updated'; + properties: { + file: string; + event: 'rename' | 'change'; + }; +}; + +export type EventIdeInstalled = { + type: 'ide.installed'; + properties: { + ide: string; + }; +}; + +export type App = { + hostname: string; + git: boolean; + path: { + config: string; + data: string; + root: string; + cwd: string; + state: string; + }; + time: { + initialized?: number; + }; +}; + +export type Config = { + /** + * JSON schema reference for configuration validation + */ + $schema?: string; + /** + * Theme name to use for the interface + */ + theme?: string; + /** + * Custom keybind configurations + */ + keybinds?: KeybindsConfig; + /** + * TUI specific settings + */ + tui?: { + /** + * TUI scroll speed + */ + scroll_speed: number; + }; + plugin?: Array; + snapshot?: boolean; + /** + * Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing + */ + share?: 'manual' | 'auto' | 'disabled'; + /** + * @deprecated Use 'share' field instead. Share newly created sessions automatically + */ + autoshare?: boolean; + /** + * Automatically update to the latest version + */ + autoupdate?: boolean; + /** + * Disable providers that are loaded automatically + */ + disabled_providers?: Array; + /** + * Model to use in the format of provider/model, eg anthropic/claude-2 + */ + model?: string; + /** + * Small model to use for tasks like title generation in the format of provider/model + */ + small_model?: string; + /** + * Custom username to display in conversations instead of system username + */ + username?: string; + /** + * @deprecated Use `agent` field instead. + */ + mode?: { + build?: AgentConfig; + plan?: AgentConfig; + [key: string]: AgentConfig | undefined; + }; + /** + * Agent configuration, see https://opencode.ai/docs/agent + */ + agent?: { + plan?: AgentConfig; + build?: AgentConfig; + general?: AgentConfig; + [key: string]: AgentConfig | undefined; + }; + /** + * Custom provider configurations and model overrides + */ + provider?: { + [key: string]: { + api?: string; + name?: string; + env?: Array; + id?: string; + npm?: string; + models?: { + [key: string]: { + id?: string; + name?: string; + release_date?: string; + attachment?: boolean; + reasoning?: boolean; + temperature?: boolean; + tool_call?: boolean; + cost?: { + input: number; + output: number; + cache_read?: number; + cache_write?: number; + }; + limit?: { + context: number; + output: number; + }; + options?: { + [key: string]: unknown; + }; + }; + }; + options?: { + apiKey?: string; + baseURL?: string; + [key: string]: unknown | string | undefined; + }; + }; + }; + /** + * MCP (Model Context Protocol) server configurations + */ + mcp?: { + [key: string]: ({ + type: 'local'; + } & McpLocalConfig) | ({ + type: 'remote'; + } & McpRemoteConfig); + }; + formatter?: { + [key: string]: { + disabled?: boolean; + command?: Array; + environment?: { + [key: string]: string; + }; + extensions?: Array; + }; + }; + lsp?: { + [key: string]: { + disabled: true; + } | { + command: Array; + extensions?: Array; + disabled?: boolean; + env?: { + [key: string]: string; + }; + initialization?: { + [key: string]: unknown; + }; + }; + }; + /** + * Additional instruction files or patterns to include + */ + instructions?: Array; + /** + * @deprecated Always uses stretch layout. + */ + layout?: LayoutConfig; + permission?: { + edit?: 'ask' | 'allow' | 'deny'; + bash?: 'ask' | 'allow' | 'deny' | { + [key: string]: 'ask' | 'allow' | 'deny'; + }; + webfetch?: 'ask' | 'allow' | 'deny'; + }; + tools?: { + [key: string]: boolean; + }; + experimental?: { + hook?: { + file_edited?: { + [key: string]: Array<{ + command: Array; + environment?: { + [key: string]: string; + }; + }>; + }; + session_completed?: Array<{ + command: Array; + environment?: { + [key: string]: string; + }; + }>; + }; + }; +}; + +export type KeybindsConfig = { + /** + * Leader key for keybind combinations + */ + leader: string; + /** + * Show help dialog + */ + app_help: string; + /** + * Exit the application + */ + app_exit: string; + /** + * Open external editor + */ + editor_open: string; + /** + * List available themes + */ + theme_list: string; + /** + * Create/update AGENTS.md + */ + project_init: string; + /** + * Toggle tool details + */ + tool_details: string; + /** + * Toggle thinking blocks + */ + thinking_blocks: string; + /** + * Export session to editor + */ + session_export: string; + /** + * Create a new session + */ + session_new: string; + /** + * List all sessions + */ + session_list: string; + /** + * Show session timeline + */ + session_timeline: string; + /** + * Share current session + */ + session_share: string; + /** + * Unshare current session + */ + session_unshare: string; + /** + * Interrupt current session + */ + session_interrupt: string; + /** + * Compact the session + */ + session_compact: string; + /** + * Cycle to next child session + */ + session_child_cycle: string; + /** + * Cycle to previous child session + */ + session_child_cycle_reverse: string; + /** + * Scroll messages up by one page + */ + messages_page_up: string; + /** + * Scroll messages down by one page + */ + messages_page_down: string; + /** + * Scroll messages up by half page + */ + messages_half_page_up: string; + /** + * Scroll messages down by half page + */ + messages_half_page_down: string; + /** + * Navigate to first message + */ + messages_first: string; + /** + * Navigate to last message + */ + messages_last: string; + /** + * Copy message + */ + messages_copy: string; + /** + * Undo message + */ + messages_undo: string; + /** + * Redo message + */ + messages_redo: string; + /** + * List available models + */ + model_list: string; + /** + * Next recent model + */ + model_cycle_recent: string; + /** + * Previous recent model + */ + model_cycle_recent_reverse: string; + /** + * List agents + */ + agent_list: string; + /** + * Next agent + */ + agent_cycle: string; + /** + * Previous agent + */ + agent_cycle_reverse: string; + /** + * Clear input field + */ + input_clear: string; + /** + * Paste from clipboard + */ + input_paste: string; + /** + * Submit input + */ + input_submit: string; + /** + * Insert newline in input + */ + input_newline: string; + /** + * @deprecated use agent_cycle. Next mode + */ + switch_mode: string; + /** + * @deprecated use agent_cycle_reverse. Previous mode + */ + switch_mode_reverse: string; + /** + * @deprecated use agent_cycle. Next agent + */ + switch_agent: string; + /** + * @deprecated use agent_cycle_reverse. Previous agent + */ + switch_agent_reverse: string; + /** + * @deprecated Currently not available. List files + */ + file_list: string; + /** + * @deprecated Close file + */ + file_close: string; + /** + * @deprecated Search file + */ + file_search: string; + /** + * @deprecated Split/unified diff + */ + file_diff_toggle: string; + /** + * @deprecated Navigate to previous message + */ + messages_previous: string; + /** + * @deprecated Navigate to next message + */ + messages_next: string; + /** + * @deprecated Toggle layout + */ + messages_layout_toggle: string; + /** + * @deprecated use messages_undo. Revert message + */ + messages_revert: string; +}; + +export type AgentConfig = { + model?: string; + temperature?: number; + top_p?: number; + prompt?: string; + tools?: { + [key: string]: boolean; + }; + disable?: boolean; + /** + * Description of when to use the agent + */ + description?: string; + mode?: 'subagent' | 'primary' | 'all'; + permission?: { + edit?: 'ask' | 'allow' | 'deny'; + bash?: 'ask' | 'allow' | 'deny' | { + [key: string]: 'ask' | 'allow' | 'deny'; + }; + webfetch?: 'ask' | 'allow' | 'deny'; + }; + [key: string]: unknown | string | number | { + [key: string]: boolean; + } | boolean | 'subagent' | 'primary' | 'all' | { + edit?: 'ask' | 'allow' | 'deny'; + bash?: 'ask' | 'allow' | 'deny' | { + [key: string]: 'ask' | 'allow' | 'deny'; + }; + webfetch?: 'ask' | 'allow' | 'deny'; + } | undefined; +}; + +export type Provider = { + api?: string; + name: string; + env: Array; + id: string; + npm?: string; + models: { + [key: string]: Model; + }; +}; + +export type Model = { + id: string; + name: string; + release_date: string; + attachment: boolean; + reasoning: boolean; + temperature: boolean; + tool_call: boolean; + cost: { + input: number; + output: number; + cache_read?: number; + cache_write?: number; + }; + limit: { + context: number; + output: number; + }; + options: { + [key: string]: unknown; + }; +}; + +export type McpLocalConfig = { + /** + * Type of MCP server connection + */ + type: 'local'; + /** + * Command and arguments to run the MCP server + */ + command: Array; + /** + * Environment variables to set when running the MCP server + */ + environment?: { + [key: string]: string; + }; + /** + * Enable or disable the MCP server on startup + */ + enabled?: boolean; +}; + +export type McpRemoteConfig = { + /** + * Type of MCP server connection + */ + type: 'remote'; + /** + * URL of the remote MCP server + */ + url: string; + /** + * Enable or disable the MCP server on startup + */ + enabled?: boolean; + /** + * Headers to send with the request + */ + headers?: { + [key: string]: string; + }; +}; + +export type LayoutConfig = 'auto' | 'stretch'; + +export type Error = { + data: { + [key: string]: unknown; + }; +}; + +export type TextPartInput = { + id?: string; + type: 'text'; + text: string; + synthetic?: boolean; + time?: { + start: number; + end?: number; + }; +}; + +export type FilePartInput = { + id?: string; + type: 'file'; + mime: string; + filename?: string; + url: string; + source?: FilePartSource; +}; + +export type AgentPartInput = { + id?: string; + type: 'agent'; + name: string; + source?: { + value: string; + start: number; + end: number; + }; +}; + +export type Symbol = { + name: string; + kind: number; + location: { + uri: string; + range: Range; + }; +}; + +export type File = { + path: string; + added: number; + removed: number; + status: 'added' | 'deleted' | 'modified'; +}; + +export type Agent = { + name: string; + description?: string; + mode: 'subagent' | 'primary' | 'all'; + builtIn: boolean; + topP?: number; + temperature?: number; + permission: { + edit: 'ask' | 'allow' | 'deny'; + bash: { + [key: string]: 'ask' | 'allow' | 'deny'; + }; + webfetch?: 'ask' | 'allow' | 'deny'; + }; + model?: { + modelID: string; + providerID: string; + }; + prompt?: string; + tools: { + [key: string]: boolean; + }; + options: { + [key: string]: unknown; + }; +}; + +export type Auth = ({ + type: 'oauth'; +} & OAuth) | ({ + type: 'api'; +} & ApiAuth) | ({ + type: 'wellknown'; +} & WellKnownAuth); + +export type OAuth = { + type: 'oauth'; + refresh: string; + access: string; + expires: number; +}; + +export type ApiAuth = { + type: 'api'; + key: string; +}; + +export type WellKnownAuth = { + type: 'wellknown'; + key: string; + token: string; +}; + +export type EventSubscribeData = { + body?: never; + path?: never; + query?: never; + url: '/event'; +}; + +export type EventSubscribeResponses = { + /** + * Event stream + */ + 200: Event; +}; + +export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]; + +export type AppGetData = { + body?: never; + path?: never; + query?: never; + url: '/app'; +}; + +export type AppGetResponses = { + /** + * 200 + */ + 200: App; +}; + +export type AppGetResponse = AppGetResponses[keyof AppGetResponses]; + +export type AppInitData = { + body?: never; + path?: never; + query?: never; + url: '/app/init'; +}; + +export type AppInitResponses = { + /** + * Initialize the app + */ + 200: boolean; +}; + +export type AppInitResponse = AppInitResponses[keyof AppInitResponses]; + +export type ConfigGetData = { + body?: never; + path?: never; + query?: never; + url: '/config'; +}; + +export type ConfigGetResponses = { + /** + * Get config info + */ + 200: Config; +}; + +export type ConfigGetResponse = ConfigGetResponses[keyof ConfigGetResponses]; + +export type SessionListData = { + body?: never; + path?: never; + query?: never; + url: '/session'; +}; + +export type SessionListResponses = { + /** + * List of sessions + */ + 200: Array; +}; + +export type SessionListResponse = SessionListResponses[keyof SessionListResponses]; + +export type SessionCreateData = { + body?: { + parentID?: string; + title?: string; + }; + path?: never; + query?: never; + url: '/session'; +}; + +export type SessionCreateErrors = { + /** + * Bad request + */ + 400: Error; +}; + +export type SessionCreateError = SessionCreateErrors[keyof SessionCreateErrors]; + +export type SessionCreateResponses = { + /** + * Successfully created session + */ + 200: Session; +}; + +export type SessionCreateResponse = SessionCreateResponses[keyof SessionCreateResponses]; + +export type SessionDeleteData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}'; +}; + +export type SessionDeleteResponses = { + /** + * Successfully deleted session + */ + 200: boolean; +}; + +export type SessionDeleteResponse = SessionDeleteResponses[keyof SessionDeleteResponses]; + +export type SessionGetData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}'; +}; + +export type SessionGetResponses = { + /** + * Get session + */ + 200: Session; +}; + +export type SessionGetResponse = SessionGetResponses[keyof SessionGetResponses]; + +export type SessionUpdateData = { + body?: { + title?: string; + }; + path: { + id: string; + }; + query?: never; + url: '/session/{id}'; +}; + +export type SessionUpdateResponses = { + /** + * Successfully updated session + */ + 200: Session; +}; + +export type SessionUpdateResponse = SessionUpdateResponses[keyof SessionUpdateResponses]; + +export type SessionChildrenData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/children'; +}; + +export type SessionChildrenResponses = { + /** + * List of children + */ + 200: Array; +}; + +export type SessionChildrenResponse = SessionChildrenResponses[keyof SessionChildrenResponses]; + +export type SessionInitData = { + body?: { + messageID: string; + providerID: string; + modelID: string; + }; + path: { + /** + * Session ID + */ + id: string; + }; + query?: never; + url: '/session/{id}/init'; +}; + +export type SessionInitResponses = { + /** + * 200 + */ + 200: boolean; +}; + +export type SessionInitResponse = SessionInitResponses[keyof SessionInitResponses]; + +export type SessionAbortData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/abort'; +}; + +export type SessionAbortResponses = { + /** + * Aborted session + */ + 200: boolean; +}; + +export type SessionAbortResponse = SessionAbortResponses[keyof SessionAbortResponses]; + +export type SessionUnshareData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/share'; +}; + +export type SessionUnshareResponses = { + /** + * Successfully unshared session + */ + 200: Session; +}; + +export type SessionUnshareResponse = SessionUnshareResponses[keyof SessionUnshareResponses]; + +export type SessionShareData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/share'; +}; + +export type SessionShareResponses = { + /** + * Successfully shared session + */ + 200: Session; +}; + +export type SessionShareResponse = SessionShareResponses[keyof SessionShareResponses]; + +export type SessionSummarizeData = { + body?: { + providerID: string; + modelID: string; + }; + path: { + /** + * Session ID + */ + id: string; + }; + query?: never; + url: '/session/{id}/summarize'; +}; + +export type SessionSummarizeResponses = { + /** + * Summarized session + */ + 200: boolean; +}; + +export type SessionSummarizeResponse = SessionSummarizeResponses[keyof SessionSummarizeResponses]; + +export type SessionMessagesData = { + body?: never; + path: { + /** + * Session ID + */ + id: string; + }; + query?: never; + url: '/session/{id}/message'; +}; + +export type SessionMessagesResponses = { + /** + * List of messages + */ + 200: Array<{ + info: Message; + parts: Array; + }>; +}; + +export type SessionMessagesResponse = SessionMessagesResponses[keyof SessionMessagesResponses]; + +export type SessionChatData = { + body?: { + messageID?: string; + providerID: string; + modelID: string; + agent?: string; + system?: string; + tools?: { + [key: string]: boolean; + }; + parts: Array<({ + type: 'text'; + } & TextPartInput) | ({ + type: 'file'; + } & FilePartInput) | ({ + type: 'agent'; + } & AgentPartInput)>; + }; + path: { + /** + * Session ID + */ + id: string; + }; + query?: never; + url: '/session/{id}/message'; +}; + +export type SessionChatResponses = { + /** + * Created message + */ + 200: { + info: AssistantMessage; + parts: Array; + }; +}; + +export type SessionChatResponse = SessionChatResponses[keyof SessionChatResponses]; + +export type SessionMessageData = { + body?: never; + path: { + /** + * Session ID + */ + id: string; + /** + * Message ID + */ + messageID: string; + }; + query?: never; + url: '/session/{id}/message/{messageID}'; +}; + +export type SessionMessageResponses = { + /** + * Message + */ + 200: { + info: Message; + parts: Array; + }; +}; + +export type SessionMessageResponse = SessionMessageResponses[keyof SessionMessageResponses]; + +export type SessionShellData = { + body?: { + agent: string; + command: string; + }; + path: { + /** + * Session ID + */ + id: string; + }; + query?: never; + url: '/session/{id}/shell'; +}; + +export type SessionShellResponses = { + /** + * Created message + */ + 200: AssistantMessage; +}; + +export type SessionShellResponse = SessionShellResponses[keyof SessionShellResponses]; + +export type SessionRevertData = { + body?: { + messageID: string; + partID?: string; + }; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/revert'; +}; + +export type SessionRevertResponses = { + /** + * Updated session + */ + 200: Session; +}; + +export type SessionRevertResponse = SessionRevertResponses[keyof SessionRevertResponses]; + +export type SessionUnrevertData = { + body?: never; + path: { + id: string; + }; + query?: never; + url: '/session/{id}/unrevert'; +}; + +export type SessionUnrevertResponses = { + /** + * Updated session + */ + 200: Session; +}; + +export type SessionUnrevertResponse = SessionUnrevertResponses[keyof SessionUnrevertResponses]; + +export type PostSessionByIdPermissionsByPermissionIdData = { + body?: { + response: 'once' | 'always' | 'reject'; + }; + path: { + id: string; + permissionID: string; + }; + query?: never; + url: '/session/{id}/permissions/{permissionID}'; +}; + +export type PostSessionByIdPermissionsByPermissionIdResponses = { + /** + * Permission processed successfully + */ + 200: boolean; +}; + +export type PostSessionByIdPermissionsByPermissionIdResponse = PostSessionByIdPermissionsByPermissionIdResponses[keyof PostSessionByIdPermissionsByPermissionIdResponses]; + +export type ConfigProvidersData = { + body?: never; + path?: never; + query?: never; + url: '/config/providers'; +}; + +export type ConfigProvidersResponses = { + /** + * List of providers + */ + 200: { + providers: Array; + default: { + [key: string]: string; + }; + }; +}; + +export type ConfigProvidersResponse = ConfigProvidersResponses[keyof ConfigProvidersResponses]; + +export type FindTextData = { + body?: never; + path?: never; + query: { + pattern: string; + }; + url: '/find'; +}; + +export type FindTextResponses = { + /** + * Matches + */ + 200: Array<{ + path: { + text: string; + }; + lines: { + text: string; + }; + line_number: number; + absolute_offset: number; + submatches: Array<{ + match: { + text: string; + }; + start: number; + end: number; + }>; + }>; +}; + +export type FindTextResponse = FindTextResponses[keyof FindTextResponses]; + +export type FindFilesData = { + body?: never; + path?: never; + query: { + query: string; + }; + url: '/find/file'; +}; + +export type FindFilesResponses = { + /** + * File paths + */ + 200: Array; +}; + +export type FindFilesResponse = FindFilesResponses[keyof FindFilesResponses]; + +export type FindSymbolsData = { + body?: never; + path?: never; + query: { + query: string; + }; + url: '/find/symbol'; +}; + +export type FindSymbolsResponses = { + /** + * Symbols + */ + 200: Array; +}; + +export type FindSymbolsResponse = FindSymbolsResponses[keyof FindSymbolsResponses]; + +export type FileReadData = { + body?: never; + path?: never; + query: { + path: string; + }; + url: '/file'; +}; + +export type FileReadResponses = { + /** + * File content + */ + 200: { + type: 'raw' | 'patch'; + content: string; + }; +}; + +export type FileReadResponse = FileReadResponses[keyof FileReadResponses]; + +export type FileStatusData = { + body?: never; + path?: never; + query?: never; + url: '/file/status'; +}; + +export type FileStatusResponses = { + /** + * File status + */ + 200: Array; +}; + +export type FileStatusResponse = FileStatusResponses[keyof FileStatusResponses]; + +export type AppLogData = { + body?: { + /** + * Service name for the log entry + */ + service: string; + /** + * Log level + */ + level: 'debug' | 'info' | 'error' | 'warn'; + /** + * Log message + */ + message: string; + /** + * Additional metadata for the log entry + */ + extra?: { + [key: string]: unknown; + }; + }; + path?: never; + query?: never; + url: '/log'; +}; + +export type AppLogResponses = { + /** + * Log entry written successfully + */ + 200: boolean; +}; + +export type AppLogResponse = AppLogResponses[keyof AppLogResponses]; + +export type AppAgentsData = { + body?: never; + path?: never; + query?: never; + url: '/agent'; +}; + +export type AppAgentsResponses = { + /** + * List of agents + */ + 200: Array; +}; + +export type AppAgentsResponse = AppAgentsResponses[keyof AppAgentsResponses]; + +export type TuiAppendPromptData = { + body?: { + text: string; + }; + path?: never; + query?: never; + url: '/tui/append-prompt'; +}; + +export type TuiAppendPromptResponses = { + /** + * Prompt processed successfully + */ + 200: boolean; +}; + +export type TuiAppendPromptResponse = TuiAppendPromptResponses[keyof TuiAppendPromptResponses]; + +export type TuiOpenHelpData = { + body?: never; + path?: never; + query?: never; + url: '/tui/open-help'; +}; + +export type TuiOpenHelpResponses = { + /** + * Help dialog opened successfully + */ + 200: boolean; +}; + +export type TuiOpenHelpResponse = TuiOpenHelpResponses[keyof TuiOpenHelpResponses]; + +export type TuiOpenSessionsData = { + body?: never; + path?: never; + query?: never; + url: '/tui/open-sessions'; +}; + +export type TuiOpenSessionsResponses = { + /** + * Session dialog opened successfully + */ + 200: boolean; +}; + +export type TuiOpenSessionsResponse = TuiOpenSessionsResponses[keyof TuiOpenSessionsResponses]; + +export type TuiOpenThemesData = { + body?: never; + path?: never; + query?: never; + url: '/tui/open-themes'; +}; + +export type TuiOpenThemesResponses = { + /** + * Theme dialog opened successfully + */ + 200: boolean; +}; + +export type TuiOpenThemesResponse = TuiOpenThemesResponses[keyof TuiOpenThemesResponses]; + +export type TuiOpenModelsData = { + body?: never; + path?: never; + query?: never; + url: '/tui/open-models'; +}; + +export type TuiOpenModelsResponses = { + /** + * Model dialog opened successfully + */ + 200: boolean; +}; + +export type TuiOpenModelsResponse = TuiOpenModelsResponses[keyof TuiOpenModelsResponses]; + +export type TuiSubmitPromptData = { + body?: never; + path?: never; + query?: never; + url: '/tui/submit-prompt'; +}; + +export type TuiSubmitPromptResponses = { + /** + * Prompt submitted successfully + */ + 200: boolean; +}; + +export type TuiSubmitPromptResponse = TuiSubmitPromptResponses[keyof TuiSubmitPromptResponses]; + +export type TuiClearPromptData = { + body?: never; + path?: never; + query?: never; + url: '/tui/clear-prompt'; +}; + +export type TuiClearPromptResponses = { + /** + * Prompt cleared successfully + */ + 200: boolean; +}; + +export type TuiClearPromptResponse = TuiClearPromptResponses[keyof TuiClearPromptResponses]; + +export type TuiExecuteCommandData = { + body?: { + command: string; + }; + path?: never; + query?: never; + url: '/tui/execute-command'; +}; + +export type TuiExecuteCommandResponses = { + /** + * Command executed successfully + */ + 200: boolean; +}; + +export type TuiExecuteCommandResponse = TuiExecuteCommandResponses[keyof TuiExecuteCommandResponses]; + +export type TuiShowToastData = { + body?: { + title?: string; + message: string; + variant: 'info' | 'success' | 'warning' | 'error'; + }; + path?: never; + query?: never; + url: '/tui/show-toast'; +}; + +export type TuiShowToastResponses = { + /** + * Toast notification shown successfully + */ + 200: boolean; +}; + +export type TuiShowToastResponse = TuiShowToastResponses[keyof TuiShowToastResponses]; + +export type AuthSetData = { + body?: Auth; + path: { + id: string; + }; + query?: never; + url: '/auth/{id}'; +}; + +export type AuthSetErrors = { + /** + * Bad request + */ + 400: Error; +}; + +export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]; + +export type AuthSetResponses = { + /** + * Successfully set authentication credentials + */ + 200: boolean; +}; + +export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]; diff --git a/packages/openapi-ts-tests/sdks/test/opencode.test.ts b/packages/openapi-ts-tests/sdks/test/opencode.test.ts index 03196d1c5..a2ade526b 100644 --- a/packages/openapi-ts-tests/sdks/test/opencode.test.ts +++ b/packages/openapi-ts-tests/sdks/test/opencode.test.ts @@ -24,6 +24,22 @@ describe(`SDK: ${namespace}`, () => { }); const scenarios = [ + { + config: createConfig({ + input: specPath, + output: { + path: 'export-all', + preferExportAll: true, + }, + plugins: [ + { + name: '@hey-api/sdk', + paramsStructure: 'flat', + }, + ], + }), + description: 'export all', + }, { config: createConfig({ input: specPath, diff --git a/packages/openapi-ts/src/parser/types/hooks.d.ts b/packages/openapi-ts/src/parser/types/hooks.d.ts index 2095b35cf..80453855e 100644 --- a/packages/openapi-ts/src/parser/types/hooks.d.ts +++ b/packages/openapi-ts/src/parser/types/hooks.d.ts @@ -1,4 +1,4 @@ -import type { Symbol, SymbolIn } from '@hey-api/codegen-core'; +import type { Node, Symbol, SymbolIn } from '@hey-api/codegen-core'; import type { IROperationObject } from '~/ir/types'; import type { PluginInstance } from '~/plugins/shared/utils/instance'; @@ -8,6 +8,34 @@ export type Hooks = { * Event hooks. */ events?: { + /** + * Triggered after adding or updating a node. + * + * You can use this to perform actions after a node is added or updated. + * + * @param args Arguments object. + * @returns void + */ + 'node:set:after'?: (args: { + /** The node added or updated. */ + node: Node | null; + /** Plugin that added or updated the node. */ + plugin: PluginInstance; + }) => void; + /** + * Triggered before adding or updating a node. + * + * You can use this to modify the node before it's added or updated. + * + * @param args Arguments object. + * @returns void + */ + 'node:set:before'?: (args: { + /** The node to be added or updated. */ + node: Node | null; + /** Plugin adding or updating the node. */ + plugin: PluginInstance; + }) => void; /** * Triggered after executing a plugin handler. * @@ -56,38 +84,6 @@ export type Hooks = { /** Symbol to register. */ symbol: SymbolIn; }) => void; - /** - * Triggered after setting a symbol value. - * - * You can use this to perform actions after a symbol's value is set. - * - * @param args Arguments object. - * @returns void - */ - 'symbol:setValue:after'?: (args: { - /** Plugin that set the symbol value. */ - plugin: PluginInstance; - /** The symbol. */ - symbol: Symbol; - /** The value that was set. */ - value: unknown; - }) => void; - /** - * Triggered before setting a symbol value. - * - * You can use this to modify the value before it's set. - * - * @param args Arguments object. - * @returns void - */ - 'symbol:setValue:before'?: (args: { - /** Plugin setting the symbol value. */ - plugin: PluginInstance; - /** The symbol. */ - symbol: Symbol; - /** The value to set. */ - value: unknown; - }) => void; }; /** * Hooks specifically for overriding operations behavior. diff --git a/packages/openapi-ts/src/plugins/shared/utils/instance.ts b/packages/openapi-ts/src/plugins/shared/utils/instance.ts index de15a884b..66f7e8b69 100644 --- a/packages/openapi-ts/src/plugins/shared/utils/instance.ts +++ b/packages/openapi-ts/src/plugins/shared/utils/instance.ts @@ -107,13 +107,24 @@ export class PluginInstance { } addNode(node: Node | null): number { - return this.gen.nodes.add(node); - } - removeNode(index: number): void { - return this.gen.nodes.remove(index); + for (const hook of this.eventHooks['node:set:before']) { + hook({ node, plugin: this }); + } + const index = this.gen.nodes.add(node); + for (const hook of this.eventHooks['node:set:after']) { + hook({ node, plugin: this }); + } + return index; } updateNode(index: number, node: Node | null): void { - return this.gen.nodes.update(index, node); + for (const hook of this.eventHooks['node:set:before']) { + hook({ node, plugin: this }); + } + const result = this.gen.nodes.update(index, node); + for (const hook of this.eventHooks['node:set:after']) { + hook({ node, plugin: this }); + } + return result; } /** @@ -366,12 +377,12 @@ export class PluginInstance { private buildEventHooks(): EventHooks { const result: EventHooks = { + 'node:set:after': [], + 'node:set:before': [], 'plugin:handler:after': [], 'plugin:handler:before': [], 'symbol:register:after': [], 'symbol:register:before': [], - 'symbol:setValue:after': [], - 'symbol:setValue:before': [], }; const scopes = [ this.config['~hooks']?.events, From c3a81e89ba5ed3f373409582c5f814e1d10cae06 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 11 Dec 2025 19:36:39 +0800 Subject: [PATCH 15/15] docs: add changelog --- .changeset/clean-apes-divide.md | 29 +++++++++++++++++++++++++ .changeset/eight-rabbits-unite.md | 21 ++++++++++++++++++ .changeset/gentle-spoons-kneel.md | 5 +++++ .changeset/plenty-walls-repeat.md | 9 ++++++++ docs/openapi-ts/configuration/output.md | 5 +++-- 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 .changeset/clean-apes-divide.md create mode 100644 .changeset/eight-rabbits-unite.md create mode 100644 .changeset/gentle-spoons-kneel.md create mode 100644 .changeset/plenty-walls-repeat.md diff --git a/.changeset/clean-apes-divide.md b/.changeset/clean-apes-divide.md new file mode 100644 index 000000000..79f54b1f7 --- /dev/null +++ b/.changeset/clean-apes-divide.md @@ -0,0 +1,29 @@ +--- +'@hey-api/openapi-ts': patch +--- + +**output**: add `nameConflictResolver` option + +## Name Conflicts + +As your project grows, the chances of name conflicts increase. We use a simple conflict resolver that appends numeric suffixes to duplicate identifiers. If you prefer a different strategy, you can provide your own `nameConflictResolver` function. + +```js +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: { + nameConflictResolver({ attempt, baseName }) { + return attempt === 0 ? baseName : `${baseName}_N${attempt + 1}`; + }, + path: 'src/client', + }, +}; +``` + +Example output: + +```ts +export type ChatCompletion = string; + +export type ChatCompletion_N2 = number; +``` diff --git a/.changeset/eight-rabbits-unite.md b/.changeset/eight-rabbits-unite.md new file mode 100644 index 000000000..92bf77bce --- /dev/null +++ b/.changeset/eight-rabbits-unite.md @@ -0,0 +1,21 @@ +--- +'@hey-api/openapi-ts': minor +--- + +**output**: add `preferExportAll` option + +### Prefer named exports + +This release changes the default for `index.ts` to prefer named exports. Named exports may lead to better IDE and bundler performance compared to asterisk (`*`) as your tooling doesn't have to inspect the underlying module to discover exports. + +While this change is merely cosmetic, you can set `output.preferExportAll` to `true` if you prefer to use the asterisk. + +```js +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: { + path: 'src/client', + preferExportAll: true, + }, +}; +``` diff --git a/.changeset/gentle-spoons-kneel.md b/.changeset/gentle-spoons-kneel.md new file mode 100644 index 000000000..c588ffe29 --- /dev/null +++ b/.changeset/gentle-spoons-kneel.md @@ -0,0 +1,5 @@ +--- +'@hey-api/codegen-core': minor +--- + +**symbols**: remove `placeholder` property diff --git a/.changeset/plenty-walls-repeat.md b/.changeset/plenty-walls-repeat.md new file mode 100644 index 000000000..2807c768e --- /dev/null +++ b/.changeset/plenty-walls-repeat.md @@ -0,0 +1,9 @@ +--- +'@hey-api/openapi-ts': minor +--- + +**parser**: removed `symbol:setValue:*` events + +### Removed `symbol:setValue:*` events + +These events have been removed in favor of `node:set:*` events. diff --git a/docs/openapi-ts/configuration/output.md b/docs/openapi-ts/configuration/output.md index 8c7627986..10806b04d 100644 --- a/docs/openapi-ts/configuration/output.md +++ b/docs/openapi-ts/configuration/output.md @@ -264,18 +264,19 @@ As your project grows, the chances of name conflicts increase. We use a simple c ::: code-group + ```js [config] export default { input: 'hey-api/backend', // sign up at app.heyapi.dev output: { - nameConflictResolver({ attempt, baseName }) { - // [!code ++] + nameConflictResolver({ attempt, baseName }) { // [!code ++] return attempt === 0 ? baseName : `${baseName}_N${attempt + 1}`; // [!code ++] }, // [!code ++] path: 'src/client', }, }; ``` + ```ts [example] export type ChatCompletion = string;

%}#O^r>uhm99~N5FFPx4R#vyeSOd_z+Rx! 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 R@G=DaGdzydE!J_o{XeOPxN86a literal 0 HcmV?d00001 diff --git a/docs/public/images/hero-300w.png b/docs/public/images/hero-300w.png new file mode 100644 index 0000000000000000000000000000000000000000..4a640e3d937f96a8819d49039231782323ec27bf GIT binary patch literal 19495 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⁡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 literal 0 HcmV?d00001 diff --git a/docs/public/images/hero-920w.png b/docs/public/images/hero-920w.png new file mode 100644 index 0000000000000000000000000000000000000000..acba3b4f2fde8a8130b19b79bf75cd7c73b701bd GIT binary patch literal 134887 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