@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 +39 -3
- package/dist/index.mjs +136 -34
- 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;
|
|
@@ -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):
|
|
1343
|
-
declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined):
|
|
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
|
-
|
|
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: [{
|
|
@@ -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
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
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
|
|
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
|
-
|
|
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
|