@orval/core 8.8.1 → 8.9.1
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 +24 -6
- package/dist/index.mjs +112 -42
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -186,6 +186,7 @@ interface NormalizedOperationOptions {
|
|
|
186
186
|
interface NormalizedInputOptions {
|
|
187
187
|
target: string | OpenApiDocument;
|
|
188
188
|
override: OverrideInput;
|
|
189
|
+
unsafeDisableValidation: boolean;
|
|
189
190
|
filters?: InputFiltersOptions;
|
|
190
191
|
parserOptions?: {
|
|
191
192
|
headers?: {
|
|
@@ -284,6 +285,16 @@ interface InputFiltersOptions {
|
|
|
284
285
|
interface InputOptions {
|
|
285
286
|
target: string | string[] | Record<string, unknown> | OpenApiDocument;
|
|
286
287
|
override?: OverrideInput;
|
|
288
|
+
/**
|
|
289
|
+
* Disable OpenAPI spec validation.
|
|
290
|
+
*
|
|
291
|
+
* **Use at your own risk** — code generation with invalid specs is not guaranteed
|
|
292
|
+
* to work and may break in minor updates. Bug reports with validation disabled are
|
|
293
|
+
* not accepted.
|
|
294
|
+
*
|
|
295
|
+
* @default false
|
|
296
|
+
*/
|
|
297
|
+
unsafeDisableValidation?: boolean;
|
|
287
298
|
filters?: InputFiltersOptions;
|
|
288
299
|
parserOptions?: {
|
|
289
300
|
headers?: {
|
|
@@ -948,6 +959,8 @@ interface GeneratorClient {
|
|
|
948
959
|
implementation: string;
|
|
949
960
|
imports: GeneratorImport[];
|
|
950
961
|
mutators?: GeneratorMutator[];
|
|
962
|
+
/** When set, overrides the default verbOption.doc prepended to the implementation */
|
|
963
|
+
docComment?: string;
|
|
951
964
|
}
|
|
952
965
|
interface GeneratorMutatorParsingInfo {
|
|
953
966
|
numberOfParams: number;
|
|
@@ -1297,6 +1310,12 @@ declare function generateVerbImports({
|
|
|
1297
1310
|
params
|
|
1298
1311
|
}: GeneratorVerbOptions): GeneratorImport[];
|
|
1299
1312
|
//#endregion
|
|
1313
|
+
//#region src/generators/input-filters.d.ts
|
|
1314
|
+
declare const COMPONENT_TYPES: readonly ["schemas", "responses", "parameters", "requestBodies"];
|
|
1315
|
+
type ComponentType = (typeof COMPONENT_TYPES)[number];
|
|
1316
|
+
declare function filteredVerbs(verbs: OpenApiPathItemObject, filters: NormalizedInputOptions['filters']): [string, any][];
|
|
1317
|
+
declare const collectReferencedComponents: (spec: OpenApiDocument, tags: (string | RegExp)[], mode: InputFiltersOptions["mode"]) => Record<ComponentType, string[]>;
|
|
1318
|
+
//#endregion
|
|
1300
1319
|
//#region src/generators/models-inline.d.ts
|
|
1301
1320
|
declare function generateModelInline(acc: string, model: string): string;
|
|
1302
1321
|
declare function generateModelsInline(obj: Record<string, GeneratorSchema[]> | GeneratorSchema[]): string;
|
|
@@ -1509,7 +1528,6 @@ declare function generateVerbsOptions({
|
|
|
1509
1528
|
pathRoute,
|
|
1510
1529
|
context
|
|
1511
1530
|
}: GenerateVerbsOptionsParams): Promise<GeneratorVerbsOptions>;
|
|
1512
|
-
declare function _filteredVerbs(verbs: OpenApiPathItemObject, filters: NormalizedInputOptions['filters']): [string, any][];
|
|
1513
1531
|
//#endregion
|
|
1514
1532
|
//#region src/getters/object.d.ts
|
|
1515
1533
|
/**
|
|
@@ -1627,10 +1645,10 @@ declare function combineSchemas({
|
|
|
1627
1645
|
declare function resolveDiscriminators(schemas: OpenApiSchemasObject, context: ContextSpec): OpenApiSchemasObject;
|
|
1628
1646
|
//#endregion
|
|
1629
1647
|
//#region src/getters/enum.d.ts
|
|
1630
|
-
declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
|
|
1631
|
-
declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined): string[] | undefined;
|
|
1632
|
-
declare function getEnum(value: string, enumName: string, names: string[] | undefined, enumGenerationType: EnumGeneration, descriptions?: string[], enumNamingConvention?: NamingConvention): string;
|
|
1633
|
-
declare function getEnumImplementation(value: string, names?: string[], descriptions?: string[], enumNamingConvention?: NamingConvention): string;
|
|
1648
|
+
declare function getEnumNames(schemaObject: OpenApiSchemaObject | undefined): (string | undefined)[] | undefined;
|
|
1649
|
+
declare function getEnumDescriptions(schemaObject: OpenApiSchemaObject | undefined): (string | undefined)[] | undefined;
|
|
1650
|
+
declare function getEnum(value: string, enumName: string, names: (string | undefined)[] | undefined, enumGenerationType: EnumGeneration, descriptions?: (string | undefined)[], enumNamingConvention?: NamingConvention): string;
|
|
1651
|
+
declare function getEnumImplementation(value: string, names?: (string | undefined)[], descriptions?: (string | undefined)[], enumNamingConvention?: NamingConvention): string;
|
|
1634
1652
|
interface CombinedEnumInput {
|
|
1635
1653
|
value: string;
|
|
1636
1654
|
isRef: boolean;
|
|
@@ -2346,5 +2364,5 @@ declare function generateTargetForTags(builder: WriteSpecBuilder, options: Norma
|
|
|
2346
2364
|
declare function getOrvalGeneratedTypes(): string;
|
|
2347
2365
|
declare function getTypedResponse(): string;
|
|
2348
2366
|
//#endregion
|
|
2349
|
-
export { AngularHttpResourceOptions, AngularOptions, BODY_TYPE_NAME, BaseUrlFromConstant, BaseUrlFromSpec, BaseUrlRuntime, ClientBuilder, ClientDependenciesBuilder, ClientExtraFilesBuilder, ClientFileBuilder, ClientFooterBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, ClientMockBuilder, ClientMockGeneratorBuilder, ClientMockGeneratorImplementation, ClientTitleBuilder, Config, ConfigExternal, ConfigFn, ContentTypeFilter, ContextSpec, DeepNonNullable, EnumGeneration, ErrorWithTag, FetchOptions, FormDataArrayHandling, FormDataContext, 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, InvalidateTargetParam, JsDocOptions, LogLevel, LogLevels, LogOptions, LogType, Logger, LoggerOptions, McpOptions, McpServerOptions, MockData, MockDataArray, MockDataArrayFn, MockDataObject, MockDataObjectFn, MockOptions, MockProperties, MockPropertiesObject, MockPropertiesObjectFn, MutationInvalidatesConfig, MutationInvalidatesRule, Mutator, MutatorObject, NamingConvention, NormalizedAngularOptions, NormalizedConfig, NormalizedFetchOptions, NormalizedFormDataType, NormalizedHonoOptions, NormalizedHookCommand, NormalizedHookOptions, NormalizedInputOptions, NormalizedJsDocOptions, NormalizedMcpOptions, NormalizedMcpServerOptions, 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, PreferredContentType, PropertySortOrder, QueryOptions, ReadonlyRequestBodiesMode, RefComponentSuffix, RefInfo, ResReqTypesValue, ResolverValue, ResponseTypeCategory, ScalarValue, SchemaGenerationType, SchemaOptions, SchemaType, SupportedFormatter, SwrOptions, TEMPLATE_TAG_REGEX, TsConfigTarget, Tsconfig, URL_REGEX, VERBS_WITH_BODY, Verbs, WriteModeProps, WriteSpecBuilder, ZodCoerceType, ZodDateTimeOptions, ZodOptions, ZodTimeOptions,
|
|
2367
|
+
export { AngularHttpResourceOptions, AngularOptions, BODY_TYPE_NAME, BaseUrlFromConstant, BaseUrlFromSpec, BaseUrlRuntime, ClientBuilder, ClientDependenciesBuilder, ClientExtraFilesBuilder, ClientFileBuilder, ClientFooterBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, ClientMockBuilder, ClientMockGeneratorBuilder, ClientMockGeneratorImplementation, ClientTitleBuilder, Config, ConfigExternal, ConfigFn, ContentTypeFilter, ContextSpec, DeepNonNullable, EnumGeneration, ErrorWithTag, FetchOptions, FormDataArrayHandling, FormDataContext, 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, InvalidateTargetParam, JsDocOptions, LogLevel, LogLevels, LogOptions, LogType, Logger, LoggerOptions, McpOptions, McpServerOptions, MockData, MockDataArray, MockDataArrayFn, MockDataObject, MockDataObjectFn, MockOptions, MockProperties, MockPropertiesObject, MockPropertiesObjectFn, MutationInvalidatesConfig, MutationInvalidatesRule, Mutator, MutatorObject, NamingConvention, NormalizedAngularOptions, NormalizedConfig, NormalizedFetchOptions, NormalizedFormDataType, NormalizedHonoOptions, NormalizedHookCommand, NormalizedHookOptions, NormalizedInputOptions, NormalizedJsDocOptions, NormalizedMcpOptions, NormalizedMcpServerOptions, 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, PreferredContentType, PropertySortOrder, QueryOptions, ReadonlyRequestBodiesMode, RefComponentSuffix, RefInfo, ResReqTypesValue, ResolverValue, ResponseTypeCategory, ScalarValue, SchemaGenerationType, SchemaOptions, SchemaType, SupportedFormatter, SwrOptions, TEMPLATE_TAG_REGEX, TsConfigTarget, Tsconfig, URL_REGEX, VERBS_WITH_BODY, Verbs, WriteModeProps, WriteSpecBuilder, ZodCoerceType, ZodDateTimeOptions, ZodOptions, ZodTimeOptions, addDependency, asyncReduce, camel, collectReferencedComponents, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dedupeUnionType, dynamicImport, escape, escapeRegExp, filterByContentType, filteredVerbs, 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, getAngularFilteredParamsCallExpression, getAngularFilteredParamsExpression, getAngularFilteredParamsHelperBody, getArray, getBaseUrlRuntimeImports, getBodiesByContentType, getBody, getCombinedEnumValue, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getEnumUnionFromSchema, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getSuccessResponseType, getTypedResponse, getWarningCount, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNullish, isNumber, isNumeric, isObject, isReference, isSchema, isString, isStringLike, isSyntheticDefaultImportsAllow, isUrl, isVerb, isVerbose, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, logVerbose, logWarning, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resetWarnings, resolveDiscriminators, resolveExampleRefs, resolveInstalledVersion, resolveInstalledVersions, resolveObject, resolveRef, resolveValue, sanitize, setVerbose, snake, sortByPriority, splitSchemasByType, startMessage, stringify, toObjectString, path_d_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
|
|
2350
2368
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -279,7 +279,11 @@ function compareVersions(firstVersion, secondVersions, operator = ">=") {
|
|
|
279
279
|
}
|
|
280
280
|
//#endregion
|
|
281
281
|
//#region src/utils/content-type.ts
|
|
282
|
-
const binaryApplicationTypes = new Set([
|
|
282
|
+
const binaryApplicationTypes = new Set([
|
|
283
|
+
"application/octet-stream",
|
|
284
|
+
"application/pdf",
|
|
285
|
+
"application/zip"
|
|
286
|
+
]);
|
|
283
287
|
/**
|
|
284
288
|
* Determine if a content type is binary.
|
|
285
289
|
* Only known binary types return true. Unknown types default to false (non-binary)
|
|
@@ -1034,12 +1038,20 @@ function replaceSpecialCharacters(key) {
|
|
|
1034
1038
|
function getEnumNames(schemaObject) {
|
|
1035
1039
|
const names = schemaObject?.["x-enumNames"] ?? schemaObject?.["x-enumnames"] ?? schemaObject?.["x-enum-varnames"];
|
|
1036
1040
|
if (!names) return;
|
|
1037
|
-
return names.map((name) => jsStringEscape(name));
|
|
1041
|
+
if (Array.isArray(names)) return names.map((name) => jsStringEscape(name));
|
|
1042
|
+
if (typeof names === "object") return (schemaObject?.enum ?? []).map((enumVal) => {
|
|
1043
|
+
const key = String(enumVal);
|
|
1044
|
+
return key in names ? jsStringEscape(names[key]) : void 0;
|
|
1045
|
+
});
|
|
1038
1046
|
}
|
|
1039
1047
|
function getEnumDescriptions(schemaObject) {
|
|
1040
1048
|
const descriptions = schemaObject?.["x-enumDescriptions"] ?? schemaObject?.["x-enumdescriptions"] ?? schemaObject?.["x-enum-descriptions"];
|
|
1041
1049
|
if (!descriptions) return;
|
|
1042
|
-
return descriptions.map((description) => jsStringEscape(description));
|
|
1050
|
+
if (Array.isArray(descriptions)) return descriptions.map((description) => jsStringEscape(description));
|
|
1051
|
+
if (typeof descriptions === "object") return (schemaObject?.enum ?? []).map((enumVal) => {
|
|
1052
|
+
const key = String(enumVal);
|
|
1053
|
+
return key in descriptions ? jsStringEscape(descriptions[key]) : void 0;
|
|
1054
|
+
});
|
|
1043
1055
|
}
|
|
1044
1056
|
function getEnum(value, enumName, names, enumGenerationType, descriptions, enumNamingConvention) {
|
|
1045
1057
|
if (enumGenerationType === EnumGeneration.CONST) return getTypeConstEnum(value, enumName, names, descriptions, enumNamingConvention);
|
|
@@ -1633,7 +1645,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1633
1645
|
name,
|
|
1634
1646
|
schemaObject: mediaType.schema,
|
|
1635
1647
|
context,
|
|
1636
|
-
isRequestBodyOptional:
|
|
1648
|
+
isRequestBodyOptional: bodySchema.required !== true,
|
|
1637
1649
|
isRef: true,
|
|
1638
1650
|
encoding: mediaType.encoding
|
|
1639
1651
|
}) : void 0;
|
|
@@ -1641,7 +1653,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1641
1653
|
name,
|
|
1642
1654
|
schemaObject: mediaType.schema,
|
|
1643
1655
|
context,
|
|
1644
|
-
isRequestBodyOptional:
|
|
1656
|
+
isRequestBodyOptional: bodySchema.required !== true,
|
|
1645
1657
|
isUrlEncoded: true,
|
|
1646
1658
|
isRef: true,
|
|
1647
1659
|
encoding: mediaType.encoding
|
|
@@ -1674,11 +1686,13 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1674
1686
|
if (res.content) return Object.entries(res.content).map(([contentType, mediaType], index, arr) => {
|
|
1675
1687
|
let propName = key ? pascal(name) + pascal(key) : void 0;
|
|
1676
1688
|
if (propName && arr.length > 1) propName = propName + pascal(getNumberWord(index + 1));
|
|
1689
|
+
const isFormData = formDataContentTypes.has(contentType);
|
|
1690
|
+
const isFormUrlEncoded = formUrlEncodedContentTypes.has(contentType);
|
|
1677
1691
|
let effectivePropName = propName;
|
|
1678
1692
|
if (mediaType.schema && isReference(mediaType.schema)) {
|
|
1679
1693
|
const { imports } = resolveSchemaRef(mediaType.schema, context);
|
|
1680
1694
|
if (imports[0]?.name) effectivePropName = imports[0].name;
|
|
1681
|
-
} else if (mediaType.schema) {
|
|
1695
|
+
} else if ((isFormData || isFormUrlEncoded) && mediaType.schema) {
|
|
1682
1696
|
const combinedRefs = getSchemaOneOf(mediaType.schema) ?? getSchemaAnyOf(mediaType.schema);
|
|
1683
1697
|
if (combinedRefs) {
|
|
1684
1698
|
const names = [];
|
|
@@ -1690,7 +1704,6 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1690
1704
|
if (names.length > 0) effectivePropName = names.join("");
|
|
1691
1705
|
}
|
|
1692
1706
|
}
|
|
1693
|
-
const isFormData = formDataContentTypes.has(contentType);
|
|
1694
1707
|
const resolvedValue = getResReqContentTypes({
|
|
1695
1708
|
mediaType,
|
|
1696
1709
|
propName: effectivePropName,
|
|
@@ -1712,7 +1725,6 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1712
1725
|
};
|
|
1713
1726
|
return;
|
|
1714
1727
|
}
|
|
1715
|
-
const isFormUrlEncoded = formUrlEncodedContentTypes.has(contentType);
|
|
1716
1728
|
if (!isFormData && !isFormUrlEncoded || !effectivePropName || !mediaType.schema) return {
|
|
1717
1729
|
...resolvedValue,
|
|
1718
1730
|
imports: resolvedValue.imports,
|
|
@@ -1725,7 +1737,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1725
1737
|
name: effectivePropName,
|
|
1726
1738
|
schemaObject: mediaType.schema,
|
|
1727
1739
|
context,
|
|
1728
|
-
isRequestBodyOptional:
|
|
1740
|
+
isRequestBodyOptional: res.required !== true,
|
|
1729
1741
|
isRef: true,
|
|
1730
1742
|
encoding: mediaType.encoding
|
|
1731
1743
|
}) : void 0;
|
|
@@ -1734,7 +1746,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1734
1746
|
schemaObject: mediaType.schema,
|
|
1735
1747
|
context,
|
|
1736
1748
|
isUrlEncoded: true,
|
|
1737
|
-
isRequestBodyOptional:
|
|
1749
|
+
isRequestBodyOptional: res.required !== true,
|
|
1738
1750
|
isRef: true,
|
|
1739
1751
|
encoding: mediaType.encoding
|
|
1740
1752
|
}) : void 0;
|
|
@@ -1923,7 +1935,7 @@ function resolveSchemaPropertiesToFormData({ schema, variableName, propName, con
|
|
|
1923
1935
|
keyPrefix: `${keyPrefix}${key}.`,
|
|
1924
1936
|
depth: depth + 1,
|
|
1925
1937
|
encoding
|
|
1926
|
-
}) :
|
|
1938
|
+
}) : `${variableName}.append(\`${keyPrefix}${key}\`, JSON.stringify(${nonOptionalValueKey}));\n`;
|
|
1927
1939
|
else if (property.type === "array") {
|
|
1928
1940
|
let valueStr = "value";
|
|
1929
1941
|
let hasNonPrimitiveChild = false;
|
|
@@ -2013,8 +2025,8 @@ function buildBody(filteredBodyTypes, requestBody, operationName, context) {
|
|
|
2013
2025
|
});
|
|
2014
2026
|
if (isReference(requestBody)) {
|
|
2015
2027
|
const { schema: bodySchema } = resolveRef(requestBody, context);
|
|
2016
|
-
|
|
2017
|
-
} else
|
|
2028
|
+
isOptional = bodySchema.required !== true;
|
|
2029
|
+
} else isOptional = requestBody.required !== true;
|
|
2018
2030
|
}
|
|
2019
2031
|
return {
|
|
2020
2032
|
originalSchema: requestBody,
|
|
@@ -2269,6 +2281,8 @@ function getObject({ item, name, context, nullable, formDataContext }) {
|
|
|
2269
2281
|
const keyType = getIndexSignatureKey(schemaItem);
|
|
2270
2282
|
acc.value += `\n [key: ${keyType}]: ${resolvedValue.value};\n}`;
|
|
2271
2283
|
}
|
|
2284
|
+
acc.imports.push(...resolvedValue.imports);
|
|
2285
|
+
acc.schemas.push(...resolvedValue.schemas);
|
|
2272
2286
|
acc.dependencies.push(...resolvedValue.dependencies);
|
|
2273
2287
|
}
|
|
2274
2288
|
else acc.value += "\n}";
|
|
@@ -3270,18 +3284,18 @@ function addDependency({ implementation, exports, dependency, projectName, isAll
|
|
|
3270
3284
|
});
|
|
3271
3285
|
if (types.length > 0) {
|
|
3272
3286
|
let uniqueTypes = types;
|
|
3273
|
-
if (values.length > 0)
|
|
3274
|
-
|
|
3275
|
-
dep += "\n";
|
|
3287
|
+
if (values.length > 0) uniqueTypes = types.filter((t) => !values.some((v) => v.name === t.name && (v.alias ?? "") === (t.alias ?? "")));
|
|
3288
|
+
if (uniqueTypes.length > 0) {
|
|
3289
|
+
if (values.length > 0) dep += "\n";
|
|
3290
|
+
dep += generateDependency({
|
|
3291
|
+
deps: uniqueTypes,
|
|
3292
|
+
isAllowSyntheticDefaultImports,
|
|
3293
|
+
dependency,
|
|
3294
|
+
projectName,
|
|
3295
|
+
key,
|
|
3296
|
+
onlyTypes: true
|
|
3297
|
+
});
|
|
3276
3298
|
}
|
|
3277
|
-
dep += generateDependency({
|
|
3278
|
-
deps: uniqueTypes,
|
|
3279
|
-
isAllowSyntheticDefaultImports,
|
|
3280
|
-
dependency,
|
|
3281
|
-
projectName,
|
|
3282
|
-
key,
|
|
3283
|
-
onlyTypes: true
|
|
3284
|
-
});
|
|
3285
3299
|
}
|
|
3286
3300
|
return dep;
|
|
3287
3301
|
}).join("\n") + "\n";
|
|
@@ -3326,6 +3340,70 @@ function generateVerbImports({ response, body, queryParams, props, headers, para
|
|
|
3326
3340
|
});
|
|
3327
3341
|
}
|
|
3328
3342
|
//#endregion
|
|
3343
|
+
//#region src/generators/input-filters.ts
|
|
3344
|
+
const COMPONENT_TYPES = [
|
|
3345
|
+
"schemas",
|
|
3346
|
+
"responses",
|
|
3347
|
+
"parameters",
|
|
3348
|
+
"requestBodies"
|
|
3349
|
+
];
|
|
3350
|
+
function filteredVerbs(verbs, filters) {
|
|
3351
|
+
if (filters?.tags === void 0) return Object.entries(verbs);
|
|
3352
|
+
const filterTags = filters.tags;
|
|
3353
|
+
const filterMode = filters.mode ?? "include";
|
|
3354
|
+
return Object.entries(verbs).filter(([, operation]) => {
|
|
3355
|
+
const isMatch = (operation.tags ?? []).some((tag) => filterTags.some((filterTag) => filterTag instanceof RegExp ? filterTag.test(tag) : filterTag === tag));
|
|
3356
|
+
return filterMode === "exclude" ? !isMatch : isMatch;
|
|
3357
|
+
});
|
|
3358
|
+
}
|
|
3359
|
+
function findRefs(value) {
|
|
3360
|
+
if (!value || typeof value !== "object") return [];
|
|
3361
|
+
if (Array.isArray(value)) return value.flatMap((item) => findRefs(item));
|
|
3362
|
+
const obj = value;
|
|
3363
|
+
if (typeof obj.$ref === "string") return [obj.$ref];
|
|
3364
|
+
return Object.values(obj).flatMap((val) => findRefs(val));
|
|
3365
|
+
}
|
|
3366
|
+
function parseComponentRef(ref) {
|
|
3367
|
+
const parts = ref.split("/");
|
|
3368
|
+
if (parts[0] !== "#" || parts[1] !== "components" || parts.length < 4) return;
|
|
3369
|
+
const type = parts[2];
|
|
3370
|
+
const name = parts[3];
|
|
3371
|
+
if (!COMPONENT_TYPES.includes(type)) return;
|
|
3372
|
+
return {
|
|
3373
|
+
type,
|
|
3374
|
+
name
|
|
3375
|
+
};
|
|
3376
|
+
}
|
|
3377
|
+
function getComponentNames(refs, spec) {
|
|
3378
|
+
return refs.map((ref) => parseComponentRef(ref)).filter((parsed) => !!parsed && !!spec.components?.[parsed.type]?.[parsed.name]);
|
|
3379
|
+
}
|
|
3380
|
+
function resolveReferencedComponents(refs, spec, resolved) {
|
|
3381
|
+
const newComponents = getComponentNames(refs, spec).filter(({ type, name }) => !resolved[type].includes(name));
|
|
3382
|
+
if (newComponents.length === 0) return resolved;
|
|
3383
|
+
const nextResolved = {
|
|
3384
|
+
schemas: [...resolved.schemas],
|
|
3385
|
+
responses: [...resolved.responses],
|
|
3386
|
+
parameters: [...resolved.parameters],
|
|
3387
|
+
requestBodies: [...resolved.requestBodies]
|
|
3388
|
+
};
|
|
3389
|
+
for (const { type, name } of newComponents) nextResolved[type].push(name);
|
|
3390
|
+
return resolveReferencedComponents(newComponents.flatMap(({ type, name }) => findRefs(spec.components?.[type]?.[name])), spec, nextResolved);
|
|
3391
|
+
}
|
|
3392
|
+
const collectReferencedComponents = (spec, tags, mode) => {
|
|
3393
|
+
const filters = {
|
|
3394
|
+
tags,
|
|
3395
|
+
mode
|
|
3396
|
+
};
|
|
3397
|
+
return resolveReferencedComponents(Object.values(spec.paths ?? {}).filter((pathItem) => !!pathItem).flatMap((pathItem) => {
|
|
3398
|
+
return [...filteredVerbs(pathItem, filters).flatMap(([, operation]) => findRefs(operation)), ...findRefs(pathItem.parameters)];
|
|
3399
|
+
}), spec, {
|
|
3400
|
+
schemas: [],
|
|
3401
|
+
responses: [],
|
|
3402
|
+
parameters: [],
|
|
3403
|
+
requestBodies: []
|
|
3404
|
+
});
|
|
3405
|
+
};
|
|
3406
|
+
//#endregion
|
|
3329
3407
|
//#region src/generators/models-inline.ts
|
|
3330
3408
|
function generateModelInline(acc, model) {
|
|
3331
3409
|
return acc + `${model}\n`;
|
|
@@ -3678,7 +3756,8 @@ function generateQueryParamsAxiosConfig(response, isVue, isAngular, requiredNull
|
|
|
3678
3756
|
function generateMutatorConfig({ route, body, headers, queryParams, response, verb, isFormData, isFormUrlEncoded, hasSignal, hasSignalParam = false, isExactOptionalPropertyTypes, isVue, isAngular }) {
|
|
3679
3757
|
const bodyOptions = getIsBodyVerb(verb) ? generateBodyMutatorConfig(body, isFormData, isFormUrlEncoded) : "";
|
|
3680
3758
|
const queryParamsOptions = generateQueryParamsAxiosConfig(response, isVue ?? false, isAngular ?? false, queryParams?.requiredNullableKeys, queryParams);
|
|
3681
|
-
const
|
|
3759
|
+
const ignoreContentTypes = isAngular ? ["multipart/form-data"] : [];
|
|
3760
|
+
const headerOptions = body.contentType && !ignoreContentTypes.includes(body.contentType) ? `,\n headers: {'Content-Type': '${body.contentType}', ${headers ? "...headers" : ""}}` : headers ? ",\n headers" : "";
|
|
3682
3761
|
const signalVar = hasSignalParam ? "querySignal" : "signal";
|
|
3683
3762
|
const signalProp = hasSignalParam ? `signal: ${signalVar}` : "signal";
|
|
3684
3763
|
return `{url: \`${route}\`, method: '${verb.toUpperCase()}'${headerOptions}${bodyOptions}${queryParamsOptions}${hasSignal ? `, ${isExactOptionalPropertyTypes ? `...(${signalVar} ? { ${signalProp} }: {})` : signalProp}` : ""}\n }`;
|
|
@@ -4086,7 +4165,7 @@ async function generateVerbOptions({ verb, output, operation, route, pathRoute,
|
|
|
4086
4165
|
})];
|
|
4087
4166
|
}
|
|
4088
4167
|
function generateVerbsOptions({ verbs, input, output, route, pathRoute, context }) {
|
|
4089
|
-
return asyncReduce(
|
|
4168
|
+
return asyncReduce(filteredVerbs(verbs, input.filters), async (acc, [verb, operation]) => {
|
|
4090
4169
|
if (isVerb(verb)) {
|
|
4091
4170
|
const verbOptions = await generateVerbOptions({
|
|
4092
4171
|
verb,
|
|
@@ -4102,15 +4181,6 @@ function generateVerbsOptions({ verbs, input, output, route, pathRoute, context
|
|
|
4102
4181
|
return acc;
|
|
4103
4182
|
}, []);
|
|
4104
4183
|
}
|
|
4105
|
-
function _filteredVerbs(verbs, filters) {
|
|
4106
|
-
if (filters?.tags === void 0) return Object.entries(verbs);
|
|
4107
|
-
const filterTags = filters.tags;
|
|
4108
|
-
const filterMode = filters.mode ?? "include";
|
|
4109
|
-
return Object.entries(verbs).filter(([, operation]) => {
|
|
4110
|
-
const isMatch = (operation.tags ?? []).some((tag) => filterTags.some((filterTag) => filterTag instanceof RegExp ? filterTag.test(tag) : filterTag === tag));
|
|
4111
|
-
return filterMode === "exclude" ? !isMatch : isMatch;
|
|
4112
|
-
});
|
|
4113
|
-
}
|
|
4114
4184
|
//#endregion
|
|
4115
4185
|
//#region src/writers/file.ts
|
|
4116
4186
|
const TRAILING_WHITESPACE_RE = /[^\S\r\n]+$/gm;
|
|
@@ -4584,8 +4654,8 @@ async function writeSplitMode({ builder, output, projectName, header, needSchema
|
|
|
4584
4654
|
isAllowSyntheticDefaultImports,
|
|
4585
4655
|
options: isFunction(output.mock) ? void 0 : output.mock
|
|
4586
4656
|
});
|
|
4587
|
-
const schemasPath = output.schemas
|
|
4588
|
-
if (schemasPath
|
|
4657
|
+
const schemasPath = !output.schemas && needSchema ? nodePath.join(dirname, filename + ".schemas" + extension) : void 0;
|
|
4658
|
+
if (schemasPath) await writeGeneratedFile(schemasPath, generateSchemasInline ? header + generateSchemasInline() : header + generateModelsInline(builder.schemas));
|
|
4589
4659
|
if (mutators) implementationData += generateMutatorImports({
|
|
4590
4660
|
mutators,
|
|
4591
4661
|
implementation
|
|
@@ -4793,8 +4863,8 @@ async function writeSplitTagsMode({ builder, output, projectName, header, needSc
|
|
|
4793
4863
|
isAllowSyntheticDefaultImports,
|
|
4794
4864
|
options: isFunction(output.mock) ? void 0 : output.mock
|
|
4795
4865
|
});
|
|
4796
|
-
const schemasPath = output.schemas
|
|
4797
|
-
if (schemasPath
|
|
4866
|
+
const schemasPath = !output.schemas && needSchema ? nodePath.join(dirname, filename + ".schemas" + extension) : void 0;
|
|
4867
|
+
if (schemasPath) await writeGeneratedFile(schemasPath, generateSchemasInline ? header + generateSchemasInline() : header + generateModelsInline(builder.schemas));
|
|
4798
4868
|
if (mutators) implementationData += generateMutatorImports({
|
|
4799
4869
|
mutators,
|
|
4800
4870
|
implementation,
|
|
@@ -4902,8 +4972,8 @@ async function writeTagsMode({ builder, output, projectName, header, needSchema,
|
|
|
4902
4972
|
options: isFunction(output.mock) ? void 0 : output.mock
|
|
4903
4973
|
});
|
|
4904
4974
|
}
|
|
4905
|
-
const schemasPath = output.schemas
|
|
4906
|
-
if (schemasPath
|
|
4975
|
+
const schemasPath = !output.schemas && needSchema ? nodePath.join(dirname, filename + ".schemas" + extension) : void 0;
|
|
4976
|
+
if (schemasPath) await writeGeneratedFile(schemasPath, generateSchemasInline ? header + generateSchemasInline() : header + generateModelsInline(builder.schemas));
|
|
4907
4977
|
if (mutators) data += generateMutatorImports({
|
|
4908
4978
|
mutators,
|
|
4909
4979
|
implementation
|
|
@@ -4936,6 +5006,6 @@ async function writeTagsMode({ builder, output, projectName, header, needSchema,
|
|
|
4936
5006
|
}))).flat();
|
|
4937
5007
|
}
|
|
4938
5008
|
//#endregion
|
|
4939
|
-
export { BODY_TYPE_NAME, EnumGeneration, ErrorWithTag, FormDataArrayHandling, GetterPropType, LogLevels, NamingConvention, OutputClient, OutputHttpClient, OutputMockType, OutputMode, PropertySortOrder, RefComponentSuffix, SchemaType, SupportedFormatter, TEMPLATE_TAG_REGEX, URL_REGEX, VERBS_WITH_BODY, Verbs,
|
|
5009
|
+
export { BODY_TYPE_NAME, EnumGeneration, ErrorWithTag, FormDataArrayHandling, GetterPropType, LogLevels, NamingConvention, OutputClient, OutputHttpClient, OutputMockType, OutputMode, PropertySortOrder, RefComponentSuffix, SchemaType, SupportedFormatter, TEMPLATE_TAG_REGEX, URL_REGEX, VERBS_WITH_BODY, Verbs, addDependency, asyncReduce, camel, collectReferencedComponents, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dedupeUnionType, dynamicImport, escape, escapeRegExp, filterByContentType, filteredVerbs, 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, getAngularFilteredParamsCallExpression, getAngularFilteredParamsExpression, getAngularFilteredParamsHelperBody, getArray, getBaseUrlRuntimeImports, getBodiesByContentType, getBody, getCombinedEnumValue, getDefaultContentType, getEnum, getEnumDescriptions, getEnumImplementation, getEnumNames, getEnumUnionFromSchema, getExtension, getFileInfo, getFormDataFieldFileType, getFullRoute, getIsBodyVerb, getKey, getMockFileExtensionByTypeName, getNumberWord, getObject, getOperationId, getOrvalGeneratedTypes, getParameters, getParams, getParamsInPath, getPropertySafe, getProps, getQueryParams, getRefInfo, getResReqTypes, getResponse, getResponseTypeCategory, getRoute, getRouteAsArray, getScalar, getSuccessResponseType, getTypedResponse, getWarningCount, isBinaryContentType, isBoolean, isDirectory, isFunction, isModule, isNullish, isNumber, isNumeric, isObject, isReference, isSchema, isString, isStringLike, isSyntheticDefaultImportsAllow, isUrl, isVerb, isVerbose, jsDoc, jsStringEscape, kebab, keyValuePairsToJsDoc, log, logError, logVerbose, logWarning, mergeDeep, mismatchArgsMessage, pascal, removeFilesAndEmptyFolders, resetWarnings, resolveDiscriminators, resolveExampleRefs, resolveInstalledVersion, resolveInstalledVersions, resolveObject, resolveRef, resolveValue, sanitize, setVerbose, snake, sortByPriority, splitSchemasByType, startMessage, stringify, toObjectString, path_exports as upath, upper, writeModelInline, writeModelsInline, writeSchema, writeSchemas, writeSingleMode, writeSplitMode, writeSplitTagsMode, writeTagsMode };
|
|
4940
5010
|
|
|
4941
5011
|
//# sourceMappingURL=index.mjs.map
|