@orval/core 8.0.0 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -25,6 +25,7 @@ type NormalizedOutputOptions = {
25
25
  workspace?: string;
26
26
  target: string;
27
27
  schemas?: string | SchemaOptions;
28
+ operationSchemas?: string;
28
29
  namingConvention: NamingConvention;
29
30
  fileExtension: string;
30
31
  mode: OutputMode;
@@ -181,6 +182,12 @@ type OutputOptions = {
181
182
  workspace?: string;
182
183
  target: string;
183
184
  schemas?: string | SchemaOptions;
185
+ /**
186
+ * Separate path for operation-derived types (params, bodies, responses).
187
+ * When set, types matching operation patterns (e.g., *Params, *Body) are written here
188
+ * while regular schema types remain in the `schemas` path.
189
+ */
190
+ operationSchemas?: string;
184
191
  namingConvention?: NamingConvention;
185
192
  fileExtension?: string;
186
193
  mode?: OutputMode;
@@ -1339,8 +1346,8 @@ declare function combineSchemas({
1339
1346
  declare function resolveDiscriminators(schemas: OpenApiSchemasObject, context: ContextSpec): OpenApiSchemasObject;
1340
1347
  //#endregion
1341
1348
  //#region src/getters/enum.d.ts
1342
- declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined): any;
1343
- declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined): any;
1349
+ declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
1350
+ declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
1344
1351
  declare function getEnum(value: string, enumName: string, names: string[] | undefined, enumGenerationType: EnumGeneration, descriptions?: string[], enumNamingConvention?: NamingConvention): string;
1345
1352
  declare function getEnumImplementation(value: string, names?: string[], descriptions?: string[], enumNamingConvention?: NamingConvention): string;
1346
1353
  //#endregion
@@ -1544,6 +1551,20 @@ interface ResolveOptions {
1544
1551
  combined?: boolean;
1545
1552
  context: ContextSpec;
1546
1553
  }
1554
+ interface CreateTypeAliasOptions {
1555
+ resolvedValue: ResolverValue;
1556
+ propName: string | undefined;
1557
+ context: ContextSpec;
1558
+ }
1559
+ /**
1560
+ * Wraps inline object type in a type alias.
1561
+ * E.g. `{ foo: string }` → value becomes `FooBody`, schema gets `export type FooBody = { foo: string };`
1562
+ */
1563
+ declare function createTypeAliasIfNeeded({
1564
+ resolvedValue,
1565
+ propName,
1566
+ context
1567
+ }: CreateTypeAliasOptions): ScalarValue | undefined;
1547
1568
  declare function resolveObject({
1548
1569
  schema,
1549
1570
  propName,
@@ -1838,6 +1859,21 @@ declare function jsStringEscape(input: string): string;
1838
1859
  declare function isSyntheticDefaultImportsAllow(config?: Tsconfig): boolean;
1839
1860
  //#endregion
1840
1861
  //#region src/writers/schemas.d.ts
1862
+ /**
1863
+ * Split schemas into regular and operation types.
1864
+ */
1865
+ declare function splitSchemasByType(schemas: GeneratorSchema[]): {
1866
+ regularSchemas: GeneratorSchema[];
1867
+ operationSchemas: GeneratorSchema[];
1868
+ };
1869
+ /**
1870
+ * Fix imports in operation schemas that reference regular schemas.
1871
+ */
1872
+ declare function fixCrossDirectoryImports(operationSchemas: GeneratorSchema[], regularSchemaNames: Set<string>, schemaPath: string, operationSchemaPath: string, namingConvention: NamingConvention): void;
1873
+ /**
1874
+ * Fix imports in regular schemas that reference operation schemas.
1875
+ */
1876
+ declare function fixRegularSchemaImports(regularSchemas: GeneratorSchema[], operationSchemaNames: Set<string>, schemaPath: string, operationSchemaPath: string, namingConvention: NamingConvention): void;
1841
1877
  declare function writeModelInline(acc: string, model: string): string;
1842
1878
  declare function writeModelsInline(array: GeneratorSchema[]): string;
1843
1879
  interface WriteSchemaOptions {
@@ -1921,5 +1957,5 @@ declare function generateTargetForTags(builder: WriteSpecBuilder, options: Norma
1921
1957
  declare function getOrvalGeneratedTypes(): string;
1922
1958
  declare function getTypedResponse(): string;
1923
1959
  //#endregion
1924
- export { AngularOptions, BODY_TYPE_NAME, BaseUrlFromConstant, BaseUrlFromSpec, ClientBuilder, ClientDependenciesBuilder, ClientExtraFilesBuilder, ClientFileBuilder, ClientFooterBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, ClientMockBuilder, ClientMockGeneratorBuilder, ClientMockGeneratorImplementation, ClientTitleBuilder, Config, ConfigExternal, ConfigFn, ContextSpec, DeepNonNullable, EnumGeneration, ErrorWithTag, FetchOptions, FormDataArrayHandling, FormDataType, GenerateMockImports, GenerateVerbOptionsParams, GenerateVerbsOptionsParams, GeneratorApiBuilder, GeneratorApiOperations, GeneratorApiResponse, GeneratorClient, GeneratorClientExtra, GeneratorClientFooter, GeneratorClientHeader, GeneratorClientImports, GeneratorClientTitle, GeneratorClients, GeneratorDependency, GeneratorImport, GeneratorMutator, GeneratorMutatorParsingInfo, GeneratorOperation, GeneratorOperations, GeneratorOptions, GeneratorSchema, GeneratorTarget, GeneratorTargetFull, GeneratorVerbOptions, GeneratorVerbsOptions, GetterBody, GetterParam, GetterParameters, GetterParams, GetterProp, GetterPropType, GetterProps, GetterQueryParam, GetterResponse, GlobalMockOptions, GlobalOptions, HonoOptions, Hook, HookCommand, HookFunction, HookOption, HooksOptions, ImportOpenApi, InputFiltersOptions, InputOptions, InputTransformerFn, InvalidateTarget, JsDocOptions, LogLevel, LogLevels, LogOptions, LogType, Logger, LoggerOptions, MockData, MockDataArray, MockDataArrayFn, MockDataObject, MockDataObjectFn, MockOptions, MockProperties, MockPropertiesObject, MockPropertiesObjectFn, MutationInvalidatesConfig, MutationInvalidatesRule, Mutator, MutatorObject, NamingConvention, NormalizedConfig, NormalizedFetchOptions, NormalizedFormDataType, NormalizedHonoOptions, NormalizedHookCommand, NormalizedHookOptions, NormalizedInputOptions, NormalizedJsDocOptions, NormalizedMutator, NormalizedOperationOptions, NormalizedOptions, NormalizedOutputOptions, NormalizedOverrideOutput, NormalizedParamsSerializerOptions, NormalizedQueryOptions, NormalizedSchemaOptions, NormalizedZodOptions, OpenApiComponentsObject, OpenApiDocument, OpenApiEncodingObject, OpenApiExampleObject, OpenApiInfoObject, OpenApiMediaTypeObject, OpenApiOperationObject, OpenApiParameterObject, OpenApiPathItemObject, OpenApiPathsObject, OpenApiReferenceObject, OpenApiRequestBodyObject, OpenApiResponseObject, OpenApiResponsesObject, OpenApiSchemaObject, OpenApiSchemaObjectType, OpenApiSchemasObject, OpenApiServerObject, OperationOptions, Options, OptionsExport, OptionsFn, OutputClient, OutputClientFunc, OutputDocsOptions, OutputHttpClient, OutputMockType, OutputMode, OutputOptions, OverrideInput, OverrideMockOptions, OverrideOutput, OverrideOutputContentType, PackageJson, ParamsSerializerOptions, PropertySortOrder, QueryOptions, RefComponentSuffix, RefInfo, ResReqTypesValue, ResolverValue, ResponseTypeCategory, ScalarValue, SchemaGenerationType, SchemaOptions, SchemaType, SwrOptions, TEMPLATE_TAG_REGEX, TsConfigTarget, Tsconfig, URL_REGEX, VERBS_WITH_BODY, Verbs, WriteModeProps, WriteSpecBuilder, ZodCoerceType, ZodDateTimeOptions, ZodOptions, ZodTimeOptions, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, dynamicImport, escape, generalJSTypes, generalJSTypesWithArray, generateAxiosOptions, generateBodyMutatorConfig, generateBodyOptions, generateComponentDefinition, generateDependencyImports, generateFormDataAndUrlEncodedFunction, generateImports, generateModelInline, generateModelsInline, generateMutator, generateMutatorConfig, generateMutatorImports, generateMutatorRequestOptions, generateOptions, generateParameterDefinition, generateQueryParamsAxiosConfig, generateSchemasDefinition, generateTarget, generateTargetForTags, generateVerbImports, generateVerbOptions, generateVerbsOptions, getArray, getBody, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getTypedResponse, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNull, isNumber, isNumeric, isObject, isReference, isSchema, isString, isSyntheticDefaultImportsAllow, isUndefined, isUrl, isVerb, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resolveDiscriminators, resolveExampleRefs, resolveObject, resolveRef, resolveValue, sanitize, snake, sortByPriority, startMessage, stringify, toObjectString, path_d_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
1960
+ export { AngularOptions, BODY_TYPE_NAME, BaseUrlFromConstant, BaseUrlFromSpec, ClientBuilder, ClientDependenciesBuilder, ClientExtraFilesBuilder, ClientFileBuilder, ClientFooterBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, ClientMockBuilder, ClientMockGeneratorBuilder, ClientMockGeneratorImplementation, ClientTitleBuilder, Config, ConfigExternal, ConfigFn, ContextSpec, DeepNonNullable, EnumGeneration, ErrorWithTag, FetchOptions, FormDataArrayHandling, FormDataType, GenerateMockImports, GenerateVerbOptionsParams, GenerateVerbsOptionsParams, GeneratorApiBuilder, GeneratorApiOperations, GeneratorApiResponse, GeneratorClient, GeneratorClientExtra, GeneratorClientFooter, GeneratorClientHeader, GeneratorClientImports, GeneratorClientTitle, GeneratorClients, GeneratorDependency, GeneratorImport, GeneratorMutator, GeneratorMutatorParsingInfo, GeneratorOperation, GeneratorOperations, GeneratorOptions, GeneratorSchema, GeneratorTarget, GeneratorTargetFull, GeneratorVerbOptions, GeneratorVerbsOptions, GetterBody, GetterParam, GetterParameters, GetterParams, GetterProp, GetterPropType, GetterProps, GetterQueryParam, GetterResponse, GlobalMockOptions, GlobalOptions, HonoOptions, Hook, HookCommand, HookFunction, HookOption, HooksOptions, ImportOpenApi, InputFiltersOptions, InputOptions, InputTransformerFn, InvalidateTarget, JsDocOptions, LogLevel, LogLevels, LogOptions, LogType, Logger, LoggerOptions, MockData, MockDataArray, MockDataArrayFn, MockDataObject, MockDataObjectFn, MockOptions, MockProperties, MockPropertiesObject, MockPropertiesObjectFn, MutationInvalidatesConfig, MutationInvalidatesRule, Mutator, MutatorObject, NamingConvention, NormalizedConfig, NormalizedFetchOptions, NormalizedFormDataType, NormalizedHonoOptions, NormalizedHookCommand, NormalizedHookOptions, NormalizedInputOptions, NormalizedJsDocOptions, NormalizedMutator, NormalizedOperationOptions, NormalizedOptions, NormalizedOutputOptions, NormalizedOverrideOutput, NormalizedParamsSerializerOptions, NormalizedQueryOptions, NormalizedSchemaOptions, NormalizedZodOptions, OpenApiComponentsObject, OpenApiDocument, OpenApiEncodingObject, OpenApiExampleObject, OpenApiInfoObject, OpenApiMediaTypeObject, OpenApiOperationObject, OpenApiParameterObject, OpenApiPathItemObject, OpenApiPathsObject, OpenApiReferenceObject, OpenApiRequestBodyObject, OpenApiResponseObject, OpenApiResponsesObject, OpenApiSchemaObject, OpenApiSchemaObjectType, OpenApiSchemasObject, OpenApiServerObject, OperationOptions, Options, OptionsExport, OptionsFn, OutputClient, OutputClientFunc, OutputDocsOptions, OutputHttpClient, OutputMockType, OutputMode, OutputOptions, OverrideInput, OverrideMockOptions, OverrideOutput, OverrideOutputContentType, PackageJson, ParamsSerializerOptions, PropertySortOrder, QueryOptions, RefComponentSuffix, RefInfo, ResReqTypesValue, ResolverValue, ResponseTypeCategory, ScalarValue, SchemaGenerationType, SchemaOptions, SchemaType, SwrOptions, TEMPLATE_TAG_REGEX, TsConfigTarget, Tsconfig, URL_REGEX, VERBS_WITH_BODY, Verbs, WriteModeProps, WriteSpecBuilder, ZodCoerceType, ZodDateTimeOptions, ZodOptions, ZodTimeOptions, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dynamicImport, escape, fixCrossDirectoryImports, fixRegularSchemaImports, generalJSTypes, generalJSTypesWithArray, generateAxiosOptions, generateBodyMutatorConfig, generateBodyOptions, generateComponentDefinition, generateDependencyImports, generateFormDataAndUrlEncodedFunction, generateImports, generateModelInline, generateModelsInline, generateMutator, generateMutatorConfig, generateMutatorImports, generateMutatorRequestOptions, generateOptions, generateParameterDefinition, generateQueryParamsAxiosConfig, generateSchemasDefinition, generateTarget, generateTargetForTags, generateVerbImports, generateVerbOptions, generateVerbsOptions, getArray, getBody, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getTypedResponse, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNull, isNumber, isNumeric, isObject, isReference, isSchema, isString, isSyntheticDefaultImportsAllow, isUndefined, isUrl, isVerb, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resolveDiscriminators, resolveExampleRefs, resolveObject, resolveRef, resolveValue, sanitize, snake, sortByPriority, splitSchemasByType, startMessage, stringify, toObjectString, path_d_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
1925
1961
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -821,10 +821,14 @@ function isSyntheticDefaultImportsAllow(config) {
821
821
  //#endregion
822
822
  //#region src/getters/enum.ts
823
823
  function getEnumNames(schemaObject) {
824
- return schemaObject?.["x-enumNames"] || schemaObject?.["x-enumnames"] || schemaObject?.["x-enum-varnames"];
824
+ const names = schemaObject?.["x-enumNames"] ?? schemaObject?.["x-enumnames"] ?? schemaObject?.["x-enum-varnames"];
825
+ if (!names) return;
826
+ return names.map((name) => jsStringEscape(name));
825
827
  }
826
828
  function getEnumDescriptions(schemaObject) {
827
- return schemaObject?.["x-enumDescriptions"] || schemaObject?.["x-enumdescriptions"] || schemaObject?.["x-enum-descriptions"];
829
+ const descriptions = schemaObject?.["x-enumDescriptions"] ?? schemaObject?.["x-enumdescriptions"] ?? schemaObject?.["x-enum-descriptions"];
830
+ if (!descriptions) return;
831
+ return descriptions.map((description) => jsStringEscape(description));
828
832
  }
829
833
  function getEnum(value, enumName, names, enumGenerationType, descriptions, enumNamingConvention) {
830
834
  if (enumGenerationType === EnumGeneration.CONST) return getTypeConstEnum(value, enumName, names, descriptions, enumNamingConvention);
@@ -1017,7 +1021,7 @@ function resolveValue({ schema, name, context }) {
1017
1021
  parents: [...context.parents ?? [], refName]
1018
1022
  }
1019
1023
  }).hasReadonlyProps;
1020
- const nullable = Array.isArray(schemaObject.type) && schemaObject.type.includes("null") ? " | null" : "";
1024
+ const nullable = Array.isArray(schemaObject.type) && schemaObject.type.includes("null") || schemaObject.nullable === true ? " | null" : "";
1021
1025
  return {
1022
1026
  value: resolvedImport.name + nullable,
1023
1027
  imports: [{
@@ -1046,41 +1050,57 @@ function resolveValue({ schema, name, context }) {
1046
1050
 
1047
1051
  //#endregion
1048
1052
  //#region src/resolvers/object.ts
1053
+ /**
1054
+ * Wraps inline object type in a type alias.
1055
+ * E.g. `{ foo: string }` → value becomes `FooBody`, schema gets `export type FooBody = { foo: string };`
1056
+ */
1057
+ function createTypeAliasIfNeeded({ resolvedValue, propName, context }) {
1058
+ if (!propName) return;
1059
+ if (resolvedValue.isEnum || resolvedValue.type !== "object") return;
1060
+ const aliasPattern = context.output.override.aliasCombinedTypes ? "{|&|\\|" : "{";
1061
+ if (!new RegExp(aliasPattern).test(resolvedValue.value)) return;
1062
+ const { originalSchema } = resolvedValue;
1063
+ const doc = jsDoc(originalSchema);
1064
+ const isConstant = "const" in originalSchema;
1065
+ const constantIsString = "type" in originalSchema && (originalSchema.type === "string" || Array.isArray(originalSchema.type) && originalSchema.type.includes("string"));
1066
+ const model = isConstant ? `${doc}export const ${propName} = ${constantIsString ? `'${originalSchema.const}'` : originalSchema.const} as const;\n` : `${doc}export type ${propName} = ${resolvedValue.value};\n`;
1067
+ return {
1068
+ value: propName,
1069
+ imports: [{
1070
+ name: propName,
1071
+ isConstant
1072
+ }],
1073
+ schemas: [...resolvedValue.schemas, {
1074
+ name: propName,
1075
+ model,
1076
+ imports: resolvedValue.imports,
1077
+ dependencies: resolvedValue.dependencies
1078
+ }],
1079
+ isEnum: false,
1080
+ type: "object",
1081
+ isRef: resolvedValue.isRef,
1082
+ hasReadonlyProps: resolvedValue.hasReadonlyProps,
1083
+ dependencies: resolvedValue.dependencies
1084
+ };
1085
+ }
1049
1086
  function resolveObjectOriginal({ schema, propName, combined = false, context }) {
1050
1087
  const resolvedValue = resolveValue({
1051
1088
  schema,
1052
1089
  name: propName,
1053
1090
  context
1054
1091
  });
1055
- const doc = jsDoc(resolvedValue.originalSchema ?? {});
1056
- if (propName && !resolvedValue.isEnum && resolvedValue?.type === "object" && new RegExp(context.output.override.aliasCombinedTypes ? String.raw`{|&|\|` : "{").test(resolvedValue.value)) {
1057
- let model = "";
1058
- const isConstant = "const" in schema;
1059
- const constantIsString = "type" in schema && (schema.type === "string" || Array.isArray(schema.type) && schema.type.includes("string"));
1060
- model += isConstant ? `${doc}export const ${propName} = ${constantIsString ? `'${schema.const}'` : schema.const} as const;\n` : `${doc}export type ${propName} = ${resolvedValue.value};\n`;
1061
- return {
1062
- value: propName,
1063
- imports: [{
1064
- name: propName,
1065
- isConstant
1066
- }],
1067
- schemas: [...resolvedValue.schemas, {
1068
- name: propName,
1069
- model,
1070
- imports: resolvedValue.imports,
1071
- dependencies: resolvedValue.dependencies
1072
- }],
1073
- isEnum: false,
1074
- type: "object",
1075
- originalSchema: resolvedValue.originalSchema,
1076
- isRef: resolvedValue.isRef,
1077
- hasReadonlyProps: resolvedValue.hasReadonlyProps,
1078
- dependencies: resolvedValue.dependencies
1079
- };
1080
- }
1092
+ const aliased = createTypeAliasIfNeeded({
1093
+ resolvedValue,
1094
+ propName,
1095
+ context
1096
+ });
1097
+ if (aliased) return {
1098
+ ...aliased,
1099
+ originalSchema: resolvedValue.originalSchema
1100
+ };
1081
1101
  if (propName && resolvedValue.isEnum && !combined && !resolvedValue.isRef) {
1082
- const enumGenerationType = context.output.override.enumGenerationType;
1083
- const enumValue = getEnum(resolvedValue.value, propName, getEnumNames(resolvedValue.originalSchema), enumGenerationType, getEnumDescriptions(resolvedValue.originalSchema), context.output.override.namingConvention?.enum);
1102
+ const doc = jsDoc(resolvedValue.originalSchema ?? {});
1103
+ const enumValue = getEnum(resolvedValue.value, propName, getEnumNames(resolvedValue.originalSchema), context.output.override.enumGenerationType, getEnumDescriptions(resolvedValue.originalSchema), context.output.override.namingConvention?.enum);
1084
1104
  return {
1085
1105
  value: propName,
1086
1106
  imports: [{ name: propName }],
@@ -1220,7 +1240,7 @@ function getImportAliasForRefOrValue({ context, imports, resolvedValue }) {
1220
1240
  * @ref https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#data-types
1221
1241
  */
1222
1242
  function getScalar({ item, name, context }) {
1223
- const nullable = isArray(item.type) && item.type.includes("null") ? " | null" : "";
1243
+ const nullable = isArray(item.type) && item.type.includes("null") || item.nullable === true ? " | null" : "";
1224
1244
  const enumItems = item.enum?.filter((enumItem) => enumItem !== null);
1225
1245
  let itemType = item.type;
1226
1246
  if (!itemType && item.items) {
@@ -1846,6 +1866,16 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
1846
1866
  ...x,
1847
1867
  key
1848
1868
  }));
1869
+ const swaggerSchema = "schema" in res ? res.schema : void 0;
1870
+ if (swaggerSchema) return [{
1871
+ ...resolveObject({
1872
+ schema: swaggerSchema,
1873
+ propName: key ? pascal(name) + pascal(key) : void 0,
1874
+ context
1875
+ }),
1876
+ contentType: "application/json",
1877
+ key
1878
+ }];
1849
1879
  return [{
1850
1880
  value: defaultType,
1851
1881
  imports: [],
@@ -1951,13 +1981,21 @@ function resolveFormDataRootObject({ schemaOrRef, propName, context, encoding })
1951
1981
  };
1952
1982
  }
1953
1983
  if (Object.keys(propertyOverrides).length === 0) return;
1954
- return getObject({
1984
+ const result = getObject({
1955
1985
  item: schema,
1956
1986
  name: propName,
1957
1987
  context,
1958
1988
  nullable: "",
1959
1989
  propertyOverrides
1960
1990
  });
1991
+ return createTypeAliasIfNeeded({
1992
+ resolvedValue: {
1993
+ ...result,
1994
+ originalSchema: schema
1995
+ },
1996
+ propName,
1997
+ context
1998
+ }) ?? result;
1961
1999
  }
1962
2000
  function getFormDataAdditionalImports({ schemaObject, context }) {
1963
2001
  const { schema } = resolveRef(schemaObject, context);
@@ -3280,6 +3318,70 @@ function _filteredVerbs(verbs, filters) {
3280
3318
 
3281
3319
  //#endregion
3282
3320
  //#region src/writers/schemas.ts
3321
+ /**
3322
+ * Patterns to detect operation-derived types (params, bodies, responses).
3323
+ * These types are auto-generated from OpenAPI operations, not from component schemas.
3324
+ */
3325
+ const OPERATION_TYPE_PATTERNS = [
3326
+ /Params$/i,
3327
+ /Body$/,
3328
+ /Body(One|Two|Three|Four|Five|Item)$/,
3329
+ /Parameter$/i,
3330
+ /Query$/i,
3331
+ /Header$/i,
3332
+ /Response\d*$/i,
3333
+ /^[1-5]\d{2}$/,
3334
+ /\d{3}(One|Two|Three|Four|Five|Item)$/i,
3335
+ /^(get|post|put|patch|delete|head|options)[A-Z].*\d{3}$/
3336
+ ];
3337
+ /**
3338
+ * Check if a schema name matches operation type patterns.
3339
+ */
3340
+ function isOperationType(schemaName) {
3341
+ return OPERATION_TYPE_PATTERNS.some((pattern) => pattern.test(schemaName));
3342
+ }
3343
+ /**
3344
+ * Split schemas into regular and operation types.
3345
+ */
3346
+ function splitSchemasByType(schemas) {
3347
+ const regularSchemas = [];
3348
+ const operationSchemas = [];
3349
+ for (const schema of schemas) if (isOperationType(schema.name)) operationSchemas.push(schema);
3350
+ else regularSchemas.push(schema);
3351
+ return {
3352
+ regularSchemas,
3353
+ operationSchemas
3354
+ };
3355
+ }
3356
+ /**
3357
+ * Fix cross-directory imports when schemas reference other schemas in a different directory.
3358
+ * Updates import paths to use correct relative paths between directories.
3359
+ */
3360
+ function fixSchemaImports(schemas, targetSchemaNames, fromPath, toPath, namingConvention) {
3361
+ const relativePath = relativeSafe(fromPath, toPath);
3362
+ for (const schema of schemas) schema.imports = schema.imports.map((imp) => {
3363
+ if (targetSchemaNames.has(imp.name)) {
3364
+ const fileName = conventionName(imp.name, namingConvention);
3365
+ return {
3366
+ ...imp,
3367
+ importPath: join(relativePath, fileName)
3368
+ };
3369
+ }
3370
+ return imp;
3371
+ });
3372
+ }
3373
+ /**
3374
+ * Fix imports in operation schemas that reference regular schemas.
3375
+ */
3376
+ function fixCrossDirectoryImports(operationSchemas, regularSchemaNames, schemaPath, operationSchemaPath, namingConvention) {
3377
+ fixSchemaImports(operationSchemas, regularSchemaNames, operationSchemaPath, schemaPath, namingConvention);
3378
+ }
3379
+ /**
3380
+ * Fix imports in regular schemas that reference operation schemas.
3381
+ */
3382
+ function fixRegularSchemaImports(regularSchemas, operationSchemaNames, schemaPath, operationSchemaPath, namingConvention) {
3383
+ fixSchemaImports(regularSchemas, operationSchemaNames, schemaPath, operationSchemaPath, namingConvention);
3384
+ }
3283
3385
  function getSchemaKey(schemaPath, schemaName, namingConvention, fileExtension) {
3284
3386
  return getPath(schemaPath, conventionName(schemaName, namingConvention), fileExtension).toLowerCase().replaceAll("\\", "/");
3285
3387
  }
@@ -3978,5 +4080,5 @@ async function writeTagsMode({ builder, output, projectName, header, needSchema
3978
4080
  }
3979
4081
 
3980
4082
  //#endregion
3981
- export { BODY_TYPE_NAME, EnumGeneration, ErrorWithTag, FormDataArrayHandling, GetterPropType, LogLevels, NamingConvention, OutputClient, OutputHttpClient, OutputMockType, OutputMode, PropertySortOrder, RefComponentSuffix, SchemaType, TEMPLATE_TAG_REGEX, URL_REGEX, VERBS_WITH_BODY, Verbs, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, dynamicImport, escape, generalJSTypes, generalJSTypesWithArray, generateAxiosOptions, generateBodyMutatorConfig, generateBodyOptions, generateComponentDefinition, generateDependencyImports, generateFormDataAndUrlEncodedFunction, generateImports, generateModelInline, generateModelsInline, generateMutator, generateMutatorConfig, generateMutatorImports, generateMutatorRequestOptions, generateOptions, generateParameterDefinition, generateQueryParamsAxiosConfig, generateSchemasDefinition, generateTarget, generateTargetForTags, generateVerbImports, generateVerbOptions, generateVerbsOptions, getArray, getBody, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getTypedResponse, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNull, isNumber, isNumeric, isObject, isReference, isSchema, isString, isSyntheticDefaultImportsAllow, isUndefined, isUrl, isVerb, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resolveDiscriminators, resolveExampleRefs, resolveObject, resolveRef, resolveValue, sanitize, snake, sortByPriority, startMessage, stringify, toObjectString, path_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
4083
+ export { BODY_TYPE_NAME, EnumGeneration, ErrorWithTag, FormDataArrayHandling, GetterPropType, LogLevels, NamingConvention, OutputClient, OutputHttpClient, OutputMockType, OutputMode, PropertySortOrder, RefComponentSuffix, SchemaType, TEMPLATE_TAG_REGEX, URL_REGEX, VERBS_WITH_BODY, Verbs, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dynamicImport, escape, fixCrossDirectoryImports, fixRegularSchemaImports, generalJSTypes, generalJSTypesWithArray, generateAxiosOptions, generateBodyMutatorConfig, generateBodyOptions, generateComponentDefinition, generateDependencyImports, generateFormDataAndUrlEncodedFunction, generateImports, generateModelInline, generateModelsInline, generateMutator, generateMutatorConfig, generateMutatorImports, generateMutatorRequestOptions, generateOptions, generateParameterDefinition, generateQueryParamsAxiosConfig, generateSchemasDefinition, generateTarget, generateTargetForTags, generateVerbImports, generateVerbOptions, generateVerbsOptions, getArray, getBody, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getTypedResponse, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNull, isNumber, isNumeric, isObject, isReference, isSchema, isString, isSyntheticDefaultImportsAllow, isUndefined, isUrl, isVerb, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resolveDiscriminators, resolveExampleRefs, resolveObject, resolveRef, resolveValue, sanitize, snake, sortByPriority, splitSchemasByType, startMessage, stringify, toObjectString, path_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
3982
4084
  //# sourceMappingURL=index.mjs.map