@orval/core 8.8.1 → 8.9.0
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 +18 -2
- package/dist/index.mjs +83 -23
- 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?: {
|
|
@@ -1297,6 +1308,12 @@ declare function generateVerbImports({
|
|
|
1297
1308
|
params
|
|
1298
1309
|
}: GeneratorVerbOptions): GeneratorImport[];
|
|
1299
1310
|
//#endregion
|
|
1311
|
+
//#region src/generators/input-filters.d.ts
|
|
1312
|
+
declare const COMPONENT_TYPES: readonly ["schemas", "responses", "parameters", "requestBodies"];
|
|
1313
|
+
type ComponentType = (typeof COMPONENT_TYPES)[number];
|
|
1314
|
+
declare function filteredVerbs(verbs: OpenApiPathItemObject, filters: NormalizedInputOptions['filters']): [string, any][];
|
|
1315
|
+
declare const collectReferencedComponents: (spec: OpenApiDocument, tags: (string | RegExp)[], mode: InputFiltersOptions["mode"]) => Record<ComponentType, string[]>;
|
|
1316
|
+
//#endregion
|
|
1300
1317
|
//#region src/generators/models-inline.d.ts
|
|
1301
1318
|
declare function generateModelInline(acc: string, model: string): string;
|
|
1302
1319
|
declare function generateModelsInline(obj: Record<string, GeneratorSchema[]> | GeneratorSchema[]): string;
|
|
@@ -1509,7 +1526,6 @@ declare function generateVerbsOptions({
|
|
|
1509
1526
|
pathRoute,
|
|
1510
1527
|
context
|
|
1511
1528
|
}: GenerateVerbsOptionsParams): Promise<GeneratorVerbsOptions>;
|
|
1512
|
-
declare function _filteredVerbs(verbs: OpenApiPathItemObject, filters: NormalizedInputOptions['filters']): [string, any][];
|
|
1513
1529
|
//#endregion
|
|
1514
1530
|
//#region src/getters/object.d.ts
|
|
1515
1531
|
/**
|
|
@@ -2346,5 +2362,5 @@ declare function generateTargetForTags(builder: WriteSpecBuilder, options: Norma
|
|
|
2346
2362
|
declare function getOrvalGeneratedTypes(): string;
|
|
2347
2363
|
declare function getTypedResponse(): string;
|
|
2348
2364
|
//#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,
|
|
2365
|
+
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
2366
|
//# 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)
|
|
@@ -1633,7 +1637,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1633
1637
|
name,
|
|
1634
1638
|
schemaObject: mediaType.schema,
|
|
1635
1639
|
context,
|
|
1636
|
-
isRequestBodyOptional:
|
|
1640
|
+
isRequestBodyOptional: bodySchema.required !== true,
|
|
1637
1641
|
isRef: true,
|
|
1638
1642
|
encoding: mediaType.encoding
|
|
1639
1643
|
}) : void 0;
|
|
@@ -1641,7 +1645,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1641
1645
|
name,
|
|
1642
1646
|
schemaObject: mediaType.schema,
|
|
1643
1647
|
context,
|
|
1644
|
-
isRequestBodyOptional:
|
|
1648
|
+
isRequestBodyOptional: bodySchema.required !== true,
|
|
1645
1649
|
isUrlEncoded: true,
|
|
1646
1650
|
isRef: true,
|
|
1647
1651
|
encoding: mediaType.encoding
|
|
@@ -1674,11 +1678,13 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1674
1678
|
if (res.content) return Object.entries(res.content).map(([contentType, mediaType], index, arr) => {
|
|
1675
1679
|
let propName = key ? pascal(name) + pascal(key) : void 0;
|
|
1676
1680
|
if (propName && arr.length > 1) propName = propName + pascal(getNumberWord(index + 1));
|
|
1681
|
+
const isFormData = formDataContentTypes.has(contentType);
|
|
1682
|
+
const isFormUrlEncoded = formUrlEncodedContentTypes.has(contentType);
|
|
1677
1683
|
let effectivePropName = propName;
|
|
1678
1684
|
if (mediaType.schema && isReference(mediaType.schema)) {
|
|
1679
1685
|
const { imports } = resolveSchemaRef(mediaType.schema, context);
|
|
1680
1686
|
if (imports[0]?.name) effectivePropName = imports[0].name;
|
|
1681
|
-
} else if (mediaType.schema) {
|
|
1687
|
+
} else if ((isFormData || isFormUrlEncoded) && mediaType.schema) {
|
|
1682
1688
|
const combinedRefs = getSchemaOneOf(mediaType.schema) ?? getSchemaAnyOf(mediaType.schema);
|
|
1683
1689
|
if (combinedRefs) {
|
|
1684
1690
|
const names = [];
|
|
@@ -1690,7 +1696,6 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1690
1696
|
if (names.length > 0) effectivePropName = names.join("");
|
|
1691
1697
|
}
|
|
1692
1698
|
}
|
|
1693
|
-
const isFormData = formDataContentTypes.has(contentType);
|
|
1694
1699
|
const resolvedValue = getResReqContentTypes({
|
|
1695
1700
|
mediaType,
|
|
1696
1701
|
propName: effectivePropName,
|
|
@@ -1712,7 +1717,6 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1712
1717
|
};
|
|
1713
1718
|
return;
|
|
1714
1719
|
}
|
|
1715
|
-
const isFormUrlEncoded = formUrlEncodedContentTypes.has(contentType);
|
|
1716
1720
|
if (!isFormData && !isFormUrlEncoded || !effectivePropName || !mediaType.schema) return {
|
|
1717
1721
|
...resolvedValue,
|
|
1718
1722
|
imports: resolvedValue.imports,
|
|
@@ -1725,7 +1729,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1725
1729
|
name: effectivePropName,
|
|
1726
1730
|
schemaObject: mediaType.schema,
|
|
1727
1731
|
context,
|
|
1728
|
-
isRequestBodyOptional:
|
|
1732
|
+
isRequestBodyOptional: res.required !== true,
|
|
1729
1733
|
isRef: true,
|
|
1730
1734
|
encoding: mediaType.encoding
|
|
1731
1735
|
}) : void 0;
|
|
@@ -1734,7 +1738,7 @@ function getResReqTypes(responsesOrRequests, name, context, defaultType = "unkno
|
|
|
1734
1738
|
schemaObject: mediaType.schema,
|
|
1735
1739
|
context,
|
|
1736
1740
|
isUrlEncoded: true,
|
|
1737
|
-
isRequestBodyOptional:
|
|
1741
|
+
isRequestBodyOptional: res.required !== true,
|
|
1738
1742
|
isRef: true,
|
|
1739
1743
|
encoding: mediaType.encoding
|
|
1740
1744
|
}) : void 0;
|
|
@@ -1923,7 +1927,7 @@ function resolveSchemaPropertiesToFormData({ schema, variableName, propName, con
|
|
|
1923
1927
|
keyPrefix: `${keyPrefix}${key}.`,
|
|
1924
1928
|
depth: depth + 1,
|
|
1925
1929
|
encoding
|
|
1926
|
-
}) :
|
|
1930
|
+
}) : `${variableName}.append(\`${keyPrefix}${key}\`, JSON.stringify(${nonOptionalValueKey}));\n`;
|
|
1927
1931
|
else if (property.type === "array") {
|
|
1928
1932
|
let valueStr = "value";
|
|
1929
1933
|
let hasNonPrimitiveChild = false;
|
|
@@ -2013,8 +2017,8 @@ function buildBody(filteredBodyTypes, requestBody, operationName, context) {
|
|
|
2013
2017
|
});
|
|
2014
2018
|
if (isReference(requestBody)) {
|
|
2015
2019
|
const { schema: bodySchema } = resolveRef(requestBody, context);
|
|
2016
|
-
|
|
2017
|
-
} else
|
|
2020
|
+
isOptional = bodySchema.required !== true;
|
|
2021
|
+
} else isOptional = requestBody.required !== true;
|
|
2018
2022
|
}
|
|
2019
2023
|
return {
|
|
2020
2024
|
originalSchema: requestBody,
|
|
@@ -3326,6 +3330,70 @@ function generateVerbImports({ response, body, queryParams, props, headers, para
|
|
|
3326
3330
|
});
|
|
3327
3331
|
}
|
|
3328
3332
|
//#endregion
|
|
3333
|
+
//#region src/generators/input-filters.ts
|
|
3334
|
+
const COMPONENT_TYPES = [
|
|
3335
|
+
"schemas",
|
|
3336
|
+
"responses",
|
|
3337
|
+
"parameters",
|
|
3338
|
+
"requestBodies"
|
|
3339
|
+
];
|
|
3340
|
+
function filteredVerbs(verbs, filters) {
|
|
3341
|
+
if (filters?.tags === void 0) return Object.entries(verbs);
|
|
3342
|
+
const filterTags = filters.tags;
|
|
3343
|
+
const filterMode = filters.mode ?? "include";
|
|
3344
|
+
return Object.entries(verbs).filter(([, operation]) => {
|
|
3345
|
+
const isMatch = (operation.tags ?? []).some((tag) => filterTags.some((filterTag) => filterTag instanceof RegExp ? filterTag.test(tag) : filterTag === tag));
|
|
3346
|
+
return filterMode === "exclude" ? !isMatch : isMatch;
|
|
3347
|
+
});
|
|
3348
|
+
}
|
|
3349
|
+
function findRefs(value) {
|
|
3350
|
+
if (!value || typeof value !== "object") return [];
|
|
3351
|
+
if (Array.isArray(value)) return value.flatMap((item) => findRefs(item));
|
|
3352
|
+
const obj = value;
|
|
3353
|
+
if (typeof obj.$ref === "string") return [obj.$ref];
|
|
3354
|
+
return Object.values(obj).flatMap((val) => findRefs(val));
|
|
3355
|
+
}
|
|
3356
|
+
function parseComponentRef(ref) {
|
|
3357
|
+
const parts = ref.split("/");
|
|
3358
|
+
if (parts[0] !== "#" || parts[1] !== "components" || parts.length < 4) return;
|
|
3359
|
+
const type = parts[2];
|
|
3360
|
+
const name = parts[3];
|
|
3361
|
+
if (!COMPONENT_TYPES.includes(type)) return;
|
|
3362
|
+
return {
|
|
3363
|
+
type,
|
|
3364
|
+
name
|
|
3365
|
+
};
|
|
3366
|
+
}
|
|
3367
|
+
function getComponentNames(refs, spec) {
|
|
3368
|
+
return refs.map((ref) => parseComponentRef(ref)).filter((parsed) => !!parsed && !!spec.components?.[parsed.type]?.[parsed.name]);
|
|
3369
|
+
}
|
|
3370
|
+
function resolveReferencedComponents(refs, spec, resolved) {
|
|
3371
|
+
const newComponents = getComponentNames(refs, spec).filter(({ type, name }) => !resolved[type].includes(name));
|
|
3372
|
+
if (newComponents.length === 0) return resolved;
|
|
3373
|
+
const nextResolved = {
|
|
3374
|
+
schemas: [...resolved.schemas],
|
|
3375
|
+
responses: [...resolved.responses],
|
|
3376
|
+
parameters: [...resolved.parameters],
|
|
3377
|
+
requestBodies: [...resolved.requestBodies]
|
|
3378
|
+
};
|
|
3379
|
+
for (const { type, name } of newComponents) nextResolved[type].push(name);
|
|
3380
|
+
return resolveReferencedComponents(newComponents.flatMap(({ type, name }) => findRefs(spec.components?.[type]?.[name])), spec, nextResolved);
|
|
3381
|
+
}
|
|
3382
|
+
const collectReferencedComponents = (spec, tags, mode) => {
|
|
3383
|
+
const filters = {
|
|
3384
|
+
tags,
|
|
3385
|
+
mode
|
|
3386
|
+
};
|
|
3387
|
+
return resolveReferencedComponents(Object.values(spec.paths ?? {}).filter((pathItem) => !!pathItem).flatMap((pathItem) => {
|
|
3388
|
+
return [...filteredVerbs(pathItem, filters).flatMap(([, operation]) => findRefs(operation)), ...findRefs(pathItem.parameters)];
|
|
3389
|
+
}), spec, {
|
|
3390
|
+
schemas: [],
|
|
3391
|
+
responses: [],
|
|
3392
|
+
parameters: [],
|
|
3393
|
+
requestBodies: []
|
|
3394
|
+
});
|
|
3395
|
+
};
|
|
3396
|
+
//#endregion
|
|
3329
3397
|
//#region src/generators/models-inline.ts
|
|
3330
3398
|
function generateModelInline(acc, model) {
|
|
3331
3399
|
return acc + `${model}\n`;
|
|
@@ -3678,7 +3746,8 @@ function generateQueryParamsAxiosConfig(response, isVue, isAngular, requiredNull
|
|
|
3678
3746
|
function generateMutatorConfig({ route, body, headers, queryParams, response, verb, isFormData, isFormUrlEncoded, hasSignal, hasSignalParam = false, isExactOptionalPropertyTypes, isVue, isAngular }) {
|
|
3679
3747
|
const bodyOptions = getIsBodyVerb(verb) ? generateBodyMutatorConfig(body, isFormData, isFormUrlEncoded) : "";
|
|
3680
3748
|
const queryParamsOptions = generateQueryParamsAxiosConfig(response, isVue ?? false, isAngular ?? false, queryParams?.requiredNullableKeys, queryParams);
|
|
3681
|
-
const
|
|
3749
|
+
const ignoreContentTypes = isAngular ? ["multipart/form-data"] : [];
|
|
3750
|
+
const headerOptions = body.contentType && !ignoreContentTypes.includes(body.contentType) ? `,\n headers: {'Content-Type': '${body.contentType}', ${headers ? "...headers" : ""}}` : headers ? ",\n headers" : "";
|
|
3682
3751
|
const signalVar = hasSignalParam ? "querySignal" : "signal";
|
|
3683
3752
|
const signalProp = hasSignalParam ? `signal: ${signalVar}` : "signal";
|
|
3684
3753
|
return `{url: \`${route}\`, method: '${verb.toUpperCase()}'${headerOptions}${bodyOptions}${queryParamsOptions}${hasSignal ? `, ${isExactOptionalPropertyTypes ? `...(${signalVar} ? { ${signalProp} }: {})` : signalProp}` : ""}\n }`;
|
|
@@ -4086,7 +4155,7 @@ async function generateVerbOptions({ verb, output, operation, route, pathRoute,
|
|
|
4086
4155
|
})];
|
|
4087
4156
|
}
|
|
4088
4157
|
function generateVerbsOptions({ verbs, input, output, route, pathRoute, context }) {
|
|
4089
|
-
return asyncReduce(
|
|
4158
|
+
return asyncReduce(filteredVerbs(verbs, input.filters), async (acc, [verb, operation]) => {
|
|
4090
4159
|
if (isVerb(verb)) {
|
|
4091
4160
|
const verbOptions = await generateVerbOptions({
|
|
4092
4161
|
verb,
|
|
@@ -4102,15 +4171,6 @@ function generateVerbsOptions({ verbs, input, output, route, pathRoute, context
|
|
|
4102
4171
|
return acc;
|
|
4103
4172
|
}, []);
|
|
4104
4173
|
}
|
|
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
4174
|
//#endregion
|
|
4115
4175
|
//#region src/writers/file.ts
|
|
4116
4176
|
const TRAILING_WHITESPACE_RE = /[^\S\r\n]+$/gm;
|
|
@@ -4936,6 +4996,6 @@ async function writeTagsMode({ builder, output, projectName, header, needSchema,
|
|
|
4936
4996
|
}))).flat();
|
|
4937
4997
|
}
|
|
4938
4998
|
//#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,
|
|
4999
|
+
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
5000
|
|
|
4941
5001
|
//# sourceMappingURL=index.mjs.map
|