diff --git a/packages/custom-client/src/core/bodySerializer.ts b/packages/custom-client/src/core/bodySerializer.ts index 98ce7791f..9077af650 100644 --- a/packages/custom-client/src/core/bodySerializer.ts +++ b/packages/custom-client/src/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/body-response-text-plain/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/form-data/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default-class/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@angular/common/default/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts index 9dcd392f5..47e083ef9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: O parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts index e780545e4..f7209883f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts @@ -229,26 +229,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -264,8 +260,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts index e780545e4..f7209883f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts @@ -229,26 +229,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -264,8 +260,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts index e780545e4..f7209883f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts @@ -229,26 +229,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -264,8 +260,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts index e780545e4..f7209883f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts @@ -229,26 +229,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -264,8 +260,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts index e780545e4..f7209883f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts @@ -229,26 +229,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -264,8 +260,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts index 574c62e3c..92dd6fb44 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts @@ -223,26 +223,22 @@ export const collectionFormat = (options: parameters: { parameterArrayCSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArraySSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayTSV: { array: { - explode: false, - style: 'form' + explode: false } }, parameterArrayPipes: { array: { - explode: false, - style: 'form' + explode: false } } } @@ -258,8 +254,7 @@ export const types = (options: Options({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/schema-unknown/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-api-key/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-basic/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/security-oauth2/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-base-path/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers-host/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/servers/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/transforms-read-write/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/body-response-text-plain/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/internal-name-conflict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/sdk.gen.ts index 8b00797e1..a27b7105c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/sdk.gen.ts @@ -24,8 +24,7 @@ export const postFoo = (options?: Options< parameters: { foo: { array: { - explode: false, - style: 'form' + explode: false } } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/sdk.gen.ts index 8b00797e1..a27b7105c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false/sdk.gen.ts @@ -24,8 +24,7 @@ export const postFoo = (options?: Options< parameters: { foo: { array: { - explode: false, - style: 'form' + explode: false } } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default-class/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@angular/common/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts index 8e49cce94..3ce268fad 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Optio parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@pinia/colada/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-api-key/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-http-bearer/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-oauth2/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/security-open-id-connect/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/servers/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-all-of/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-any-of-null/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transformers-array/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/transforms-read-write/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/body-response-text-plain/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/client/utils.gen.ts index dd95ace2d..24976bffb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen.ts'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen.ts'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/core/bodySerializer.gen.ts index 816c77eaa..f654b09cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/sdk.gen.ts index 751a75d32..f4e8a86b1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/sdk.gen.ts index 34a6f0145..bcdd2c9b8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/sdk.gen.ts @@ -351,7 +351,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/client/utils.gen.ts index 91410ff6d..99f441953 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen.js'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen.js'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts index 224c011ca..886b401ae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/sdk.gen.ts index 915b06f4c..d1fa2c891 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-number/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-strict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/base-url-string/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/clean-false/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/client/utils.gen.ts index 43361a1c2..ade1f1839 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen.ts'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen.ts'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/core/bodySerializer.gen.ts index 816c77eaa..f654b09cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/sdk.gen.ts index 88c213eb3..f59e7de5f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/import-file-extension-ts/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-optional/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/sdk.gen.ts index 6c6dac3da..46c88a35e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/sdk-client-required/sdk.gen.ts @@ -340,7 +340,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/client/utils.gen.ts index 2dbc9b24d..f163053b0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen.js'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen.js'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts index 224c011ca..886b401ae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/sdk.gen.ts index 22e46d0af..999296c80 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/tsconfig-nodenext-sdk/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-number/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-strict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/base-url-string/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/clean-false/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/client/utils.gen.ts index a0b860cf7..c4ae02052 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/core/bodySerializer.gen.ts index 816c77eaa..f654b09cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/sdk.gen.ts index 88c213eb3..f59e7de5f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/import-file-extension-ts/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-optional/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/sdk.gen.ts index 6c6dac3da..46c88a35e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/sdk-client-required/sdk.gen.ts @@ -340,7 +340,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/client/utils.gen.ts index b0e32e05f..d360c1831 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts index 224c011ca..886b401ae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/sdk.gen.ts index 22e46d0af..999296c80 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-next/tsconfig-nodenext-sdk/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-number/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-strict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/base-url-string/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/sdk.gen.ts index b2844195a..c4cad3491 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/clean-false/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/sdk.gen.ts index b2844195a..c4cad3491 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/core/bodySerializer.gen.ts index 816c77eaa..f654b09cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/sdk.gen.ts index a08a5414d..77ec0d8f4 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/import-file-extension-ts/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/sdk.gen.ts index b2844195a..c4cad3491 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-optional/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/sdk.gen.ts index 86a2ffa0f..7531bcd3d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/sdk-client-required/sdk.gen.ts @@ -340,7 +340,6 @@ export const complexTypes = { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts index 224c011ca..886b401ae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/sdk.gen.ts index 270e6f9e2..462b86538 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-nuxt/tsconfig-nodenext-sdk/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-number/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-strict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/base-url-string/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/clean-false/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/client/utils.gen.ts index 3236c6f68..e20906aeb 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen.ts'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/core/bodySerializer.gen.ts index 816c77eaa..f654b09cd 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/sdk.gen.ts index 88c213eb3..f59e7de5f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/import-file-extension-ts/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-optional/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/sdk.gen.ts index 6c6dac3da..46c88a35e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/sdk-client-required/sdk.gen.ts @@ -340,7 +340,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/client/utils.gen.ts index 84a135b1b..9b4f0ec1b 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen.js'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts index 224c011ca..886b401ae 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/sdk.gen.ts index 22e46d0af..999296c80 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-ofetch/tsconfig-nodenext-sdk/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.cts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.cts index 6732704e9..86baf96f9 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.cts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.cts @@ -31,11 +31,18 @@ type ObjectStyle = 'form' | 'deepObject'; //#region src/core/bodySerializer.d.ts type QuerySerializer = (query: Record) => string; type BodySerializer = (body: any) => any; -interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + array?: Partial>; + object?: Partial>; +}; +type QuerySerializerOptions = QuerySerializerOptionsObject & { + /** + * Per-parameter serialization overrides. When provided, these settings + * override the global array/object settings for specific parameter names. + */ + parameters?: Record; +}; declare const formDataBodySerializer: { bodySerializer: | Array>>(body: T) => FormData; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.ts index 10811a47c..5ee2f67a8 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/client/index.d.ts @@ -31,11 +31,18 @@ type ObjectStyle = 'form' | 'deepObject'; //#region src/core/bodySerializer.d.ts type QuerySerializer = (query: Record) => string; type BodySerializer = (body: any) => any; -interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + array?: Partial>; + object?: Partial>; +}; +type QuerySerializerOptions = QuerySerializerOptionsObject & { + /** + * Per-parameter serialization overrides. When provided, these settings + * override the global array/object settings for specific parameter names. + */ + parameters?: Record; +}; declare const formDataBodySerializer: { bodySerializer: | Array>>(body: T) => FormData; }; diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/sdk.gen.ts index 0cfe55b95..855645606 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/bundle/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/sdk.gen.ts index 262be5c1a..416977b82 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/default/sdk.gen.ts @@ -342,7 +342,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/sdk.gen.ts index 262be5c1a..416977b82 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-optional/sdk.gen.ts @@ -342,7 +342,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/sdk.gen.ts index 0b3799d6b..c3a5a488c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/client-custom/sdk-client-required/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-false/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-number/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-strict/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/base-url-string/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/sdk.gen.ts index ab2af798d..a6505cb1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/bundle/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/sdk.gen.ts index ab2af798d..a6505cb1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/sdk.gen.ts index ab2af798d..a6505cb1d 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-optional/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/sdk.gen.ts index 6c6dac3da..46c88a35e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/my-client/sdk-client-required/sdk.gen.ts @@ -340,7 +340,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/headers/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/internal-name-conflict/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/pagination-ref/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/sdk.gen.ts index 8b00797e1..a27b7105c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/sdk.gen.ts @@ -24,8 +24,7 @@ export const postFoo = (options?: Options< parameters: { foo: { array: { - explode: false, - style: 'form' + explode: false } } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/sdk.gen.ts index 8b00797e1..a27b7105c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false/sdk.gen.ts @@ -24,8 +24,7 @@ export const postFoo = (options?: Options< parameters: { foo: { array: { - explode: false, - style: 'form' + explode: false } } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default-class/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@angular/common/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes-instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/client-fetch/sdk-nested-classes/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/default/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/instance/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts index 8e49cce94..3ce268fad 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/sdk/throwOnError/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Optio parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-valibot/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/transformers/type-format-zod/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-custom-name/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@hey-api/typescript/transforms-read-write-ignore/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@pinia/colada/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/asClass/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts index 16bc77a78..2d24d85a6 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/sdk.gen.ts @@ -352,7 +352,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts index 615a4d8f1..4166f8b7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/fetch/sdk.gen.ts @@ -341,7 +341,6 @@ export const complexTypes = (options: Opti parameters: { parameterObject: { object: { - explode: true, style: 'form' } } diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/name-builder/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-api-key/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-false/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-http-bearer/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-oauth2/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/security-open-id-connect/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/servers/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/client/utils.gen.ts index 02a0b8e46..2ff87e260 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/client/utils.gen.ts @@ -96,10 +96,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -111,35 +109,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-angular/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/client/utils.gen.ts index 3fcb3c6e0..723c477c0 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/client/utils.gen.ts @@ -11,10 +11,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -26,35 +24,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-fetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/client/utils.gen.ts index bc5beb817..84c0e642f 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/client/utils.gen.ts @@ -95,10 +95,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -110,35 +108,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-next/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/client/utils.gen.ts index f0ace5fa2..30ef0315e 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/client/utils.gen.ts @@ -100,10 +100,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -116,35 +114,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-nuxt/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/client/utils.gen.ts index 4786acd71..72e2b17b5 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/client/utils.gen.ts @@ -24,10 +24,8 @@ import type { } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -39,35 +37,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-ofetch/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-all-of/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-any-of-null/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transformers-array/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/transforms-read-write/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/client/utils.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/client/utils.gen.ts index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/client/utils.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/client/utils.gen.ts @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/core/bodySerializer.gen.ts b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/core/bodySerializer.gen.ts index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/core/bodySerializer.gen.ts +++ b/packages/openapi-ts-tests/main/test/__snapshots__/plugins/@tanstack/meta/core/bodySerializer.gen.ts @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/client/utils.gen.ts.snap b/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/client/utils.gen.ts.snap index 53a4ac4fa..4c48a9ee1 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/client/utils.gen.ts.snap +++ b/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/client/utils.gen.ts.snap @@ -12,10 +12,8 @@ import { getUrl } from '../core/utils.gen'; import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -27,35 +25,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/core/bodySerializer.gen.ts.snap b/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/core/bodySerializer.gen.ts.snap index e9c71552f..552b50f7c 100644 --- a/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/core/bodySerializer.gen.ts.snap +++ b/packages/openapi-ts-tests/main/test/__snapshots__/test/generated/v3_no_index/core/bodySerializer.gen.ts.snap @@ -10,23 +10,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts-tests/main/test/custom/client/core/bodySerializer.ts b/packages/openapi-ts-tests/main/test/custom/client/core/bodySerializer.ts index 21c235741..60a7dfdb3 100644 --- a/packages/openapi-ts-tests/main/test/custom/client/core/bodySerializer.ts +++ b/packages/openapi-ts-tests/main/test/custom/client/core/bodySerializer.ts @@ -8,11 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; -} + 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) => { if (typeof value === 'string' || value instanceof Blob) { diff --git a/packages/openapi-ts-tests/main/test/openapi-ts.config.ts b/packages/openapi-ts-tests/main/test/openapi-ts.config.ts index cdc50c7d1..db595b1e6 100644 --- a/packages/openapi-ts-tests/main/test/openapi-ts.config.ts +++ b/packages/openapi-ts-tests/main/test/openapi-ts.config.ts @@ -138,17 +138,17 @@ export default defineConfig(() => { // if (!symbol.external && !symbol.meta?.resourceType) { // console.log(`[${plugin.name}]:`, symbol.name); // } - if (!symbol.external && !symbol.meta?.path) { - console.log(`[${plugin.name}]:`, symbol.name, symbol.meta); - } - if (symbol.meta?.tags && symbol.meta?.tags.size > 0) { - console.log( - `[${plugin.name}]:`, - symbol.name, - symbol.meta.path, - symbol.meta.tags, - ); - } + // if (!symbol.external && !symbol.meta?.path) { + // console.log(`[${plugin.name}]:`, symbol.name, symbol.meta); + // } + // if (symbol.meta?.tags && symbol.meta?.tags.size > 0) { + // console.log( + // `[${plugin.name}]:`, + // symbol.name, + // symbol.meta.path, + // symbol.meta.tags, + // ); + // } }, // 'symbol:setValue:after': ({ plugin, symbol }) => { // console.log(`(${plugin.name}) set value:`, symbol.id); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-angular/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-angular/bundle/utils.ts index 014b09b65..985d3c70b 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-angular/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-angular/bundle/utils.ts @@ -94,10 +94,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -109,35 +107,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/utils.ts index 3a2267c2d..0f1cdd5d6 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/utils.ts @@ -9,10 +9,8 @@ import { getUrl } from '../../client-core/bundle/utils'; import type { Client, ClientOptions, Config, RequestOptions } from './types'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -24,35 +22,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-core/bundle/bodySerializer.ts b/packages/openapi-ts/src/plugins/@hey-api/client-core/bundle/bodySerializer.ts index b36fe8a00..a284ced46 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-core/bundle/bodySerializer.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-core/bundle/bodySerializer.ts @@ -8,23 +8,19 @@ export type QuerySerializer = (query: Record) => string; export type BodySerializer = (body: any) => any; -export interface QuerySerializerOptions { +type QuerySerializerOptionsObject = { allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; + 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< - string, - { - allowReserved?: boolean; - array?: SerializerOptions; - object?: SerializerOptions; - } - >; -} + parameters?: Record; +}; const serializeFormDataPair = ( data: FormData, diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-fetch/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-fetch/bundle/utils.ts index 4990d3f03..c9b41242e 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-fetch/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-fetch/bundle/utils.ts @@ -10,10 +10,8 @@ import { getUrl } from '../../client-core/bundle/utils'; import type { Client, ClientOptions, Config, RequestOptions } from './types'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -25,35 +23,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-next/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-next/bundle/utils.ts index b42ce5c24..131693394 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-next/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-next/bundle/utils.ts @@ -93,10 +93,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -108,35 +106,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts index c94e55dbc..50790f422 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts @@ -98,10 +98,8 @@ const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { }; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -114,35 +112,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); diff --git a/packages/openapi-ts/src/plugins/@hey-api/client-ofetch/bundle/utils.ts b/packages/openapi-ts/src/plugins/@hey-api/client-ofetch/bundle/utils.ts index 230df07b2..4e95dc933 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/client-ofetch/bundle/utils.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/client-ofetch/bundle/utils.ts @@ -22,10 +22,8 @@ import type { } from './types'; export const createQuerySerializer = ({ - allowReserved, - array, - object, parameters = {}, + ...args }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { const search: string[] = []; @@ -37,35 +35,31 @@ export const createQuerySerializer = ({ continue; } - // Get parameter-specific settings or fall back to global - const paramConfig = parameters[name] || {}; - const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; + const options = parameters[name] || args; if (Array.isArray(value)) { const serializedArray = serializeArrayParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'form', value, - ...array, - ...paramConfig.array, + ...options.array, }); if (serializedArray) search.push(serializedArray); } else if (typeof value === 'object') { const serializedObject = serializeObjectParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, explode: true, name, style: 'deepObject', value: value as Record, - ...object, - ...paramConfig.object, + ...options.object, }); if (serializedObject) search.push(serializedObject); } else { const serializedPrimitive = serializePrimitiveParam({ - allowReserved: paramAllowReserved, + allowReserved: options.allowReserved, name, value: value as string, }); 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 2f09a7882..3907a2ffd 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 @@ -439,64 +439,70 @@ export const operationStatements = ({ // content type. currently impossible because successes do not contain // header information - // Build per-parameter serialization settings const parameterSerializers: Array = []; for (const name in operation.parameters?.query) { const parameter = operation.parameters.query[name]!; - const needsCustomArraySerialization = - (parameter.schema.type === 'array' || - parameter.schema.type === 'tuple') && - (parameter.style !== 'form' || parameter.explode !== true); - - const needsCustomObjectSerialization = - parameter.schema.type === 'object' && - (parameter.style !== 'deepObject' || parameter.explode !== true); - - if (needsCustomArraySerialization || needsCustomObjectSerialization) { - const paramConfig: Array = []; - - if (needsCustomArraySerialization) { - paramConfig.push({ - key: 'array', + if ( + parameter.schema.type === 'array' || + parameter.schema.type === 'tuple' + ) { + if (parameter.style !== 'form' || !parameter.explode) { + // override the default settings for array serialization + parameterSerializers.push({ + key: parameter.name, value: [ { - key: 'explode', - value: parameter.explode ?? true, - }, - { - key: 'style', - value: parameter.style ?? 'form', + key: 'array', + value: [ + { + key: 'explode', + value: + parameter.explode !== true ? parameter.explode : undefined, + }, + { + key: 'style', + value: + parameter.style !== 'form' ? parameter.style : undefined, + }, + ].filter(({ value }) => value !== undefined), }, ], }); } - - if (needsCustomObjectSerialization) { - paramConfig.push({ - key: 'object', + } else if (parameter.schema.type === 'object') { + if (parameter.style !== 'deepObject' || !parameter.explode) { + // override the default settings for object serialization + parameterSerializers.push({ + key: parameter.name, value: [ { - key: 'explode', - value: parameter.explode ?? true, - }, - { - key: 'style', - value: parameter.style ?? 'deepObject', + key: 'object', + value: [ + { + key: 'explode', + value: + parameter.explode !== true ? parameter.explode : undefined, + }, + { + key: 'style', + value: + parameter.style !== 'deepObject' + ? parameter.style + : undefined, + }, + ].filter(({ value }) => value !== undefined), }, ], }); } - - parameterSerializers.push({ - key: parameter.name, - value: paramConfig, - }); } } - if (parameterSerializers.length > 0) { + if (parameterSerializers.length) { + // TODO: if all parameters have the same serialization, + // apply it globally to reduce output size requestOptions.push({ key: 'querySerializer', value: [