@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 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, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dedupeUnionType, dynamicImport, escape, escapeRegExp, filterByContentType, 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 };
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(["application/octet-stream", "application/pdf"]);
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: "required" in bodySchema && bodySchema.required === false,
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: "required" in bodySchema && bodySchema.required === false,
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: "required" in res && res.required === false,
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: "required" in res && res.required === false,
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
- }) : partContentType ? `${variableName}.append(\`${keyPrefix}${key}\`, new Blob([JSON.stringify(${nonOptionalValueKey})], { type: '${partContentType}' }));\n` : `${variableName}.append(\`${keyPrefix}${key}\`, JSON.stringify(${nonOptionalValueKey}));\n`;
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
- if (bodySchema.required !== void 0) isOptional = !bodySchema.required;
2017
- } else if (requestBody.required !== void 0) isOptional = !requestBody.required;
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 headerOptions = body.contentType && !["multipart/form-data"].includes(body.contentType) ? `,\n headers: {'Content-Type': '${body.contentType}', ${headers ? "...headers" : ""}}` : headers ? ",\n headers" : "";
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(_filteredVerbs(verbs, input.filters), async (acc, [verb, operation]) => {
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, _filteredVerbs, addDependency, asyncReduce, camel, combineSchemas, compareVersions, conventionName, count, createDebugger, createLogger, createSuccessMessage, createTypeAliasIfNeeded, dedupeUnionType, dynamicImport, escape, escapeRegExp, filterByContentType, 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 };
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