@orval/core 8.0.1 → 8.0.3
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 +31 -3
- package/dist/index.mjs +111 -19
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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;
|
|
@@ -1153,6 +1160,7 @@ interface GenerateAxiosOptions {
|
|
|
1153
1160
|
headers?: GeneratorSchema;
|
|
1154
1161
|
requestOptions?: object | boolean;
|
|
1155
1162
|
hasSignal: boolean;
|
|
1163
|
+
hasSignalParam?: boolean;
|
|
1156
1164
|
isVue: boolean;
|
|
1157
1165
|
isAngular: boolean;
|
|
1158
1166
|
paramsSerializer?: GeneratorMutator;
|
|
@@ -1165,6 +1173,7 @@ declare function generateAxiosOptions({
|
|
|
1165
1173
|
headers,
|
|
1166
1174
|
requestOptions,
|
|
1167
1175
|
hasSignal,
|
|
1176
|
+
hasSignalParam,
|
|
1168
1177
|
isVue,
|
|
1169
1178
|
isAngular,
|
|
1170
1179
|
paramsSerializer,
|
|
@@ -1183,6 +1192,7 @@ interface GenerateOptionsOptions {
|
|
|
1183
1192
|
isAngular?: boolean;
|
|
1184
1193
|
isExactOptionalPropertyTypes: boolean;
|
|
1185
1194
|
hasSignal: boolean;
|
|
1195
|
+
hasSignalParam?: boolean;
|
|
1186
1196
|
isVue?: boolean;
|
|
1187
1197
|
paramsSerializer?: GeneratorMutator;
|
|
1188
1198
|
paramsSerializerOptions?: ParamsSerializerOptions;
|
|
@@ -1200,6 +1210,7 @@ declare function generateOptions({
|
|
|
1200
1210
|
isAngular,
|
|
1201
1211
|
isExactOptionalPropertyTypes,
|
|
1202
1212
|
hasSignal,
|
|
1213
|
+
hasSignalParam,
|
|
1203
1214
|
isVue,
|
|
1204
1215
|
paramsSerializer,
|
|
1205
1216
|
paramsSerializerOptions
|
|
@@ -1216,6 +1227,7 @@ interface GenerateMutatorConfigOptions {
|
|
|
1216
1227
|
isFormData: boolean;
|
|
1217
1228
|
isFormUrlEncoded: boolean;
|
|
1218
1229
|
hasSignal: boolean;
|
|
1230
|
+
hasSignalParam?: boolean;
|
|
1219
1231
|
isExactOptionalPropertyTypes: boolean;
|
|
1220
1232
|
isVue?: boolean;
|
|
1221
1233
|
}
|
|
@@ -1229,6 +1241,7 @@ declare function generateMutatorConfig({
|
|
|
1229
1241
|
isFormData,
|
|
1230
1242
|
isFormUrlEncoded,
|
|
1231
1243
|
hasSignal,
|
|
1244
|
+
hasSignalParam,
|
|
1232
1245
|
isExactOptionalPropertyTypes,
|
|
1233
1246
|
isVue
|
|
1234
1247
|
}: GenerateMutatorConfigOptions): string;
|
|
@@ -1339,8 +1352,8 @@ declare function combineSchemas({
|
|
|
1339
1352
|
declare function resolveDiscriminators(schemas: OpenApiSchemasObject, context: ContextSpec): OpenApiSchemasObject;
|
|
1340
1353
|
//#endregion
|
|
1341
1354
|
//#region src/getters/enum.d.ts
|
|
1342
|
-
declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined):
|
|
1343
|
-
declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined):
|
|
1355
|
+
declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
|
|
1356
|
+
declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
|
|
1344
1357
|
declare function getEnum(value: string, enumName: string, names: string[] | undefined, enumGenerationType: EnumGeneration, descriptions?: string[], enumNamingConvention?: NamingConvention): string;
|
|
1345
1358
|
declare function getEnumImplementation(value: string, names?: string[], descriptions?: string[], enumNamingConvention?: NamingConvention): string;
|
|
1346
1359
|
//#endregion
|
|
@@ -1852,6 +1865,21 @@ declare function jsStringEscape(input: string): string;
|
|
|
1852
1865
|
declare function isSyntheticDefaultImportsAllow(config?: Tsconfig): boolean;
|
|
1853
1866
|
//#endregion
|
|
1854
1867
|
//#region src/writers/schemas.d.ts
|
|
1868
|
+
/**
|
|
1869
|
+
* Split schemas into regular and operation types.
|
|
1870
|
+
*/
|
|
1871
|
+
declare function splitSchemasByType(schemas: GeneratorSchema[]): {
|
|
1872
|
+
regularSchemas: GeneratorSchema[];
|
|
1873
|
+
operationSchemas: GeneratorSchema[];
|
|
1874
|
+
};
|
|
1875
|
+
/**
|
|
1876
|
+
* Fix imports in operation schemas that reference regular schemas.
|
|
1877
|
+
*/
|
|
1878
|
+
declare function fixCrossDirectoryImports(operationSchemas: GeneratorSchema[], regularSchemaNames: Set<string>, schemaPath: string, operationSchemaPath: string, namingConvention: NamingConvention): void;
|
|
1879
|
+
/**
|
|
1880
|
+
* Fix imports in regular schemas that reference operation schemas.
|
|
1881
|
+
*/
|
|
1882
|
+
declare function fixRegularSchemaImports(regularSchemas: GeneratorSchema[], operationSchemaNames: Set<string>, schemaPath: string, operationSchemaPath: string, namingConvention: NamingConvention): void;
|
|
1855
1883
|
declare function writeModelInline(acc: string, model: string): string;
|
|
1856
1884
|
declare function writeModelsInline(array: GeneratorSchema[]): string;
|
|
1857
1885
|
interface WriteSchemaOptions {
|
|
@@ -1935,5 +1963,5 @@ declare function generateTargetForTags(builder: WriteSpecBuilder, options: Norma
|
|
|
1935
1963
|
declare function getOrvalGeneratedTypes(): string;
|
|
1936
1964
|
declare function getTypedResponse(): string;
|
|
1937
1965
|
//#endregion
|
|
1938
|
-
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, 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 };
|
|
1966
|
+
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 };
|
|
1939
1967
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -234,7 +234,7 @@ function joinSafe(...values) {
|
|
|
234
234
|
* @param property
|
|
235
235
|
*/
|
|
236
236
|
function isReference(obj) {
|
|
237
|
-
return Object.hasOwn(obj, "$ref");
|
|
237
|
+
return !isNull(obj) && Object.hasOwn(obj, "$ref");
|
|
238
238
|
}
|
|
239
239
|
function isDirectory(path$2) {
|
|
240
240
|
return !extname(path$2);
|
|
@@ -821,10 +821,14 @@ function isSyntheticDefaultImportsAllow(config) {
|
|
|
821
821
|
//#endregion
|
|
822
822
|
//#region src/getters/enum.ts
|
|
823
823
|
function getEnumNames(schemaObject) {
|
|
824
|
-
|
|
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
|
-
|
|
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: [{
|
|
@@ -1236,7 +1240,7 @@ function getImportAliasForRefOrValue({ context, imports, resolvedValue }) {
|
|
|
1236
1240
|
* @ref https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#data-types
|
|
1237
1241
|
*/
|
|
1238
1242
|
function getScalar({ item, name, context }) {
|
|
1239
|
-
const nullable = isArray(item.type) && item.type.includes("null") ? " | null" : "";
|
|
1243
|
+
const nullable = isArray(item.type) && item.type.includes("null") || item.nullable === true ? " | null" : "";
|
|
1240
1244
|
const enumItems = item.enum?.filter((enumItem) => enumItem !== null);
|
|
1241
1245
|
let itemType = item.type;
|
|
1242
1246
|
if (!itemType && item.items) {
|
|
@@ -1379,12 +1383,13 @@ function getScalar({ item, name, context }) {
|
|
|
1379
1383
|
function combineValues({ resolvedData, resolvedValue, separator: separator$1, context }) {
|
|
1380
1384
|
if (resolvedData.isEnum.every(Boolean)) return `${resolvedData.values.join(` | `)}${resolvedValue ? ` | ${resolvedValue.value}` : ""}`;
|
|
1381
1385
|
if (separator$1 === "allOf") {
|
|
1382
|
-
let resolvedDataValue = resolvedData.values.join(` & `);
|
|
1386
|
+
let resolvedDataValue = resolvedData.values.map((v) => v.includes(" | ") ? `(${v})` : v).join(` & `);
|
|
1383
1387
|
if (resolvedData.originalSchema.length > 0 && resolvedValue) {
|
|
1384
1388
|
const discriminatedPropertySchemas = resolvedData.originalSchema.filter((s) => s?.discriminator && resolvedValue.value.includes(` ${s.discriminator.propertyName}:`));
|
|
1385
1389
|
if (discriminatedPropertySchemas.length > 0) resolvedDataValue = `Omit<${resolvedDataValue}, '${discriminatedPropertySchemas.map((s) => s.discriminator?.propertyName).join("' | '")}'>`;
|
|
1386
1390
|
}
|
|
1387
|
-
const
|
|
1391
|
+
const resolvedValueStr = resolvedValue?.value.includes(" | ") ? `(${resolvedValue.value})` : resolvedValue?.value;
|
|
1392
|
+
const joined = `${resolvedDataValue}${resolvedValue ? ` & ${resolvedValueStr}` : ""}`;
|
|
1388
1393
|
const overrideRequiredProperties = resolvedData.requiredProperties.filter((prop$1) => !resolvedData.originalSchema.some((schema) => schema?.properties?.[prop$1] && schema.required?.includes(prop$1)));
|
|
1389
1394
|
if (overrideRequiredProperties.length > 0) return `${joined} & Required<Pick<${joined}, '${overrideRequiredProperties.join("' | '")}'>>`;
|
|
1390
1395
|
return joined;
|
|
@@ -1484,6 +1489,16 @@ function combineSchemas({ name, schema, separator: separator$1, context, nullabl
|
|
|
1484
1489
|
name,
|
|
1485
1490
|
context
|
|
1486
1491
|
});
|
|
1492
|
+
else if (separator$1 === "allOf" && (schema.oneOf || schema.anyOf)) {
|
|
1493
|
+
const siblingCombiner = schema.oneOf ? "oneOf" : "anyOf";
|
|
1494
|
+
resolvedValue = combineSchemas({
|
|
1495
|
+
schema: { [siblingCombiner]: schema[siblingCombiner] },
|
|
1496
|
+
name,
|
|
1497
|
+
separator: siblingCombiner,
|
|
1498
|
+
context,
|
|
1499
|
+
nullable: ""
|
|
1500
|
+
});
|
|
1501
|
+
}
|
|
1487
1502
|
return {
|
|
1488
1503
|
value: combineValues({
|
|
1489
1504
|
resolvedData,
|
|
@@ -1800,10 +1815,15 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1800
1815
|
if (res.content) return Object.entries(res.content).map(([contentType, mediaType], index, arr) => {
|
|
1801
1816
|
let propName = key ? pascal(name) + pascal(key) : void 0;
|
|
1802
1817
|
if (propName && arr.length > 1) propName = propName + pascal(getNumberWord(index + 1));
|
|
1818
|
+
let effectivePropName = propName;
|
|
1819
|
+
if (mediaType.schema && isReference(mediaType.schema)) {
|
|
1820
|
+
const { imports } = resolveRef(mediaType.schema, context);
|
|
1821
|
+
if (imports[0]?.name) effectivePropName = imports[0].name;
|
|
1822
|
+
}
|
|
1803
1823
|
const isFormData = formDataContentTypes.has(contentType);
|
|
1804
1824
|
const resolvedValue = getResReqContentTypes({
|
|
1805
1825
|
mediaType,
|
|
1806
|
-
propName,
|
|
1826
|
+
propName: effectivePropName,
|
|
1807
1827
|
context,
|
|
1808
1828
|
isFormData,
|
|
1809
1829
|
contentType
|
|
@@ -1823,7 +1843,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1823
1843
|
return;
|
|
1824
1844
|
}
|
|
1825
1845
|
const isFormUrlEncoded = formUrlEncodedContentTypes.has(contentType);
|
|
1826
|
-
if (!isFormData && !isFormUrlEncoded || !
|
|
1846
|
+
if (!isFormData && !isFormUrlEncoded || !effectivePropName) return {
|
|
1827
1847
|
...resolvedValue,
|
|
1828
1848
|
imports: resolvedValue.imports,
|
|
1829
1849
|
contentType,
|
|
@@ -1831,18 +1851,20 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1831
1851
|
examples: resolveExampleRefs(mediaType.examples, context)
|
|
1832
1852
|
};
|
|
1833
1853
|
const formData = isFormData ? getSchemaFormDataAndUrlEncoded({
|
|
1834
|
-
name:
|
|
1854
|
+
name: effectivePropName,
|
|
1835
1855
|
schemaObject: mediaType.schema,
|
|
1836
1856
|
context,
|
|
1837
1857
|
isRequestBodyOptional: "required" in res && res.required === false,
|
|
1858
|
+
isRef: true,
|
|
1838
1859
|
encoding: mediaType.encoding
|
|
1839
1860
|
}) : void 0;
|
|
1840
1861
|
const formUrlEncoded = isFormUrlEncoded ? getSchemaFormDataAndUrlEncoded({
|
|
1841
|
-
name:
|
|
1862
|
+
name: effectivePropName,
|
|
1842
1863
|
schemaObject: mediaType.schema,
|
|
1843
1864
|
context,
|
|
1844
1865
|
isUrlEncoded: true,
|
|
1845
1866
|
isRequestBodyOptional: "required" in res && res.required === false,
|
|
1867
|
+
isRef: true,
|
|
1846
1868
|
encoding: mediaType.encoding
|
|
1847
1869
|
}) : void 0;
|
|
1848
1870
|
const additionalImports = getFormDataAdditionalImports({
|
|
@@ -2871,18 +2893,20 @@ function generateBodyOptions(body, isFormData, isFormUrlEncoded) {
|
|
|
2871
2893
|
if (body.implementation) return `\n ${body.implementation},`;
|
|
2872
2894
|
return "";
|
|
2873
2895
|
}
|
|
2874
|
-
function generateAxiosOptions({ response, isExactOptionalPropertyTypes, queryParams, headers, requestOptions, hasSignal, isVue, isAngular, paramsSerializer, paramsSerializerOptions }) {
|
|
2896
|
+
function generateAxiosOptions({ response, isExactOptionalPropertyTypes, queryParams, headers, requestOptions, hasSignal, hasSignalParam = false, isVue, isAngular, paramsSerializer, paramsSerializerOptions }) {
|
|
2875
2897
|
const isRequestOptions = requestOptions !== false;
|
|
2898
|
+
const signalVar = hasSignalParam ? "querySignal" : "signal";
|
|
2899
|
+
const signalProp = hasSignalParam ? `signal: ${signalVar}` : "signal";
|
|
2876
2900
|
if (!queryParams && !headers && !response.isBlob && response.definition.success !== "string") {
|
|
2877
2901
|
if (isRequestOptions) return "options";
|
|
2878
|
-
if (hasSignal) return isExactOptionalPropertyTypes ?
|
|
2902
|
+
if (hasSignal) return isExactOptionalPropertyTypes ? `...(${signalVar} ? { ${signalProp} } : {})` : signalProp;
|
|
2879
2903
|
return "";
|
|
2880
2904
|
}
|
|
2881
2905
|
let value = "";
|
|
2882
2906
|
if (!isRequestOptions) {
|
|
2883
2907
|
if (queryParams) value += "\n params,";
|
|
2884
2908
|
if (headers) value += "\n headers,";
|
|
2885
|
-
if (hasSignal) value += isExactOptionalPropertyTypes ?
|
|
2909
|
+
if (hasSignal) value += isExactOptionalPropertyTypes ? `\n ...(${signalVar} ? { ${signalProp} } : {}),` : `\n ${signalProp},`;
|
|
2886
2910
|
}
|
|
2887
2911
|
if (!isObject(requestOptions) || !requestOptions.hasOwnProperty("responseType")) {
|
|
2888
2912
|
if (response.isBlob) value += `\n responseType: 'blob',`;
|
|
@@ -2899,7 +2923,7 @@ function generateAxiosOptions({ response, isExactOptionalPropertyTypes, queryPar
|
|
|
2899
2923
|
if (!isAngular && queryParams && (paramsSerializer || paramsSerializerOptions?.qs)) value += paramsSerializer ? `\n paramsSerializer: ${paramsSerializer.name},` : `\n paramsSerializer: (params) => qs.stringify(params, ${JSON.stringify(paramsSerializerOptions.qs)}),`;
|
|
2900
2924
|
return value;
|
|
2901
2925
|
}
|
|
2902
|
-
function generateOptions({ route, body, headers, queryParams, response, verb, requestOptions, isFormData, isFormUrlEncoded, isAngular, isExactOptionalPropertyTypes, hasSignal, isVue, paramsSerializer, paramsSerializerOptions }) {
|
|
2926
|
+
function generateOptions({ route, body, headers, queryParams, response, verb, requestOptions, isFormData, isFormUrlEncoded, isAngular, isExactOptionalPropertyTypes, hasSignal, hasSignalParam, isVue, paramsSerializer, paramsSerializerOptions }) {
|
|
2903
2927
|
const bodyOptions = getIsBodyVerb(verb) ? generateBodyOptions(body, isFormData, isFormUrlEncoded) : "";
|
|
2904
2928
|
const axiosOptions = generateAxiosOptions({
|
|
2905
2929
|
response,
|
|
@@ -2908,6 +2932,7 @@ function generateOptions({ route, body, headers, queryParams, response, verb, re
|
|
|
2908
2932
|
requestOptions,
|
|
2909
2933
|
isExactOptionalPropertyTypes,
|
|
2910
2934
|
hasSignal,
|
|
2935
|
+
hasSignalParam,
|
|
2911
2936
|
isVue: isVue ?? false,
|
|
2912
2937
|
isAngular: isAngular ?? false,
|
|
2913
2938
|
paramsSerializer,
|
|
@@ -2933,11 +2958,13 @@ function generateQueryParamsAxiosConfig(response, isVue, queryParams) {
|
|
|
2933
2958
|
if (response.isBlob) value += `,\n responseType: 'blob'`;
|
|
2934
2959
|
return value;
|
|
2935
2960
|
}
|
|
2936
|
-
function generateMutatorConfig({ route, body, headers, queryParams, response, verb, isFormData, isFormUrlEncoded, hasSignal, isExactOptionalPropertyTypes, isVue }) {
|
|
2961
|
+
function generateMutatorConfig({ route, body, headers, queryParams, response, verb, isFormData, isFormUrlEncoded, hasSignal, hasSignalParam = false, isExactOptionalPropertyTypes, isVue }) {
|
|
2937
2962
|
const bodyOptions = getIsBodyVerb(verb) ? generateBodyMutatorConfig(body, isFormData, isFormUrlEncoded) : "";
|
|
2938
2963
|
const queryParamsOptions = generateQueryParamsAxiosConfig(response, isVue ?? false, queryParams);
|
|
2939
2964
|
const headerOptions = body.contentType ? `,\n headers: {'Content-Type': '${body.contentType}', ${headers ? "...headers" : ""}}` : headers ? ",\n headers" : "";
|
|
2940
|
-
|
|
2965
|
+
const signalVar = hasSignalParam ? "querySignal" : "signal";
|
|
2966
|
+
const signalProp = hasSignalParam ? `signal: ${signalVar}` : "signal";
|
|
2967
|
+
return `{url: \`${route}\`, method: '${verb.toUpperCase()}'${headerOptions}${bodyOptions}${queryParamsOptions}${hasSignal ? `, ${isExactOptionalPropertyTypes ? `...(${signalVar} ? { ${signalProp} }: {})` : signalProp}` : ""}\n }`;
|
|
2941
2968
|
}
|
|
2942
2969
|
function generateMutatorRequestOptions(requestOptions, hasSecondArgument) {
|
|
2943
2970
|
if (!hasSecondArgument) return isObject(requestOptions) ? `{${stringify(requestOptions)?.slice(1, -1)}}` : "";
|
|
@@ -3314,6 +3341,70 @@ function _filteredVerbs(verbs, filters) {
|
|
|
3314
3341
|
|
|
3315
3342
|
//#endregion
|
|
3316
3343
|
//#region src/writers/schemas.ts
|
|
3344
|
+
/**
|
|
3345
|
+
* Patterns to detect operation-derived types (params, bodies, responses).
|
|
3346
|
+
* These types are auto-generated from OpenAPI operations, not from component schemas.
|
|
3347
|
+
*/
|
|
3348
|
+
const OPERATION_TYPE_PATTERNS = [
|
|
3349
|
+
/Params$/i,
|
|
3350
|
+
/Body$/,
|
|
3351
|
+
/Body(One|Two|Three|Four|Five|Item)$/,
|
|
3352
|
+
/Parameter$/i,
|
|
3353
|
+
/Query$/i,
|
|
3354
|
+
/Header$/i,
|
|
3355
|
+
/Response\d*$/i,
|
|
3356
|
+
/^[1-5]\d{2}$/,
|
|
3357
|
+
/\d{3}(One|Two|Three|Four|Five|Item)$/i,
|
|
3358
|
+
/^(get|post|put|patch|delete|head|options)[A-Z].*\d{3}$/
|
|
3359
|
+
];
|
|
3360
|
+
/**
|
|
3361
|
+
* Check if a schema name matches operation type patterns.
|
|
3362
|
+
*/
|
|
3363
|
+
function isOperationType(schemaName) {
|
|
3364
|
+
return OPERATION_TYPE_PATTERNS.some((pattern) => pattern.test(schemaName));
|
|
3365
|
+
}
|
|
3366
|
+
/**
|
|
3367
|
+
* Split schemas into regular and operation types.
|
|
3368
|
+
*/
|
|
3369
|
+
function splitSchemasByType(schemas) {
|
|
3370
|
+
const regularSchemas = [];
|
|
3371
|
+
const operationSchemas = [];
|
|
3372
|
+
for (const schema of schemas) if (isOperationType(schema.name)) operationSchemas.push(schema);
|
|
3373
|
+
else regularSchemas.push(schema);
|
|
3374
|
+
return {
|
|
3375
|
+
regularSchemas,
|
|
3376
|
+
operationSchemas
|
|
3377
|
+
};
|
|
3378
|
+
}
|
|
3379
|
+
/**
|
|
3380
|
+
* Fix cross-directory imports when schemas reference other schemas in a different directory.
|
|
3381
|
+
* Updates import paths to use correct relative paths between directories.
|
|
3382
|
+
*/
|
|
3383
|
+
function fixSchemaImports(schemas, targetSchemaNames, fromPath, toPath, namingConvention) {
|
|
3384
|
+
const relativePath = relativeSafe(fromPath, toPath);
|
|
3385
|
+
for (const schema of schemas) schema.imports = schema.imports.map((imp) => {
|
|
3386
|
+
if (targetSchemaNames.has(imp.name)) {
|
|
3387
|
+
const fileName = conventionName(imp.name, namingConvention);
|
|
3388
|
+
return {
|
|
3389
|
+
...imp,
|
|
3390
|
+
importPath: joinSafe(relativePath, fileName)
|
|
3391
|
+
};
|
|
3392
|
+
}
|
|
3393
|
+
return imp;
|
|
3394
|
+
});
|
|
3395
|
+
}
|
|
3396
|
+
/**
|
|
3397
|
+
* Fix imports in operation schemas that reference regular schemas.
|
|
3398
|
+
*/
|
|
3399
|
+
function fixCrossDirectoryImports(operationSchemas, regularSchemaNames, schemaPath, operationSchemaPath, namingConvention) {
|
|
3400
|
+
fixSchemaImports(operationSchemas, regularSchemaNames, operationSchemaPath, schemaPath, namingConvention);
|
|
3401
|
+
}
|
|
3402
|
+
/**
|
|
3403
|
+
* Fix imports in regular schemas that reference operation schemas.
|
|
3404
|
+
*/
|
|
3405
|
+
function fixRegularSchemaImports(regularSchemas, operationSchemaNames, schemaPath, operationSchemaPath, namingConvention) {
|
|
3406
|
+
fixSchemaImports(regularSchemas, operationSchemaNames, schemaPath, operationSchemaPath, namingConvention);
|
|
3407
|
+
}
|
|
3317
3408
|
function getSchemaKey(schemaPath, schemaName, namingConvention, fileExtension) {
|
|
3318
3409
|
return getPath(schemaPath, conventionName(schemaName, namingConvention), fileExtension).toLowerCase().replaceAll("\\", "/");
|
|
3319
3410
|
}
|
|
@@ -3442,12 +3533,13 @@ function generateImportsForBuilder(output, imports, relativeSchemasPath) {
|
|
|
3442
3533
|
if (!output.indexFiles) return uniqueBy(imports, (x) => x.name).map((i) => {
|
|
3443
3534
|
const name = conventionName(i.schemaName || i.name, output.namingConvention);
|
|
3444
3535
|
const suffix = isZodSchemaOutput ? ".zod" : "";
|
|
3536
|
+
const importExtension = output.fileExtension?.replace(/\.ts$/, "") || "";
|
|
3445
3537
|
return {
|
|
3446
3538
|
exports: isZodSchemaOutput ? [{
|
|
3447
3539
|
...i,
|
|
3448
3540
|
values: true
|
|
3449
3541
|
}] : [i],
|
|
3450
|
-
dependency: joinSafe(relativeSchemasPath, `${name}${suffix}`)
|
|
3542
|
+
dependency: joinSafe(relativeSchemasPath, `${name}${suffix}${importExtension}`)
|
|
3451
3543
|
};
|
|
3452
3544
|
});
|
|
3453
3545
|
else if (isZodSchemaOutput) return [{
|
|
@@ -4012,5 +4104,5 @@ async function writeTagsMode({ builder, output, projectName, header, needSchema
|
|
|
4012
4104
|
}
|
|
4013
4105
|
|
|
4014
4106
|
//#endregion
|
|
4015
|
-
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, 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 };
|
|
4107
|
+
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 };
|
|
4016
4108
|
//# sourceMappingURL=index.mjs.map
|