{"version":3,"file":"index.mjs","names":["getReferenceName","valWithRequired"],"sources":["../src/mock-types.ts","../src/faker/imports.ts","../src/delay.ts","../src/faker/compatible-v9.ts","../src/faker/constants.ts","../src/faker/getters/object.ts","../src/faker/getters/array-item-factory.ts","../src/faker/format-example-value.ts","../src/faker/getters/scalar.ts","../src/faker/resolvers/value.ts","../src/faker/getters/combine.ts","../src/faker/getters/route.ts","../src/msw/mocks.ts","../src/msw/index.ts","../src/faker/index.ts","../src/index.ts"],"sourcesContent":["import {\n  escapeRegExp,\n  type ContextSpec,\n  type FinalizeMockImplementationOptions,\n  type MockOptions,\n  type OpenApiReferenceObject,\n  type OpenApiSchemaObject,\n  resolveRef,\n  type ResReqTypesValue,\n  type StrictMockSchemaKind,\n} from '@orval/core';\n\nexport type { StrictMockSchemaKind };\n\nexport function isStrictMock(\n  mockOptions?: Pick<MockOptions, 'required' | 'nonNullable'>,\n): boolean {\n  return Boolean(\n    mockOptions && mockOptions.required && mockOptions.nonNullable,\n  );\n}\n\nexport function getStrictMockTypeName(typeName: string): string {\n  return `${typeName}Mock`;\n}\n\nexport function getStrictMockHelperTypeDeclarations(): string {\n  return `export type KeysWithNull<O> = {\n  [K in keyof O]-?: null extends O[K] ? K : never;\n}[keyof O];\n\nexport type MockWithNullableOverrides<\n  T,\n  O extends Partial<T>,\n  M extends Record<keyof T, unknown>,\n> = Omit<M, Extract<KeysWithNull<O>, keyof T>> & {\n  [K in Extract<KeysWithNull<O>, keyof T>]: M[K] | null;\n};`;\n}\n\nexport function isSchemaNullableAtRoot(schema?: OpenApiSchemaObject): boolean {\n  if (!schema) {\n    return false;\n  }\n\n  if (schema.nullable === true) {\n    return true;\n  }\n\n  const type = schema.type;\n  return Array.isArray(type) && type.includes('null');\n}\n\nexport function classifyStrictMockSchemaType(\n  schema?: OpenApiSchemaObject,\n  context?: ContextSpec,\n): StrictMockSchemaKind {\n  if (!schema) {\n    return 'object';\n  }\n\n  if (\n    schema.format === 'binary' ||\n    (schema.contentMediaType === 'application/octet-stream' &&\n      !schema.contentEncoding)\n  ) {\n    return 'binary';\n  }\n\n  if (typeof schema.$ref === 'string') {\n    if (context) {\n      const { schema: resolved } = resolveRef(\n        schema as OpenApiReferenceObject,\n        context,\n      );\n      return classifyStrictMockSchemaType(\n        resolved as OpenApiSchemaObject,\n        context,\n      );\n    }\n\n    return 'object';\n  }\n\n  if (\n    schema.type === 'object' ||\n    schema.properties ||\n    isComposedObjectSchema(schema)\n  ) {\n    return 'object';\n  }\n\n  return 'alias';\n}\n\nfunction isComposedObjectSchema(schema: OpenApiSchemaObject): boolean {\n  const branches = (schema.oneOf ?? schema.anyOf ?? schema.allOf) as\n    | (OpenApiSchemaObject | OpenApiReferenceObject)[]\n    | undefined;\n  if (!branches?.length) {\n    return false;\n  }\n\n  return branches.some((branch) => {\n    const item = branch as OpenApiSchemaObject;\n    if (\n      typeof item.$ref === 'string' ||\n      item.type === 'object' ||\n      item.properties\n    ) {\n      return true;\n    }\n\n    return isComposedObjectSchema(item);\n  });\n}\n\nexport function getStrictMockTypeDeclaration(\n  typeName: string,\n  kind: StrictMockSchemaKind = 'object',\n  options?: { schemaNullableAtRoot?: boolean },\n): string {\n  const mockTypeName = getStrictMockTypeName(typeName);\n\n  if (kind === 'alias') {\n    return `export type ${mockTypeName} = ${typeName};`;\n  }\n\n  if (kind === 'binary') {\n    return `export type ${mockTypeName} = ArrayBuffer;`;\n  }\n\n  const mappedType = `{\\n  [K in keyof Required<NonNullable<${typeName}>>]: NonNullable<Required<NonNullable<${typeName}>>[K]>;\\n}`;\n  const objectMockType = options?.schemaNullableAtRoot\n    ? `${mappedType} | null`\n    : mappedType;\n\n  return `export type ${mockTypeName} = ${objectMockType};`;\n}\n\nexport function getStrictMockTypeDeclarations(\n  typeNames: Iterable<string>,\n  kinds?: Readonly<Record<string, StrictMockSchemaKind>>,\n  nullableAtRoot?: Readonly<Record<string, boolean>>,\n): string {\n  const unique = [...new Set(typeNames)];\n  if (unique.length === 0) {\n    return '';\n  }\n\n  return unique\n    .map((typeName) =>\n      getStrictMockTypeDeclaration(typeName, kinds?.[typeName] ?? 'object', {\n        schemaNullableAtRoot: nullableAtRoot?.[typeName],\n      }),\n    )\n    .join('\\n\\n');\n}\n\nfunction strictMockResolvedImportMatches(\n  typeName: string,\n  resolvedImport: { name?: string; alias?: string } | undefined,\n  importBareName?: string,\n): boolean {\n  const resolvedName = resolvedImport?.name;\n  if (!resolvedName) {\n    return false;\n  }\n\n  if (typeName === resolvedName) {\n    return true;\n  }\n\n  if (resolvedImport.alias && typeName === resolvedImport.alias) {\n    return true;\n  }\n\n  return importBareName !== undefined && importBareName === resolvedName;\n}\n\nfunction resolveStrictMockSchemaForTypeName(\n  typeName: string,\n  originalSchema: OpenApiSchemaObject | undefined,\n  context?: ContextSpec,\n  importBareName?: string,\n): OpenApiSchemaObject | undefined {\n  if (!originalSchema) {\n    return undefined;\n  }\n\n  if (!context) {\n    return originalSchema;\n  }\n\n  const branches = (originalSchema.oneOf ??\n    originalSchema.anyOf ??\n    originalSchema.allOf) as\n    | (OpenApiSchemaObject | OpenApiReferenceObject)[]\n    | undefined;\n\n  if (branches?.length) {\n    for (const branch of branches) {\n      if (typeof branch.$ref !== 'string') {\n        continue;\n      }\n\n      const resolved = resolveRef(branch as OpenApiReferenceObject, context);\n      if (\n        strictMockResolvedImportMatches(\n          typeName,\n          resolved.imports[0],\n          importBareName,\n        )\n      ) {\n        return resolved.schema as OpenApiSchemaObject;\n      }\n    }\n\n    return undefined;\n  }\n\n  if (typeof originalSchema.$ref === 'string') {\n    const resolved = resolveRef(\n      originalSchema as OpenApiReferenceObject,\n      context,\n    );\n    if (\n      strictMockResolvedImportMatches(\n        typeName,\n        resolved.imports[0],\n        importBareName,\n      )\n    ) {\n      return resolved.schema as OpenApiSchemaObject;\n    }\n\n    return undefined;\n  }\n\n  return originalSchema;\n}\n\nexport function getMockFactoryReturnType(\n  typeName: string,\n  mockOptions?: Pick<MockOptions, 'required' | 'nonNullable'>,\n): string {\n  return isStrictMock(mockOptions) ? getStrictMockTypeName(typeName) : typeName;\n}\n\nexport interface MockFactorySignatureParts {\n  param: string;\n  returnType: string;\n  returnCast: string;\n}\n\nexport interface GetMockFactorySignaturePartsOptions {\n  isOverridable?: boolean;\n  overrideType?: string;\n}\n\nexport function getMockFactorySignatureParts(\n  typeName: string,\n  mockOptions?: Pick<MockOptions, 'required' | 'nonNullable'>,\n  options: GetMockFactorySignaturePartsOptions = {},\n): MockFactorySignatureParts {\n  const isOverridable = options.isOverridable ?? false;\n  const overrideType = options.overrideType ?? `Partial<${typeName}>`;\n  const mockTypeName = getStrictMockTypeName(typeName);\n\n  if (!isOverridable) {\n    return {\n      param: '',\n      returnType: getMockFactoryReturnType(typeName, mockOptions),\n      returnCast: '',\n    };\n  }\n\n  if (isStrictMock(mockOptions)) {\n    return {\n      param: `<O extends ${overrideType} = {}>(overrideResponse?: O)`,\n      returnType: `MockWithNullableOverrides<${typeName}, O, ${mockTypeName}>`,\n      returnCast: ` as MockWithNullableOverrides<${typeName}, O, ${mockTypeName}>`,\n    };\n  }\n\n  return {\n    param: `overrideResponse: ${overrideType} = {}`,\n    returnType: typeName,\n    returnCast: '',\n  };\n}\n\nexport function getSimpleSchemaReturnType(\n  returnType: string,\n  schemaTypeNames: string[],\n): string | undefined {\n  const trimmed = returnType.trim();\n  return schemaTypeNames.includes(trimmed) ? trimmed : undefined;\n}\n\nexport function formatMockFactoryDeclaration(\n  factoryName: string,\n  param: string,\n  returnType: string,\n  body: string,\n  returnCast: string,\n  options?: { omitReturnType?: boolean; terminateStatement?: boolean },\n): string {\n  const header = param\n    ? param.startsWith('<')\n      ? `export const ${factoryName} = ${param}`\n      : `export const ${factoryName} = (${param})`\n    : `export const ${factoryName} = ()`;\n\n  const returnTypeAnnotation =\n    options?.omitReturnType || !returnType ? '' : `: ${returnType}`;\n\n  const statementTerminator =\n    returnCast || options?.terminateStatement ? ';' : '';\n\n  return `${header}${returnTypeAnnotation} => (${body})${returnCast}${statementTerminator}`;\n}\n\nexport function getSchemaTypeNamesFromResponses(\n  responses: ResReqTypesValue[],\n): string[] {\n  const names = new Set<string>();\n\n  for (const response of responses) {\n    for (const imp of response.imports) {\n      if (imp.values || imp.schemaFactory) {\n        continue;\n      }\n\n      const importName = imp.alias ?? imp.name;\n      if (/^[A-Z]\\w*$/.test(importName)) {\n        names.add(importName);\n      }\n    }\n\n    const { value } = response;\n    if (!value) {\n      continue;\n    }\n\n    const baseType = value.endsWith('[]') ? value.slice(0, -2) : value;\n    if (/^[A-Z]\\w*$/.test(baseType)) {\n      names.add(baseType);\n    }\n  }\n\n  return [...names];\n}\n\nexport function getStrictMockSchemaKindsFromResponses(\n  responses: ResReqTypesValue[],\n  context?: ContextSpec,\n): Record<string, StrictMockSchemaKind> {\n  const kinds: Record<string, StrictMockSchemaKind> = {};\n\n  for (const response of responses) {\n    for (const imp of response.imports) {\n      if (imp.values || imp.schemaFactory) {\n        continue;\n      }\n\n      const importName = imp.alias ?? imp.name;\n      if (!/^[A-Z]\\w*$/.test(importName)) {\n        continue;\n      }\n\n      const schemaForImport = resolveStrictMockSchemaForTypeName(\n        importName,\n        response.originalSchema,\n        context,\n        imp.name,\n      );\n      if (!schemaForImport) {\n        continue;\n      }\n\n      kinds[importName] = classifyStrictMockSchemaType(\n        schemaForImport,\n        context,\n      );\n    }\n\n    const { value } = response;\n    if (!value || !response.originalSchema) {\n      continue;\n    }\n\n    const baseType = value.endsWith('[]') ? value.slice(0, -2) : value;\n    if (!/^[A-Z]\\w*$/.test(baseType)) {\n      continue;\n    }\n\n    const schema = response.originalSchema;\n    if (value.endsWith('[]') && schema.type === 'array' && schema.items) {\n      const items = schema.items as OpenApiSchemaObject;\n      kinds[baseType] = classifyStrictMockSchemaType(items, context);\n      continue;\n    }\n\n    const schemaForType =\n      resolveStrictMockSchemaForTypeName(\n        baseType,\n        response.originalSchema,\n        context,\n      ) ?? response.originalSchema;\n    kinds[baseType] = classifyStrictMockSchemaType(schemaForType, context);\n  }\n\n  return kinds;\n}\n\nexport function buildStrictMockTypeFileHeader(\n  schemaTypeNames: Iterable<string>,\n  kinds?: Readonly<Record<string, StrictMockSchemaKind>>,\n): string {\n  const uniqueSchemaNames = [...new Set(schemaTypeNames)];\n  const schemaBlock = getStrictMockTypeDeclarations(uniqueSchemaNames, kinds);\n\n  return [getStrictMockHelperTypeDeclarations(), schemaBlock]\n    .filter(Boolean)\n    .join('\\n\\n');\n}\n\n/**\n * Prepends shared strict-mock helper types and each `{Schema}Mock` alias once at\n * the top of a mock file. Generators pass `strictSchemaTypeNames`; no scraping.\n *\n * Not idempotent — callers must invoke this exactly once per aggregated mock\n * file (writers and `writeFakerSchemaMocks`), not from import hooks.\n */\nexport function dedupeStrictMockTypeDeclarations(\n  implementation: string,\n  options: FinalizeMockImplementationOptions = {},\n): string {\n  if (!isStrictMock(options.mockOptions)) {\n    return implementation;\n  }\n\n  const schemaTypeNames = options.strictSchemaTypeNames\n    ? [...new Set(options.strictSchemaTypeNames)]\n    : [];\n  if (schemaTypeNames.length === 0) {\n    return implementation;\n  }\n\n  const header = buildStrictMockTypeFileHeader(\n    schemaTypeNames,\n    options.strictMockSchemaKinds,\n  );\n\n  return `${header}\\n\\n${implementation.trimStart()}`;\n}\n\nexport function applyStrictMockReturnType(\n  returnType: string,\n  schemaTypeNames: string[],\n): string {\n  if (schemaTypeNames.length === 0) {\n    return returnType;\n  }\n\n  let result = returnType;\n  const sorted = [...schemaTypeNames].toSorted((a, b) => b.length - a.length);\n\n  for (const name of sorted) {\n    result = result.replaceAll(\n      new RegExp(String.raw`\\b${escapeRegExp(name)}\\b`, 'g'),\n      getStrictMockTypeName(name),\n    );\n  }\n\n  return result;\n}\n\nconst STRICT_MOCK_SCHEMA_TYPE_FROM_OVERRIDES =\n  /MockWithNullableOverrides<([A-Z]\\w*),/g;\nconst STRICT_MOCK_SCHEMA_TYPE_FROM_OVERRIDE_ALIAS =\n  /MockWithNullableOverrides<[^,]+,\\s*[^,]+,\\s*([A-Z]\\w*Mock)>/g;\nconst STRICT_MOCK_SCHEMA_TYPE_FROM_MOCK_ALIAS_RETURN =\n  /\\): ([A-Z]\\w*Mock)(?:\\[\\]|;)/g;\n\n/** Inverse of {@link getStrictMockTypeName}: `PetMock` → `Pet`, `WidgetMockMock` → `WidgetMock`. */\nfunction getSchemaTypeNameFromStrictMockAlias(alias: string): string {\n  return alias.endsWith('Mock') ? alias.slice(0, -4) : alias;\n}\n\n/**\n * Collect schema type names referenced by strict mock factories in generated\n * implementation text (nested split factories, array item helpers, etc.).\n *\n * This reverse-parses emitted factory syntax and is therefore coupled to the\n * current `formatMockFactoryDeclaration` / `getMockFactorySignatureParts`\n * shape. The structurally robust alternative is to record each nested item's\n * schema name where split factories are generated (array-item / faker getters,\n * where the `$ref` name is known) and thread it into `strictMockSchemaTypeNames`.\n */\nexport function collectStrictMockSchemaTypeNamesFromImplementation(\n  implementation: string,\n): string[] {\n  const names = new Set<string>();\n\n  for (const match of implementation.matchAll(\n    STRICT_MOCK_SCHEMA_TYPE_FROM_OVERRIDES,\n  )) {\n    names.add(match[1]);\n  }\n\n  for (const pattern of [\n    STRICT_MOCK_SCHEMA_TYPE_FROM_OVERRIDE_ALIAS,\n    STRICT_MOCK_SCHEMA_TYPE_FROM_MOCK_ALIAS_RETURN,\n  ]) {\n    for (const match of implementation.matchAll(pattern)) {\n      names.add(getSchemaTypeNameFromStrictMockAlias(match[1]));\n    }\n  }\n\n  return [...names];\n}\n\nexport function mergeStrictMockSchemaTypeNames(\n  ...groups: Array<Iterable<string> | undefined>\n): string[] | undefined {\n  const names = new Set<string>();\n\n  for (const group of groups) {\n    if (!group) continue;\n    for (const name of group) {\n      names.add(name);\n    }\n  }\n\n  return names.size > 0 ? [...names] : undefined;\n}\n\nexport function mergeStrictMockSchemaKinds(\n  ...groups: Array<Readonly<Record<string, StrictMockSchemaKind>> | undefined>\n): Record<string, StrictMockSchemaKind> | undefined {\n  const merged: Record<string, StrictMockSchemaKind> = {};\n\n  for (const group of groups) {\n    if (!group) continue;\n    for (const [name, kind] of Object.entries(group)) {\n      merged[name] ??= kind;\n    }\n  }\n\n  return Object.keys(merged).length > 0 ? merged : undefined;\n}\n","import type { GeneratorImport } from '@orval/core';\n\n/**\n * Appends entries added to `source` since `sinceIndex`. Uses indexed push\n * instead of spread so large import batches (common with `schemas: true`\n * delegation on wide objects) do not overflow the call stack.\n */\nexport function appendImportsDelta(\n  target: GeneratorImport[],\n  source: GeneratorImport[],\n  sinceIndex: number,\n): void {\n  for (let i = sinceIndex; i < source.length; i++) {\n    target.push(source[i]!);\n  }\n}\n\n/**\n * Merge imports returned from mock resolution when the shared imports array\n * was not mutated in place. Enum mocks and nested object factories return\n * their imports separately; schema-factory delegation mutates `sharedImports`\n * directly and must not be merged again from `resolvedImports`.\n */\nexport function mergeReturnedMockImports(\n  sharedImports: GeneratorImport[],\n  sharedBefore: number,\n  resolvedImports: GeneratorImport[],\n): void {\n  if (sharedImports.length === sharedBefore) {\n    appendImportsDelta(sharedImports, resolvedImports, 0);\n  }\n}\n\n/** Recover type imports referenced by nested oneOf split mock helpers. */\nexport function collectSplitMockTypeImports(\n  implementations: readonly string[],\n): GeneratorImport[] {\n  const seen = new Set<string>();\n  const imports: GeneratorImport[] = [];\n\n  const addType = (name: string | undefined) => {\n    if (!name || seen.has(name)) return;\n    seen.add(name);\n    imports.push({ name, values: false });\n  };\n\n  for (const impl of implementations) {\n    for (const match of impl.matchAll(\n      /export const get\\w+Mock = \\(\\s*overrideResponse: Partial<(\\w+)[^)]*\\):\\s*(\\w+)\\s*=>/g,\n    )) {\n      addType(match[1]);\n      addType(match[2]);\n    }\n\n    for (const match of impl.matchAll(\n      /export const get\\w+Mock[\\s\\S]*?MockWithNullableOverrides<(?:Extract<(\\w+),[^>]+>|(\\w+)),/g,\n    )) {\n      addType(match[1] ?? match[2]);\n    }\n  }\n\n  return imports;\n}\n","import {\n  type GlobalMockOptions,\n  isBoolean,\n  isFunction,\n  isMswMock,\n  isNumber,\n  type MswMockOptions,\n  type NormalizedOverrideOutput,\n} from '@orval/core';\n\nexport const getDelay = (\n  override?: NormalizedOverrideOutput,\n  options?: GlobalMockOptions,\n): MswMockOptions['delay'] => {\n  // `delay` and `delayFunctionLazyExecute` are MSW-only. Narrow the\n  // discriminated `GlobalMockOptions` union (and the partial override\n  // counterpart) before reading them.\n  const mswOptions = options && isMswMock(options) ? options : undefined;\n  const overrideMock = override?.mock as Partial<MswMockOptions> | undefined;\n  const overrideDelay = overrideMock?.delay ?? mswOptions?.delay;\n  const delayFunctionLazyExecute =\n    overrideMock?.delayFunctionLazyExecute ??\n    mswOptions?.delayFunctionLazyExecute;\n  if (isFunction(overrideDelay)) {\n    return delayFunctionLazyExecute ? overrideDelay : overrideDelay();\n  }\n  if (isNumber(overrideDelay) || isBoolean(overrideDelay)) {\n    return overrideDelay;\n  }\n  return false;\n};\n","import { compareVersions, type PackageJson } from '@orval/core';\n\nconst getFakerPackageVersion = (packageJson: PackageJson) => {\n  return (\n    packageJson.resolvedVersions?.['@faker-js/faker'] ??\n    packageJson.dependencies?.['@faker-js/faker'] ??\n    packageJson.devDependencies?.['@faker-js/faker'] ??\n    packageJson.peerDependencies?.['@faker-js/faker']\n  );\n};\n\nexport const isFakerVersionV9 = (packageJson: PackageJson) => {\n  const version = getFakerPackageVersion(packageJson);\n\n  if (!version) {\n    return false;\n  }\n\n  const withoutRc = version.split('-')[0];\n\n  return compareVersions(withoutRc, '9.0.0');\n};\n","import type { OpenApiSchemaObject } from '@orval/core';\n\nexport const DEFAULT_FORMAT_MOCK: Record<\n  Required<Extract<OpenApiSchemaObject, object>>['format'],\n  string\n> = {\n  bic: 'faker.finance.bic()',\n  binary: 'new ArrayBuffer(faker.number.int({ min: 1, max: 64 }))',\n  city: 'faker.location.city()',\n  country: 'faker.location.country()',\n  date: 'faker.date.past().toISOString().slice(0, 10)',\n  'date-time': \"faker.date.past().toISOString().slice(0, 19) + 'Z'\",\n  email: 'faker.internet.email()',\n  firstName: 'faker.person.firstName()',\n  gender: 'faker.person.gender()',\n  iban: 'faker.finance.iban()',\n  ipv4: 'faker.internet.ipv4()',\n  ipv6: 'faker.internet.ipv6()',\n  jobTitle: 'faker.person.jobTitle()',\n  lastName: 'faker.person.lastName()',\n  password: 'faker.internet.password()',\n  phoneNumber: 'faker.phone.number()',\n  streetName: 'faker.location.street()',\n  uri: 'faker.internet.url()',\n  url: 'faker.internet.url()',\n  userName: 'faker.internet.userName()',\n  uuid: 'faker.string.uuid()',\n  zipCode: 'faker.location.zipCode()',\n};\n\n// #980 replace CUID so tests are consistent\nexport const DEFAULT_OBJECT_KEY_MOCK = 'faker.string.alphanumeric(5)';\n","import {\n  type ContextSpec,\n  type GeneratorImport,\n  getKey,\n  getRefInfo,\n  isReference,\n  type MockOptions,\n  type OpenApiReferenceObject,\n  type OpenApiSchemaObject,\n  PropertySortOrder,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { DEFAULT_OBJECT_KEY_MOCK } from '../constants';\nimport {\n  resolveMockValue,\n  getNullable,\n  isNullableSchema,\n} from '../resolvers/value';\nimport { mergeReturnedMockImports } from '../imports';\nimport { combineSchemasMock } from './combine';\n\nexport const overrideVarName = 'overrideResponse';\n\nfunction wrapRootNullableObjectValue(\n  value: string,\n  schemaItem: MockSchemaObject,\n  mockOptions: MockOptions | undefined,\n  combine?: GetMockObjectOptions['combine'],\n): { value: string; nullWrapped: boolean } {\n  const nullableAtRoot =\n    !combine && isNullableSchema(schemaItem) && !mockOptions?.nonNullable;\n\n  return {\n    value: nullableAtRoot ? getNullable(value, true) : value,\n    nullWrapped: nullableAtRoot,\n  };\n}\n\nfunction getReferenceName(\n  ref: string | undefined,\n  context: ContextSpec,\n): string {\n  if (!ref) return '';\n\n  return getRefInfo(ref, context).name;\n}\n\ninterface GetMockObjectOptions {\n  item: MockSchemaObject;\n  operationId: string;\n  mockOptions?: MockOptions;\n  tags: string[];\n  combine?: {\n    separator: 'allOf' | 'oneOf' | 'anyOf';\n    includedProperties: string[];\n  };\n  context: ContextSpec;\n  imports: GeneratorImport[];\n  // This is used to prevent recursion when combining schemas\n  // When an element is added to the array, it means on this iteration, we've already seen this property\n  existingReferencedProperties: string[];\n  // Tracks the current contiguous `allOf` composition to break cyclic\n  // inheritance. See `existingReferencedAllOfRefs` docs in getters/combine.ts.\n  existingReferencedAllOfRefs?: string[];\n  splitMockImplementations: string[];\n  // This is used to add the overrideResponse to the object\n  allowOverride?: boolean;\n}\n\nexport function getMockObject({\n  item,\n  mockOptions,\n  operationId,\n  tags,\n  combine,\n  context,\n  imports,\n  existingReferencedProperties,\n  existingReferencedAllOfRefs = [],\n  splitMockImplementations,\n  allowOverride = false,\n}: GetMockObjectOptions): MockDefinition {\n  if (isReference(item)) {\n    return resolveMockValue({\n      schema: {\n        ...item,\n        name: item.name,\n        path: item.path ? `${item.path}.${item.name}` : item.name,\n      },\n      mockOptions,\n      operationId,\n      tags,\n      context,\n      imports,\n      existingReferencedProperties,\n      existingReferencedAllOfRefs,\n      splitMockImplementations,\n    });\n  }\n\n  const schemaItem = item as MockSchemaObject & Record<string, unknown>;\n  const itemAllOf = schemaItem.allOf as MockSchema[] | undefined;\n  const itemOneOf = schemaItem.oneOf as MockSchema[] | undefined;\n  const itemAnyOf = schemaItem.anyOf as MockSchema[] | undefined;\n  const itemType = schemaItem.type as string | string[] | undefined;\n  const itemProperties = schemaItem.properties as\n    | Record<string, OpenApiReferenceObject | OpenApiSchemaObject>\n    | undefined;\n  const itemRequired = schemaItem.required as string[] | undefined;\n  const itemAdditionalProperties = schemaItem.additionalProperties as\n    | boolean\n    | OpenApiReferenceObject\n    | OpenApiSchemaObject\n    | undefined;\n\n  if (itemAllOf || itemOneOf || itemAnyOf) {\n    const separator = itemAllOf ? 'allOf' : itemOneOf ? 'oneOf' : 'anyOf';\n    return combineSchemasMock({\n      item: schemaItem,\n      separator,\n      mockOptions,\n      operationId,\n      tags,\n      combine,\n      context,\n      imports,\n      existingReferencedProperties,\n      existingReferencedAllOfRefs,\n      splitMockImplementations,\n    });\n  }\n\n  if (Array.isArray(itemType)) {\n    const nonNullTypes = mockOptions?.nonNullable\n      ? itemType.filter((type) => type !== 'null')\n      : itemType;\n\n    if (nonNullTypes.length === 0) {\n      return { value: 'null', imports: [], name: schemaItem.name };\n    }\n\n    if (nonNullTypes.length === 1) {\n      return getMockObject({\n        item: {\n          ...schemaItem,\n          type: nonNullTypes[0],\n        } as MockSchemaObject & Record<string, unknown>,\n        mockOptions,\n        operationId,\n        tags,\n        combine,\n        context,\n        imports,\n        existingReferencedProperties,\n        existingReferencedAllOfRefs,\n        splitMockImplementations,\n        allowOverride,\n      });\n    }\n\n    // Spread the base schema into each type entry so that object properties\n    // (e.g. `properties`, `required`, `additionalProperties`) are preserved.\n    // Without this, `{ type: \"object\", properties: {...} }` collapses to\n    // `{ type: \"object\" }` and the mock generator returns `{}` instead of\n    // building the actual object shape. Mirrors the fix in core getters/object.ts.\n    const isPropertylessObject =\n      !itemProperties &&\n      (!itemRequired || itemRequired.length === 0) &&\n      !itemAdditionalProperties;\n\n    if (\n      isPropertylessObject &&\n      nonNullTypes.includes('object') &&\n      nonNullTypes.includes('null') &&\n      nonNullTypes.every((type) => type === 'object' || type === 'null')\n    ) {\n      if (mockOptions?.nonNullable) {\n        return { value: '{}', imports: [], name: schemaItem.name };\n      }\n\n      return {\n        value: 'faker.helpers.arrayElement([{}, null])',\n        imports: [],\n        name: schemaItem.name,\n      };\n    }\n\n    const baseItem = schemaItem as Record<string, unknown>;\n    return combineSchemasMock({\n      item: {\n        anyOf: nonNullTypes.map((type) => ({\n          ...baseItem,\n          type,\n        })) as unknown as MockSchema[],\n        name: schemaItem.name,\n      },\n      separator: 'anyOf',\n      mockOptions,\n      operationId,\n      tags,\n      combine,\n      context,\n      imports,\n      existingReferencedProperties,\n      existingReferencedAllOfRefs,\n      splitMockImplementations,\n    });\n  }\n\n  if (itemProperties) {\n    let value =\n      !combine || combine.separator === 'oneOf' || combine.separator === 'anyOf'\n        ? '{'\n        : '';\n    const imports: GeneratorImport[] = [];\n    const includedProperties: string[] = [];\n\n    const entries = Object.entries(itemProperties);\n    if (context.output.propertySortOrder === PropertySortOrder.ALPHABETICAL) {\n      entries.sort((a, b) => {\n        return a[0].localeCompare(b[0], 'en', { numeric: true });\n      });\n    }\n    const propertyScalars = entries\n      .map(\n        ([key, prop]: [\n          string,\n          OpenApiReferenceObject | OpenApiSchemaObject,\n        ]) => {\n          if (combine?.includedProperties.includes(key)) {\n            return;\n          }\n\n          const isRequired =\n            mockOptions?.required ??\n            (Array.isArray(itemRequired) ? itemRequired : []).includes(key);\n\n          const hasNullable = 'nullable' in prop && prop.nullable === true;\n\n          // Check to see if the property is a reference to an existing property\n          // Fixes issue #910\n          if (\n            isReference(prop) &&\n            existingReferencedProperties.includes(\n              getReferenceName(prop.$ref, context),\n            )\n          ) {\n            if (isRequired) {\n              const keyDefinition = getKey(key);\n              return `${keyDefinition}: null`;\n            }\n            return;\n          }\n\n          const importsBefore = imports.length;\n          const resolvedValue = resolveMockValue({\n            schema: {\n              ...(prop as Record<string, unknown>),\n              name: key,\n              parentName: schemaItem.name,\n              path: schemaItem.path ? `${schemaItem.path}.${key}` : `#.${key}`,\n            },\n            mockOptions,\n            operationId,\n            tags,\n            context,\n            imports,\n            existingReferencedProperties,\n            // A property value is a fresh mock instance, not part of this\n            // object's allOf composition — reset the chain.\n            // See `existingReferencedAllOfRefs` docs in getters/combine.ts.\n            existingReferencedAllOfRefs: [],\n            splitMockImplementations,\n          });\n\n          mergeReturnedMockImports(\n            imports,\n            importsBefore,\n            resolvedValue.imports,\n          );\n\n          includedProperties.push(key);\n\n          const keyDefinition = getKey(key);\n\n          const hasDefault = 'default' in prop && prop.default !== undefined;\n\n          if (!isRequired && !resolvedValue.overrided && !hasDefault) {\n            const omitValue =\n              mockOptions?.nonNullable || !hasNullable ? 'undefined' : 'null';\n            return `${keyDefinition}: faker.helpers.arrayElement([${resolvedValue.value}, ${omitValue}])`;\n          }\n\n          const isNullable =\n            Array.isArray(prop.type) && prop.type.includes('null');\n          if (\n            isNullable &&\n            !resolvedValue.nullWrapped &&\n            !resolvedValue.overrided &&\n            !mockOptions?.nonNullable\n          ) {\n            return `${keyDefinition}: faker.helpers.arrayElement([${resolvedValue.value}, null])`;\n          }\n\n          return `${keyDefinition}: ${resolvedValue.value}`;\n        },\n      )\n      .filter(Boolean);\n\n    if (allowOverride) {\n      propertyScalars.push(`...${overrideVarName}`);\n    }\n\n    value += propertyScalars.join(', ');\n    value +=\n      !combine || combine.separator === 'oneOf' || combine.separator === 'anyOf'\n        ? '}'\n        : '';\n\n    const { value: finalValue, nullWrapped } = wrapRootNullableObjectValue(\n      value,\n      schemaItem,\n      mockOptions,\n      combine,\n    );\n\n    return {\n      value: finalValue,\n      nullWrapped,\n      imports,\n      name: schemaItem.name,\n      includedProperties,\n    };\n  }\n\n  if (itemAdditionalProperties) {\n    if (itemAdditionalProperties === true) {\n      const { value: finalValue, nullWrapped } = wrapRootNullableObjectValue(\n        `{}`,\n        schemaItem,\n        mockOptions,\n        combine,\n      );\n\n      return {\n        value: finalValue,\n        nullWrapped,\n        imports: [],\n        name: schemaItem.name,\n      };\n    }\n    const additionalProperties = itemAdditionalProperties;\n    if (\n      isReference(additionalProperties) &&\n      existingReferencedProperties.includes(\n        getReferenceName(additionalProperties.$ref, context),\n      )\n    ) {\n      const { value: finalValue, nullWrapped } = wrapRootNullableObjectValue(\n        `{}`,\n        schemaItem,\n        mockOptions,\n        combine,\n      );\n\n      return {\n        value: finalValue,\n        nullWrapped,\n        imports: [],\n        name: schemaItem.name,\n      };\n    }\n\n    const resolvedValue = resolveMockValue({\n      schema: {\n        ...additionalProperties,\n        name: schemaItem.name,\n        path: schemaItem.path ? `${schemaItem.path}.#` : '#',\n      },\n      mockOptions,\n      operationId,\n      tags,\n      context,\n      imports,\n      existingReferencedProperties,\n      // An additionalProperties value is a fresh mock instance — reset the\n      // chain, as with property values above.\n      // See `existingReferencedAllOfRefs` docs in getters/combine.ts.\n      existingReferencedAllOfRefs: [],\n      splitMockImplementations,\n    });\n\n    const objectValue = `{\n        [${DEFAULT_OBJECT_KEY_MOCK}]: ${resolvedValue.value}\n      }`;\n    const { value: finalValue, nullWrapped } = wrapRootNullableObjectValue(\n      objectValue,\n      schemaItem,\n      mockOptions,\n      combine,\n    );\n\n    return {\n      ...resolvedValue,\n      value: finalValue,\n      nullWrapped,\n    };\n  }\n\n  const { value: finalValue, nullWrapped } = wrapRootNullableObjectValue(\n    '{}',\n    schemaItem,\n    mockOptions,\n    combine,\n  );\n\n  return { value: finalValue, nullWrapped, imports: [], name: schemaItem.name };\n}\n","import {\n  type ContextSpec,\n  type GeneratorImport,\n  getOperationTagKey,\n  getRefInfo,\n  isFunction,\n  isReference,\n  type OpenApiSchemaObject,\n  OutputMockType,\n  OutputMode,\n  pascal,\n  resolveRef,\n} from '@orval/core';\n\nimport {\n  formatMockFactoryDeclaration,\n  getMockFactorySignatureParts,\n  getStrictMockTypeName,\n  isStrictMock,\n} from '../../mock-types';\nimport type { MockSchema } from '../../types';\nimport { overrideVarName } from './object';\nimport { extractItemsRef } from './scalar';\n\n/**\n * Scope key for file-level array-item factory dedup. Must match how writers\n * group mock output: one bucket per tag file in tags modes, otherwise one\n * bucket for the whole target.\n */\nexport function getArrayItemMockFileScope(\n  context: ContextSpec,\n  tags: string[],\n): string {\n  const mode = context.output.mode;\n  const mockType = context.activeMockOutputType ?? OutputMockType.MSW;\n  let base: string;\n  if (mode === OutputMode.TAGS || mode === OutputMode.TAGS_SPLIT) {\n    base = `tag:${getOperationTagKey({ tags })}`;\n  } else if (mode === OutputMode.SPLIT) {\n    base = 'split';\n  } else {\n    base = 'single';\n  }\n  return `${base}:${mockType}`;\n}\n\nfunction getFileLevelExtractedFactories(\n  context: ContextSpec,\n  scope: string,\n): Set<string> {\n  context.arrayItemMockFactories ??= new Map();\n  const existing = context.arrayItemMockFactories.get(scope);\n  if (existing) {\n    return existing;\n  }\n  const factories = new Set<string>();\n  context.arrayItemMockFactories.set(scope, factories);\n  return factories;\n}\n\n/**\n * True when any mock generator entry opts into reusable array-item mock\n * factories for object-like array item schemas in operation responses.\n */\nexport function shouldExtractArrayItemFactories(context: ContextSpec): boolean {\n  return context.output.mock.generators.some(\n    (g) => !isFunction(g) && g.arrayItems === true,\n  );\n}\n\n/**\n * True when `schemas: true` already emits a consolidated factory for this\n * `$ref` item under `components/schemas`, so we must not re-export it from\n * the operation mock file.\n */\nfunction hasConsolidatedSchemaFactory(\n  items: MockSchema,\n  context: ContextSpec,\n): boolean {\n  if (!context.output.schemas) {\n    return false;\n  }\n\n  const itemsRef = extractItemsRef(items);\n  if (!itemsRef) {\n    return false;\n  }\n\n  const { refPaths } = getRefInfo(itemsRef, context);\n  const isComponentsSchema =\n    Array.isArray(refPaths) &&\n    refPaths[0] === 'components' &&\n    refPaths[1] === 'schemas';\n\n  if (!isComponentsSchema) {\n    return false;\n  }\n\n  return context.output.mock.generators.some(\n    (g) =>\n      !isFunction(g) && g.type === OutputMockType.FAKER && g.schemas === true,\n  );\n}\n\n/**\n * True when `parentName` looks like a nested property key rather than the\n * generated response wrapper type (e.g. `outer` vs `GetTenants200`). Inlining\n * avoids factory/type-name collisions and mismatched `<Parent><Prop>Item` aliases.\n */\nfunction isAmbiguousInlineItemContext(\n  operationId: string,\n  parentName?: string,\n): boolean {\n  if (!parentName) {\n    return false;\n  }\n\n  return !parentName.toLowerCase().includes(operationId.toLowerCase());\n}\n\nfunction isNullableArrayItem(schema: OpenApiSchemaObject): boolean {\n  if (schema.nullable === true) {\n    return true;\n  }\n\n  return Array.isArray(schema.type) && schema.type.includes('null');\n}\n\nfunction isResolvedSchemaObjectLike(schema: OpenApiSchemaObject): boolean {\n  if (schema.type === 'object' || schema.properties) {\n    return true;\n  }\n\n  if (schema.allOf) {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * True when array `items` resolve to an object-like schema worth extracting.\n * Conservative: skips scalar refs, oneOf/anyOf, nullable items, and nested\n * contexts where generated item type names cannot be inferred reliably.\n */\nfunction shouldExtractArrayItem(\n  items: MockSchema,\n  context: ContextSpec,\n  operationId: string,\n  parentName?: string,\n): boolean {\n  const itemsRef = extractItemsRef(items);\n\n  if (itemsRef) {\n    try {\n      const { schema } = resolveRef<OpenApiSchemaObject>(\n        { $ref: itemsRef },\n        context,\n      );\n      return isResolvedSchemaObjectLike(schema);\n    } catch {\n      return false;\n    }\n  }\n\n  if (isReference(items)) {\n    return false;\n  }\n\n  const schema = items as OpenApiSchemaObject;\n\n  if (isNullableArrayItem(schema)) {\n    return false;\n  }\n\n  if (schema.oneOf || schema.anyOf) {\n    return false;\n  }\n\n  if (schema.allOf) {\n    return true;\n  }\n\n  if (schema.type === 'object' || schema.properties) {\n    return !isAmbiguousInlineItemContext(operationId, parentName);\n  }\n\n  return false;\n}\n\n/**\n * True when `mapValue` is already a bare factory call or a single spread of one.\n */\nfunction isAlreadyFactoryCall(mapValue: string): boolean {\n  return /^(?:\\{\\s*\\.\\.\\.\\s*get\\w+Mock\\(\\)\\s*\\}|get\\w+Mock\\(\\))$/.test(\n    mapValue.trim(),\n  );\n}\n\ninterface ArrayItemFactoryNames {\n  factoryName: string;\n  typeName: string;\n}\n\n/**\n * Derive the exported factory and TypeScript type names for an array item.\n */\nfunction getArrayItemFactoryNames({\n  items,\n  propertyName,\n  parentName,\n  operationId,\n  context,\n}: {\n  items: MockSchema;\n  propertyName: string;\n  parentName?: string;\n  operationId: string;\n  context: ContextSpec;\n}): ArrayItemFactoryNames | undefined {\n  if (!shouldExtractArrayItem(items, context, operationId, parentName)) {\n    return undefined;\n  }\n\n  const itemsRef = extractItemsRef(items);\n  if (itemsRef) {\n    const { name } = getRefInfo(itemsRef, context);\n    const typeName = pascal(name);\n    return {\n      factoryName: `get${typeName}Mock`,\n      typeName,\n    };\n  }\n\n  const itemSuffix = context.output.override.components.schemas.itemSuffix;\n  const typeName = parentName\n    ? `${pascal(parentName)}${pascal(propertyName)}${itemSuffix}`\n    : `${pascal(operationId)}${pascal(propertyName)}${itemSuffix}`;\n  return {\n    factoryName: `get${pascal(operationId)}Response${pascal(propertyName)}ItemMock`,\n    typeName,\n  };\n}\n\ninterface ExtractArrayItemMockOptions {\n  items: MockSchema;\n  propertyName: string;\n  parentName?: string;\n  operationId: string;\n  tags: string[];\n  mapValue: string;\n  context: ContextSpec;\n  splitMockImplementations: string[];\n  imports: GeneratorImport[];\n}\n\n/**\n * When `arrayItems: true`, lift an object-like array item mock body into a\n * reusable exported factory and return the call site expression for `.map()`.\n */\nexport function extractArrayItemMock({\n  items,\n  propertyName,\n  parentName,\n  operationId,\n  tags,\n  mapValue,\n  context,\n  splitMockImplementations,\n  imports,\n}: ExtractArrayItemMockOptions): string | undefined {\n  if (!shouldExtractArrayItemFactories(context)) {\n    return undefined;\n  }\n\n  if (\n    !mapValue ||\n    mapValue === '[]' ||\n    isAlreadyFactoryCall(mapValue) ||\n    hasConsolidatedSchemaFactory(items, context)\n  ) {\n    return undefined;\n  }\n\n  const names = getArrayItemFactoryNames({\n    items,\n    propertyName,\n    parentName,\n    operationId,\n    context,\n  });\n  if (!names) {\n    return undefined;\n  }\n\n  const { factoryName, typeName } = names;\n  const scope = getArrayItemMockFileScope(context, tags);\n  const fileLevelFactories = getFileLevelExtractedFactories(context, scope);\n  const mockOptions = context.output.override.mock;\n  const alreadyExtracted =\n    fileLevelFactories.has(factoryName) ||\n    splitMockImplementations.some((f) =>\n      f.includes(`export const ${factoryName}`),\n    );\n\n  if (!alreadyExtracted) {\n    const { param, returnType, returnCast } = getMockFactorySignatureParts(\n      typeName,\n      mockOptions,\n      {\n        isOverridable: true,\n        overrideType: `Partial<${typeName}>`,\n      },\n    );\n    const spreadPrefix = mapValue.startsWith('...') ? '' : '...';\n    const func = formatMockFactoryDeclaration(\n      factoryName,\n      param,\n      returnType,\n      `{${spreadPrefix}${mapValue}, ...${overrideVarName}}`,\n      returnCast,\n      { terminateStatement: true },\n    );\n    splitMockImplementations.push(func);\n    fileLevelFactories.add(factoryName);\n  }\n\n  imports.push({ name: typeName });\n\n  const strictCast = isStrictMock(mockOptions)\n    ? ` as ${getStrictMockTypeName(typeName)}`\n    : '';\n\n  return `{...${factoryName}()${strictCast}}`;\n}\n","import {\n  type ContextSpec,\n  isReference,\n  type OpenApiSchemaObject,\n  resolveRef,\n} from '@orval/core';\n\nconst DATE_FORMATS = new Set(['date', 'date-time']);\n\nfunction isDateFormat(\n  format: string | undefined,\n): format is 'date' | 'date-time' {\n  return format !== undefined && DATE_FORMATS.has(format);\n}\n\nfunction isSchemaObject(schema: unknown): schema is OpenApiSchemaObject {\n  return (\n    typeof schema === 'object' && schema !== null && !Array.isArray(schema)\n  );\n}\n\nfunction resolveSchema(\n  schema: OpenApiSchemaObject | undefined,\n  context: ContextSpec,\n): OpenApiSchemaObject | undefined {\n  if (!schema) {\n    return undefined;\n  }\n\n  if (isReference(schema)) {\n    return resolveRef<OpenApiSchemaObject>(schema, context).schema;\n  }\n\n  return schema;\n}\n\nfunction mergePropertySchemas(\n  ...schemas: Array<OpenApiSchemaObject | undefined>\n): Record<string, OpenApiSchemaObject> {\n  const merged: Record<string, OpenApiSchemaObject> = {};\n\n  for (const schema of schemas) {\n    if (!schema?.properties) {\n      continue;\n    }\n\n    for (const [key, prop] of Object.entries(schema.properties)) {\n      if (isSchemaObject(prop)) {\n        merged[key] = prop;\n      }\n    }\n  }\n\n  return merged;\n}\n\nfunction getEffectiveScalarFormat(\n  resolved: OpenApiSchemaObject | undefined,\n  context: ContextSpec,\n): 'date' | 'date-time' | undefined {\n  if (!resolved) {\n    return undefined;\n  }\n\n  if (isDateFormat(resolved.format)) {\n    return resolved.format;\n  }\n\n  const oneOf = resolved.oneOf as OpenApiSchemaObject[] | undefined;\n  const anyOf = resolved.anyOf as OpenApiSchemaObject[] | undefined;\n\n  for (const variant of [...(oneOf ?? []), ...(anyOf ?? [])]) {\n    const resolvable =\n      isReference(variant) || isSchemaObject(variant) ? variant : undefined;\n    const resolvedVariant = resolveSchema(resolvable, context);\n\n    if (isDateFormat(resolvedVariant?.format)) {\n      return resolvedVariant.format;\n    }\n  }\n\n  return undefined;\n}\n\n/**\n * Resolves compositional schemas (allOf / oneOf / anyOf) so example formatting\n * can see property formats on nested and referenced types.\n */\nfunction resolveExampleSchema(\n  schema: OpenApiSchemaObject | undefined,\n  context: ContextSpec,\n  seenRefs: Set<string> = new Set(),\n): OpenApiSchemaObject | undefined {\n  if (!schema) {\n    return undefined;\n  }\n\n  if (isReference(schema)) {\n    const ref = schema.$ref;\n    if (ref && seenRefs.has(ref)) {\n      return resolveRef<OpenApiSchemaObject>(schema, context).schema;\n    }\n    if (ref) {\n      seenRefs = new Set(seenRefs).add(ref);\n    }\n  }\n\n  const resolved = resolveSchema(schema, context);\n  if (!resolved) {\n    return undefined;\n  }\n\n  const allOf = resolved.allOf as OpenApiSchemaObject[] | undefined;\n  const oneOf = resolved.oneOf as OpenApiSchemaObject[] | undefined;\n  const anyOf = resolved.anyOf as OpenApiSchemaObject[] | undefined;\n  const compositors = [...(allOf ?? []), ...(oneOf ?? []), ...(anyOf ?? [])];\n\n  const properties = mergePropertySchemas(\n    resolved,\n    ...compositors.map((sub) => resolveExampleSchema(sub, context, seenRefs)),\n  );\n  // OpenApiSchemaObject includes AnyOtherAttribute; cast before spread (see object.ts).\n  const baseResolved = resolved as Record<string, unknown>;\n\n  if (resolved.type === 'array' && isSchemaObject(resolved.items)) {\n    const items = resolveExampleSchema(resolved.items, context, seenRefs);\n    const itemProperties = items?.properties;\n    const normalizedItems =\n      itemProperties && Object.keys(itemProperties).length > 0\n        ? { type: 'object' as const, properties: itemProperties }\n        : items;\n\n    return {\n      ...baseResolved,\n      ...(Object.keys(properties).length > 0 ? { properties } : {}),\n      items: normalizedItems ?? resolved.items,\n    } as OpenApiSchemaObject;\n  }\n\n  if (Object.keys(properties).length > 0) {\n    return {\n      ...baseResolved,\n      properties,\n    } as OpenApiSchemaObject;\n  }\n\n  if (compositors.length > 0 && (oneOf ?? anyOf)) {\n    const variantProperties = mergePropertySchemas(\n      ...compositors.map((sub) => resolveExampleSchema(sub, context, seenRefs)),\n    );\n\n    if (Object.keys(variantProperties).length > 0) {\n      return {\n        type: 'object',\n        properties: variantProperties,\n      };\n    }\n  }\n\n  const scalarFormat = getEffectiveScalarFormat(resolved, context);\n  if (scalarFormat) {\n    return {\n      ...baseResolved,\n      format: scalarFormat,\n    } as OpenApiSchemaObject;\n  }\n\n  return resolved;\n}\n\nexport function formatScalarExampleValue(\n  example: unknown,\n  format: string | undefined,\n  context: ContextSpec,\n): string {\n  if (\n    context.output.override.useDates &&\n    typeof example === 'string' &&\n    isDateFormat(format)\n  ) {\n    return `new Date(${JSON.stringify(example)})`;\n  }\n\n  return JSON.stringify(example);\n}\n\nfunction formatLiteralValue(\n  example: unknown,\n  schema: OpenApiSchemaObject | undefined,\n  context: ContextSpec,\n): string {\n  if (example === null) {\n    return 'null';\n  }\n\n  if (example === undefined) {\n    return 'undefined';\n  }\n\n  const resolved = resolveExampleSchema(schema, context);\n\n  if (Array.isArray(example)) {\n    const itemsSchema =\n      resolved?.type === 'array' && isSchemaObject(resolved.items)\n        ? resolveExampleSchema(resolved.items, context)\n        : resolved;\n\n    return `[${example.map((item) => formatLiteralValue(item, itemsSchema, context)).join(', ')}]`;\n  }\n\n  if (typeof example === 'object') {\n    const properties = resolved?.properties ?? {};\n\n    const entries = Object.entries(example as Record<string, unknown>).map(\n      ([key, value]) => {\n        const propSchema = properties[key];\n        const resolvedProp = isSchemaObject(propSchema)\n          ? resolveExampleSchema(propSchema, context)\n          : undefined;\n        const safeKey = /^[a-zA-Z_$][\\w$]*$/.test(key)\n          ? key\n          : JSON.stringify(key);\n\n        return `${safeKey}: ${formatLiteralValue(value, resolvedProp, context)}`;\n      },\n    );\n\n    return `{ ${entries.join(', ')} }`;\n  }\n\n  if (\n    context.output.override.useDates &&\n    typeof example === 'string' &&\n    isDateFormat(getEffectiveScalarFormat(resolved, context))\n  ) {\n    return `new Date(${JSON.stringify(example)})`;\n  }\n\n  return JSON.stringify(example);\n}\n\nexport function formatSchemaExampleValue(\n  example: unknown,\n  schema: OpenApiSchemaObject | undefined,\n  context: ContextSpec,\n): string {\n  if (!context.output.override.useDates || schema === undefined) {\n    return JSON.stringify(example);\n  }\n\n  return formatLiteralValue(example, schema, context);\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport {\n  type ContextSpec,\n  EnumGeneration,\n  type GeneratorImport,\n  getRefInfo,\n  isReference,\n  isString,\n  jsStringLiteralEscape,\n  mergeDeep,\n  type MockOptions,\n  type OpenApiSchemaObject,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { isFakerVersionV9 } from '../compatible-v9';\nimport { DEFAULT_FORMAT_MOCK } from '../constants';\nimport {\n  getNullable,\n  resolveMockOverride,\n  resolveMockValue,\n} from '../resolvers';\nimport { extractArrayItemMock } from './array-item-factory';\nimport { formatSchemaExampleValue } from '../format-example-value';\nimport { getMockObject } from './object';\n\ninterface GetMockScalarOptions {\n  item: MockSchemaObject;\n  imports: GeneratorImport[];\n  mockOptions?: MockOptions;\n  operationId: string;\n  isRef?: boolean;\n  tags: string[];\n  combine?: {\n    separator: 'allOf' | 'oneOf' | 'anyOf';\n    includedProperties: string[];\n  };\n  context: ContextSpec;\n  // This is used to prevent recursion when combining schemas\n  // When an element is added to the array, it means on this iteration, we've already seen this property\n  existingReferencedProperties: string[];\n  // Tracks the current contiguous `allOf` composition to break cyclic\n  // inheritance; threaded through to `combineSchemasMock`.\n  // See `existingReferencedAllOfRefs` docs in getters/combine.ts.\n  existingReferencedAllOfRefs?: string[];\n  splitMockImplementations: string[];\n  // This is used to add the overrideResponse to the object\n  allowOverride?: boolean;\n}\n\nexport function getMockScalar({\n  item,\n  imports,\n  mockOptions,\n  operationId,\n  tags,\n  combine,\n  context,\n  existingReferencedProperties,\n  existingReferencedAllOfRefs = [],\n  splitMockImplementations,\n  allowOverride = false,\n}: GetMockScalarOptions): MockDefinition {\n  const safeMockOptions: MockOptions = mockOptions ?? {};\n  const nonNullableOption = safeMockOptions.nonNullable;\n  // Add the property to the existing properties to validate on object recursion\n  if (item.isRef) {\n    existingReferencedProperties = [...existingReferencedProperties, item.name];\n  }\n\n  const operationProperty = resolveMockOverride(\n    safeMockOptions.operations?.[operationId]?.properties,\n    item,\n    nonNullableOption,\n  );\n\n  if (operationProperty) {\n    return operationProperty;\n  }\n\n  let overrideTag: { properties: Record<string, unknown> } = {\n    properties: {},\n  };\n  const sortedTags = Object.entries(safeMockOptions.tags ?? {}).toSorted(\n    (a, b) => a[0].localeCompare(b[0], 'en', { numeric: true }),\n  );\n  for (const [tag, options] of sortedTags) {\n    if (!tags.includes(tag)) {\n      continue;\n    }\n    overrideTag = mergeDeep(overrideTag, options);\n  }\n\n  const tagProperty = resolveMockOverride(\n    overrideTag.properties,\n    item,\n    nonNullableOption,\n  );\n\n  if (tagProperty) {\n    return tagProperty;\n  }\n\n  // Schema-scoped overrides (#override.mock.schemas): apply only to properties\n  // of a named schema. `item.parentName` is the enclosing schema name, set when\n  // an object property is resolved (see getters/object.ts) — so the same\n  // property name can mock differently per schema. More specific\n  // operation/tag rules above still win; this beats the global `properties`.\n  const schemaName = item.parentName;\n  const schemaProperty = schemaName\n    ? resolveMockOverride(\n        safeMockOptions.schemas?.[schemaName]?.properties,\n        item,\n        nonNullableOption,\n      )\n    : undefined;\n\n  if (schemaProperty) {\n    return schemaProperty;\n  }\n\n  const property = resolveMockOverride(\n    safeMockOptions.properties,\n    item,\n    nonNullableOption,\n  );\n\n  if (property) {\n    return property;\n  }\n\n  if (\n    context.output.override.mock?.useExamples ||\n    safeMockOptions.useExamples\n  ) {\n    // OAS 3.0 inputs go through @scalar/openapi-parser's upgrade(), which\n    // rewrites property-level `example: <value>` into `examples: [<value>]`\n    // and deletes the singular field. Fall back to the array form so this\n    // option keeps working post-upgrade.\n    const propertyExample =\n      item.example === undefined\n        ? Array.isArray(item.examples) && item.examples.length > 0\n          ? item.examples[0]\n          : undefined\n        : item.example;\n    if (propertyExample !== undefined) {\n      return {\n        value: formatSchemaExampleValue(\n          propertyExample,\n          item as OpenApiSchemaObject,\n          context,\n        ),\n        imports: [],\n        name: item.name,\n        overrided: true,\n      };\n    }\n  }\n\n  const formatOverrides = safeMockOptions.format ?? {};\n  const ALL_FORMAT: Record<string, string> = {\n    ...DEFAULT_FORMAT_MOCK,\n    ...Object.fromEntries(\n      Object.entries(formatOverrides).filter(\n        (entry): entry is [string, string] => typeof entry[1] === 'string',\n      ),\n    ),\n  };\n\n  // Both OpenAPI 3.1 `type: [..., 'null']` and OpenAPI 3.0 `nullable: true`\n  // reach here as a null union, because @scalar/openapi-parser upgrades 3.0\n  // inputs to 3.1 before mock generation. When this getter wraps the value via\n  // `getNullable` it flags the returned MockDefinition with `nullWrapped` so the\n  // object property layer does not add a second `arrayElement([..., null])`.\n  const isNullable = Array.isArray(item.type) && item.type.includes('null');\n  const nullWrapped = isNullable && !nonNullableOption;\n  // The @scalar/openapi-parser upgrader rewrites `format: binary` to\n  // `contentMediaType: application/octet-stream` when upgrading OAS 3.0 → 3.1;\n  // treat both equivalently so the mock emits the binary format value\n  // (ArrayBuffer) instead of falling through to the string case.\n  const schemaContentMediaType = (item as OpenApiSchemaObject).contentMediaType;\n  if (\n    !item.format &&\n    schemaContentMediaType === 'application/octet-stream' &&\n    ALL_FORMAT.binary\n  ) {\n    return {\n      value: getNullable(ALL_FORMAT.binary, isNullable, nonNullableOption),\n      imports: [],\n      name: item.name,\n      overrided: false,\n      nullWrapped,\n    };\n  }\n  if (item.format && ALL_FORMAT[item.format]) {\n    let value = ALL_FORMAT[item.format];\n\n    const dateFormats = ['date', 'date-time'];\n    if (dateFormats.includes(item.format) && context.output.override.useDates) {\n      value = `new Date(${value})`;\n    }\n\n    return {\n      value: getNullable(value, isNullable, nonNullableOption),\n      imports: [],\n      name: item.name,\n      overrided: false,\n      nullWrapped,\n    };\n  }\n\n  const type = getItemType(item);\n  const isFakerV9 =\n    !!context.output.packageJson &&\n    isFakerVersionV9(context.output.packageJson);\n\n  switch (type) {\n    case 'number':\n    case 'integer': {\n      const intFunction =\n        context.output.override.useBigInt &&\n        (item.format === 'int64' || item.format === 'uint64')\n          ? 'bigInt'\n          : 'int';\n      // Handle exclusiveMinimum/exclusiveMaximum for both OpenAPI 3.0 (boolean) and 3.1 (number).\n      // OpenAPI 3.0: booleans indicating whether minimum/maximum is exclusive — use minimum/maximum as the bound.\n      // OpenAPI 3.1: numbers representing the exclusive boundary value — use directly.\n      const numMin = (\n        typeof item.exclusiveMinimum === 'number'\n          ? item.exclusiveMinimum\n          : (item.minimum ?? safeMockOptions.numberMin)\n      ) as number | undefined;\n      const numMax = (\n        typeof item.exclusiveMaximum === 'number'\n          ? item.exclusiveMaximum\n          : (item.maximum ?? safeMockOptions.numberMax)\n      ) as number | undefined;\n      const intParts: string[] = [];\n      if (numMin !== undefined) intParts.push(`min: ${numMin}`);\n      if (numMax !== undefined) intParts.push(`max: ${numMax}`);\n      if (isFakerV9 && item.multipleOf !== undefined)\n        intParts.push(`multipleOf: ${item.multipleOf}`);\n      let value = getNullable(\n        `faker.number.${intFunction}(${intParts.length > 0 ? `{${intParts.join(', ')}}` : ''})`,\n        isNullable,\n        nonNullableOption,\n      );\n      if (type === 'number') {\n        const floatParts: string[] = [];\n        if (numMin !== undefined) floatParts.push(`min: ${numMin}`);\n        if (numMax !== undefined) floatParts.push(`max: ${numMax}`);\n        if (isFakerV9 && item.multipleOf !== undefined) {\n          floatParts.push(`multipleOf: ${item.multipleOf}`);\n        } else if (safeMockOptions.fractionDigits !== undefined) {\n          floatParts.push(`fractionDigits: ${safeMockOptions.fractionDigits}`);\n        }\n        value = getNullable(\n          `faker.number.float(${floatParts.length > 0 ? `{${floatParts.join(', ')}}` : ''})`,\n          isNullable,\n          nonNullableOption,\n        );\n      }\n      const numberImports: GeneratorImport[] = [];\n\n      if (item.enum) {\n        value = getEnum(\n          item,\n          numberImports,\n          context,\n          existingReferencedProperties,\n          'number',\n        );\n      } else if ('const' in item) {\n        value = JSON.stringify(item.const);\n      }\n\n      return {\n        value,\n        enums: item.enum,\n        imports: numberImports,\n        name: item.name,\n        // `item.enum` / `const` reassign `value` after `getNullable`, discarding\n        // the wrap — so only the plain numeric path is actually null-wrapped.\n        nullWrapped: nullWrapped && !item.enum && !('const' in item),\n      };\n    }\n\n    case 'boolean': {\n      let value = 'faker.datatype.boolean()';\n      const booleanImports: GeneratorImport[] = [];\n      if (item.enum) {\n        value = getEnum(\n          item,\n          booleanImports,\n          context,\n          existingReferencedProperties,\n          'boolean',\n        );\n      } else if ('const' in item) {\n        value = JSON.stringify(item.const);\n      }\n      return {\n        value,\n        enums: item.enum,\n        imports: booleanImports,\n        name: item.name,\n      };\n    }\n\n    case 'array': {\n      if (!item.items) {\n        return { value: '[]', imports: [], name: item.name };\n      }\n\n      const itemsRef = extractItemsRef(item.items);\n      if (\n        itemsRef &&\n        existingReferencedProperties.includes(\n          getRefInfo(itemsRef, context).name,\n        )\n      ) {\n        return { value: '[]', imports: [], name: item.name };\n      }\n\n      // If `items` is a single-element `allOf`/`oneOf`/`anyOf` wrapping a\n      // `$ref`, treat it as a direct `$ref`. This avoids double-wrapping when\n      // the inner schema is an enum array (whose `getEnum` already emits\n      // `faker.helpers.arrayElements(...)`) and keeps recursion semantics in\n      // line with direct-$ref items.\n      const resolvedItems =\n        itemsRef && !('$ref' in item.items) ? { $ref: itemsRef } : item.items;\n\n      const {\n        value,\n        enums,\n        imports: resolvedImports,\n      } = resolveMockValue({\n        schema: {\n          ...resolvedItems,\n          name: item.name,\n          parentName: item.parentName,\n          path: item.path ? `${item.path}.[]` : '#.[]',\n        },\n        combine,\n        mockOptions,\n        operationId,\n        tags,\n        context,\n        imports,\n        existingReferencedProperties,\n        existingReferencedAllOfRefs,\n        splitMockImplementations,\n      });\n\n      if (enums) {\n        return {\n          value,\n          imports: resolvedImports,\n          name: item.name,\n        };\n      }\n\n      let mapValue = value;\n\n      const extractedItemCall = extractArrayItemMock({\n        items: resolvedItems,\n        propertyName: item.name,\n        parentName: item.parentName,\n        operationId,\n        tags,\n        mapValue,\n        context,\n        splitMockImplementations,\n        imports: resolvedImports,\n      });\n      if (extractedItemCall) {\n        mapValue = extractedItemCall;\n      }\n\n      if (\n        combine &&\n        !value.startsWith('faker') &&\n        !value.startsWith('{') &&\n        !value.startsWith('Array.from')\n      ) {\n        mapValue = `{${value}}`;\n      }\n\n      // Use global defaults for the missing bound only when they do not\n      // invert the range; otherwise reuse the explicit schema bound so we\n      // never invent values the user did not supply (and never produce\n      // min > max). This also avoids relying on faker's internal default\n      // upper bound when only `minItems` is specified, which can otherwise\n      // produce very large arrays.\n      const arrSchemaMin = item.minItems;\n      const arrSchemaMax = item.maxItems;\n      const arrGlobalMin = safeMockOptions.arrayMin;\n      const arrGlobalMax = safeMockOptions.arrayMax;\n\n      let arrMin: number | undefined;\n      if (arrSchemaMin !== undefined) {\n        arrMin = arrSchemaMin;\n      } else if (arrSchemaMax === undefined) {\n        arrMin = arrGlobalMin;\n      } else if (arrGlobalMin === undefined || arrGlobalMin > arrSchemaMax) {\n        arrMin = arrSchemaMax;\n      } else {\n        arrMin = arrGlobalMin;\n      }\n\n      let arrMax: number | undefined;\n      if (arrSchemaMax !== undefined) {\n        arrMax = arrSchemaMax;\n      } else if (arrSchemaMin === undefined) {\n        arrMax = arrGlobalMax;\n      } else if (arrGlobalMax === undefined || arrGlobalMax < arrSchemaMin) {\n        arrMax = arrSchemaMin;\n      } else {\n        arrMax = arrGlobalMax;\n      }\n\n      const arrParts: string[] = [];\n      if (arrMin !== undefined) arrParts.push(`min: ${arrMin}`);\n      if (arrMax !== undefined) arrParts.push(`max: ${arrMax}`);\n      const arrLengthArg =\n        arrParts.length > 0 ? `{${arrParts.join(', ')}}` : '';\n\n      return {\n        value:\n          `Array.from({ length: faker.number.int(` +\n          `${arrLengthArg}) ` +\n          `}, (_, i) => i + 1).map(() => (${mapValue}))`,\n        imports: resolvedImports,\n        name: item.name,\n      };\n    }\n\n    case 'string': {\n      // faker.string.alpha's `length: { min, max }` form requires BOTH bounds.\n      // When only one side is schema-specified, fall back to the global default\n      // for the missing side only if it does not invert the range; otherwise\n      // reuse the explicit bound so we never invent values the user did not\n      // supply (and never produce min > max).\n      const schemaMin = item.minLength;\n      const schemaMax = item.maxLength;\n      const globalMin = safeMockOptions.stringMin;\n      const globalMax = safeMockOptions.stringMax;\n\n      let strMin: number | undefined;\n      if (schemaMin !== undefined) {\n        strMin = schemaMin;\n      } else if (schemaMax === undefined) {\n        strMin = globalMin;\n      } else if (globalMin === undefined || globalMin > schemaMax) {\n        strMin = schemaMax;\n      } else {\n        strMin = globalMin;\n      }\n\n      let strMax: number | undefined;\n      if (schemaMax !== undefined) {\n        strMax = schemaMax;\n      } else if (schemaMin === undefined) {\n        strMax = globalMax;\n      } else if (globalMax === undefined || globalMax < schemaMin) {\n        strMax = schemaMin;\n      } else {\n        strMax = globalMax;\n      }\n\n      // faker.string.alpha's `length: { min, max }` requires both bounds, so\n      // only emit a length argument when we have a complete pair. If only one\n      // side could be resolved (e.g., no schema bound and only one global is\n      // configured) we fall back to faker's own default length.\n      const strLenParts: string[] = [];\n      if (strMin !== undefined && strMax !== undefined) {\n        strLenParts.push(`min: ${strMin}`, `max: ${strMax}`);\n      }\n      const length =\n        strLenParts.length > 0 ? `{length: {${strLenParts.join(', ')}}}` : '';\n      let value = `faker.string.alpha(${length})`;\n      const stringImports: GeneratorImport[] = [];\n\n      if (item.enum) {\n        value = getEnum(\n          item,\n          stringImports,\n          context,\n          existingReferencedProperties,\n          'string',\n        );\n      } else if (item.pattern) {\n        value = `faker.helpers.fromRegExp(${JSON.stringify(item.pattern)})`;\n      } else if ('const' in item) {\n        value = JSON.stringify((item as OpenApiSchemaObject).const);\n      }\n\n      return {\n        value: getNullable(value, isNullable, nonNullableOption),\n        enums: item.enum,\n        name: item.name,\n        imports: stringImports,\n        nullWrapped,\n      };\n    }\n\n    case 'null': {\n      return {\n        value: 'null',\n        imports: [],\n        name: item.name,\n      };\n    }\n\n    default: {\n      if (item.enum) {\n        const enumImports: GeneratorImport[] = [];\n        const value = getEnum(\n          item,\n          enumImports,\n          context,\n          existingReferencedProperties,\n        );\n\n        return {\n          value,\n          enums: item.enum,\n          imports: enumImports,\n          name: item.name,\n        };\n      }\n\n      return getMockObject({\n        item,\n        mockOptions,\n        operationId,\n        tags,\n        combine: combine\n          ? {\n              separator: combine.separator,\n              includedProperties: [],\n            }\n          : undefined,\n        context,\n        imports,\n        existingReferencedProperties,\n        existingReferencedAllOfRefs,\n        splitMockImplementations,\n        allowOverride,\n      });\n    }\n  }\n}\n\n// Returns the $ref string from array `items` — either direct ($ref on items\n// itself) or wrapped in a single-element allOf/oneOf/anyOf composition.\n// Multi-element compositions return undefined to preserve combine semantics.\nexport function extractItemsRef(items: MockSchema): string | undefined {\n  if (isReference(items)) {\n    return items.$ref;\n  }\n  for (const key of ['allOf', 'oneOf', 'anyOf'] as const) {\n    const composed = items[key] as MockSchema[] | undefined;\n    if (\n      Array.isArray(composed) &&\n      composed.length === 1 &&\n      isReference(composed[0])\n    ) {\n      return composed[0].$ref;\n    }\n  }\n  return;\n}\n\nfunction getItemType(item: MockSchemaObject) {\n  if (Array.isArray(item.type) && item.type.includes('null')) {\n    const typesWithoutNull = item.type.filter((x) => x !== 'null');\n    const itemType =\n      typesWithoutNull.length === 1 ? typesWithoutNull[0] : typesWithoutNull;\n\n    return itemType;\n  }\n\n  if (item.type) return item.type;\n  if (!item.enum) return;\n\n  const uniqTypes = new Set(item.enum.map((value) => typeof value));\n  if (uniqTypes.size > 1) return;\n\n  const type = [...uniqTypes.values()].at(0);\n  if (!type) return;\n  return ['string', 'number'].includes(type) ? type : undefined;\n}\n\nfunction getEnum(\n  item: MockSchemaObject,\n  imports: GeneratorImport[],\n  context: ContextSpec,\n  existingReferencedProperties: string[],\n  type?: 'string' | 'number' | 'boolean',\n) {\n  if (!item.enum) return '';\n  const joinedEnumValues = item.enum\n    .filter((e) => e !== null) // TODO fix type, e can absolutely be null\n    .map((e) =>\n      type === 'string' || (type === undefined && isString(e))\n        ? `'${jsStringLiteralEscape(e)}'`\n        : e,\n    )\n    .join(',');\n\n  let enumValue = `[${joinedEnumValues}]`;\n  if (context.output.override.enumGenerationType === EnumGeneration.ENUM) {\n    if (item.isRef || existingReferencedProperties.length === 0) {\n      enumValue += ` as ${item.name}${item.name.endsWith('[]') ? '' : '[]'}`;\n      imports.push({ name: item.name });\n    } else {\n      const parentReference = existingReferencedProperties.at(-1);\n      if (!parentReference) {\n        return '';\n      }\n\n      enumValue += ` as ${parentReference}['${item.name}']`;\n      if (!item.path?.endsWith('[]')) enumValue += '[]';\n      imports.push({\n        name: parentReference,\n      });\n    }\n  } else {\n    enumValue += ' as const';\n  }\n\n  // But if the value is a reference, we can use the object directly via the imports and using Object.values.\n  if (item.isRef && type === 'string') {\n    enumValue = `Object.values(${item.name})`;\n    imports.push({\n      name: item.name,\n      values: true,\n    });\n  }\n\n  return item.path?.endsWith('[]')\n    ? `faker.helpers.arrayElements(${enumValue})`\n    : `faker.helpers.arrayElement(${enumValue})`;\n}\n","import {\n  type ContextSpec,\n  type GeneratorImport,\n  getRefInfo,\n  isFunction,\n  isReference,\n  type MockOptions,\n  type OpenApiSchemaObject,\n  OutputMockType,\n  pascal,\n} from '@orval/core';\nimport { prop } from 'remeda';\n\nimport {\n  formatMockFactoryDeclaration,\n  getMockFactorySignatureParts,\n  getStrictMockTypeName,\n  isStrictMock,\n} from '../../mock-types';\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { overrideVarName } from '../getters';\nimport { getMockScalar } from '../getters/scalar';\nimport { mergeReturnedMockImports } from '../imports';\n\nfunction isRegex(key: string) {\n  return key.startsWith('/') && key.endsWith('/');\n}\n\n// Drop `[]` array-items segments from a dotted JSON-pointer-ish path. Treating\n// the marker as transparent for property override matching lets a bare\n// property-name override apply wherever the property literally appears, even\n// inside arrays (#2465). Segment-based so both leading (`[].id`) and embedded\n// (`foo.[].id`) markers normalize equivalently.\nfunction stripArrayMarkerSegments(s: string): string {\n  return s\n    .split('.')\n    .filter((seg) => seg !== '[]')\n    .join('.');\n}\n\nexport function resolveMockOverride(\n  properties: Record<string, unknown> | undefined = {},\n  item: OpenApiSchemaObject & { name: string; path?: string },\n  nonNullableOption?: boolean,\n) {\n  const path = item.path ?? `#.${item.name}`;\n  // Regex keys still match against the original (un-normalized) path so users\n  // can opt into array-scoped targeting explicitly if ever needed.\n  const normalizedPath = stripArrayMarkerSegments(path);\n  const entries = Object.entries(properties);\n\n  // Tier 1 — explicit matches: regex (against name or full path) and exact\n  // array-transparent path. Checked first so a specific override (regex or\n  // dotted path like `country.name`) always wins over the bare-name fallback.\n  let property = entries.find(([key]) => {\n    if (isRegex(key)) {\n      const regex = new RegExp(key.slice(1, -1));\n      if (regex.test(item.name) || regex.test(path)) {\n        return true;\n      }\n    }\n\n    if (`#.${stripArrayMarkerSegments(key)}` === normalizedPath) {\n      return true;\n    }\n\n    return false;\n  });\n\n  // Tier 2 — bare property-name transparency (#3470): a dot-less key applies\n  // wherever the property literally appears, including inside non-array nested\n  // objects, mirroring the array transparency from #2465. Only reached when no\n  // explicit Tier 1 key matched, so it never overrides a more specific key.\n  if (!property) {\n    property = entries.find(\n      ([key]) => !isRegex(key) && !key.includes('.') && key === item.name,\n    );\n  }\n\n  if (!property) {\n    return;\n  }\n\n  return {\n    value: getNullable(\n      property[1] as string,\n      isNullableSchema(item),\n      nonNullableOption,\n    ),\n    imports: [],\n    name: item.name,\n    overrided: true,\n  };\n}\n\n/** OpenAPI 3.0 `nullable: true` or 3.1 `type` unions that include `null`. */\nexport function isNullableSchema(schema: unknown): boolean {\n  if (!schema || typeof schema !== 'object') {\n    return false;\n  }\n\n  const { type, nullable } = schema as {\n    type?: unknown;\n    nullable?: unknown;\n  };\n\n  return nullable === true || (Array.isArray(type) && type.includes('null'));\n}\n\n/** When `nonNullableOption` is true (`override.mock.nonNullable`), omit the null branch. */\nexport function getNullable(\n  value: string,\n  nullable?: boolean,\n  nonNullableOption?: boolean,\n) {\n  if (!nullable || nonNullableOption) {\n    return value;\n  }\n\n  return `faker.helpers.arrayElement([${value}, null])`;\n}\n\n/**\n * True when the active faker generator entry asks for consolidated schema\n * mock factories and the output is configured to host them (i.e. there is a\n * dedicated schemas directory we can import `index.faker` from). Used to\n * decide whether an operation factory should inline a `$ref`'d schema or\n * delegate to its `get<X>Mock` factory.\n */\nfunction shouldDelegateToSchemaFactories(context: ContextSpec): boolean {\n  if (!context.output.schemas) return false;\n  // The duplicate-type guard in `normalizeMocksOption` (see\n  // `packages/orval/src/utils/options.ts`) ensures at most one faker entry\n  // exists per output, so finding the first one that opted into schemas is\n  // unambiguous today and remains correct if that guard ever loosens.\n  const fakerEntry = context.output.mock.generators.find(\n    (g) =>\n      !isFunction(g) && g.type === OutputMockType.FAKER && g.schemas === true,\n  );\n  return !!fakerEntry;\n}\n\n/**\n * Predicate: this `$ref` points at a top-level `#/components/schemas/<Name>`\n * (vs. a parameter, response, or inline schema). Only those have a\n * corresponding `get<Name>Mock` factory in the consolidated faker file.\n */\nfunction isComponentsSchemaRef(refPaths: string[] | undefined): boolean {\n  return (\n    Array.isArray(refPaths) &&\n    refPaths[0] === 'components' &&\n    refPaths[1] === 'schemas'\n  );\n}\n\n/**\n * Returns true when an operation- or tag-level mock override touches any\n * property declared on the referenced schema. In that case we must inline\n * the schema body so the override actually applies; the shared\n * `get<X>Mock` factory has no knowledge of operation-scoped overrides.\n *\n * Schema-scoped overrides (`override.mock.schemas`) need no special handling\n * here: they target a schema's *own* properties, so the schema's `get<X>Mock`\n * factory — built with the same mock options — already bakes them in, and\n * delegating to it preserves the override.\n *\n * Reuses `resolveMockOverride` so the same matching rules apply as for\n * regular property mocks — bare name, regex (`/.../`), and exact-path\n * (`#.foo.bar`). The parent's `path` (where the `$ref` appears in the\n * surrounding schema) gets composed into each synthetic property item so\n * exact-path overrides like `#.color.value` resolve correctly.\n */\nfunction hasOverrideTouchingSchema(\n  schemaProperties: Record<string, unknown> | undefined,\n  mockOptions: MockOptions | undefined,\n  operationId: string,\n  tags: string[],\n  parentPath: string | undefined,\n): boolean {\n  if (!schemaProperties) return false;\n  const propertyNames = Object.keys(schemaProperties);\n  if (propertyNames.length === 0) return false;\n\n  const overrideBuckets: (Record<string, unknown> | undefined)[] = [\n    mockOptions?.operations?.[operationId]?.properties,\n  ];\n  for (const tag of tags) {\n    overrideBuckets.push(mockOptions?.tags?.[tag]?.properties);\n  }\n\n  return overrideBuckets.some((bucket) => {\n    if (!bucket) return false;\n    return propertyNames.some((propertyName) => {\n      const synthetic = {\n        name: propertyName,\n        path: parentPath ? `${parentPath}.${propertyName}` : propertyName,\n      } as OpenApiSchemaObject & { name: string; path?: string };\n      return !!resolveMockOverride(bucket, synthetic);\n    });\n  });\n}\n\ninterface ResolveMockValueOptions {\n  schema: MockSchema;\n  operationId: string;\n  mockOptions?: MockOptions;\n  tags: string[];\n  combine?: {\n    separator: 'allOf' | 'oneOf' | 'anyOf';\n    includedProperties: string[];\n  };\n  context: ContextSpec;\n  imports: GeneratorImport[];\n  // This is used to prevent recursion when combining schemas\n  // When an element is added to the array, it means on this iteration, we've already seen this property\n  existingReferencedProperties: string[];\n  // Tracks the current contiguous `allOf` composition to break cyclic\n  // inheritance; threaded through to `combineSchemasMock`.\n  // See `existingReferencedAllOfRefs` docs in getters/combine.ts.\n  existingReferencedAllOfRefs?: string[];\n  splitMockImplementations: string[];\n  allowOverride?: boolean;\n}\n\nexport function resolveMockValue({\n  schema,\n  mockOptions,\n  operationId,\n  tags,\n  combine,\n  context,\n  imports,\n  existingReferencedProperties,\n  existingReferencedAllOfRefs = [],\n  splitMockImplementations,\n  allowOverride,\n}: ResolveMockValueOptions): MockDefinition & { type?: string } {\n  if (isReference(schema)) {\n    const schemaReference = schema as MockSchema & {\n      path?: string;\n      required?: string[];\n      nullable?: boolean;\n    };\n    const schemaRefPath = typeof schema.$ref === 'string' ? schema.$ref : '';\n    const { name, refPaths } = getRefInfo(schemaRefPath, context);\n\n    const schemaRef = Array.isArray(refPaths)\n      ? (prop(\n          context.spec,\n          // @ts-expect-error: [ts2556] refPaths are not guaranteed to be valid keys of the spec\n          ...refPaths,\n        ) as Partial<OpenApiSchemaObject>)\n      : undefined;\n\n    const newSchema = {\n      ...schemaRef,\n      name,\n      path: schemaReference.path,\n      isRef: true,\n      required: [\n        ...((schemaRef?.required as string[] | undefined) ?? []),\n        ...(schemaReference.required ?? []),\n      ],\n      ...(schemaReference.nullable === undefined\n        ? {}\n        : { nullable: schemaReference.nullable }),\n    } as MockSchemaObject;\n\n    // When a discriminator parent ($ref-loaded schema with both `discriminator`\n    // and `oneOf`) is being expanded inside an `allOf` chain AND the chain\n    // is rooted at one of that parent's mapping targets (i.e. the current\n    // schema *is* a variant via `allOf: [parent, ...extras]`), the parent's\n    // `oneOf` is descriptive of the union, not additive to this specific\n    // variant. Re-expanding it inlines sibling factory calls into the derived\n    // variant's mock body (#2155). Drop the `oneOf` side here; the parent\n    // still contributes its own `properties` and other base attributes\n    // through the remaining schema fields.\n    //\n    // The mapping-target check guards against cases like\n    // `someField: allOf: [<discriminator parent>]` (e.g. #one-of-nested\n    // `Example2.expiry`), where the surrounding schema is NOT a variant of\n    // the parent and we still need the full union to randomize over.\n    //\n    // Symmetrically with the oneOf-side fix in `combineSchemasMock` (#3429),\n    // also drop the discriminator key from the parent's `properties`: each\n    // variant already carries a constrained discriminator value via\n    // `resolveDiscriminators`, so leaving the parent's free-choice enum in\n    // would just emit dead code (immediately shadowed by the variant's\n    // constrained value through spread merge).\n    if (\n      combine?.separator === 'allOf' &&\n      newSchema.discriminator &&\n      newSchema.oneOf\n    ) {\n      const parentDiscriminator = newSchema.discriminator as {\n        propertyName?: string;\n        mapping?: Record<string, string>;\n      };\n      const mappingTargetNames = parentDiscriminator.mapping\n        ? Object.values(parentDiscriminator.mapping).map((ref) =>\n            pascal(ref.split('/').pop() ?? ''),\n          )\n        : [];\n      const expandingAsVariant = existingReferencedProperties.some((refName) =>\n        mappingTargetNames.includes(refName),\n      );\n\n      if (expandingAsVariant) {\n        const mutableSchema = newSchema as Record<string, unknown>;\n        delete mutableSchema.oneOf;\n        const parentProperties = newSchema.properties as\n          | Record<string, unknown>\n          | undefined;\n        if (\n          parentDiscriminator.propertyName &&\n          parentProperties &&\n          parentDiscriminator.propertyName in parentProperties\n        ) {\n          const remainingProperties = Object.fromEntries(\n            Object.entries(parentProperties).filter(\n              ([key]) => key !== parentDiscriminator.propertyName,\n            ),\n          );\n          if (Object.keys(remainingProperties).length === 0) {\n            delete mutableSchema.properties;\n          } else {\n            mutableSchema.properties = remainingProperties;\n          }\n          const parentRequired = newSchema.required as string[] | undefined;\n          if (Array.isArray(parentRequired)) {\n            const filteredRequired = parentRequired.filter(\n              (key) => key !== parentDiscriminator.propertyName,\n            );\n            if (filteredRequired.length === 0) {\n              delete mutableSchema.required;\n            } else {\n              mutableSchema.required = filteredRequired;\n            }\n          }\n        }\n      }\n    }\n\n    const newSeparator = newSchema.allOf\n      ? 'allOf'\n      : newSchema.oneOf\n        ? 'oneOf'\n        : 'anyOf';\n\n    // When schema-level faker factories are being emitted (`schemas: true`),\n    // delegate to `get<X>Mock()` instead of inlining the body. The factory\n    // already encodes the same fields, so this both deduplicates the output\n    // and lets a single source of truth drive shared mocks.\n    const canDelegate =\n      shouldDelegateToSchemaFactories(context) &&\n      isComponentsSchemaRef(refPaths) &&\n      !hasOverrideTouchingSchema(\n        schemaRef?.properties as Record<string, unknown> | undefined,\n        mockOptions,\n        operationId,\n        tags,\n        schemaReference.path,\n      );\n\n    if (canDelegate) {\n      const factoryName = `get${pascal(name)}Mock`;\n      const factoryImport: GeneratorImport = {\n        name: factoryName,\n        values: true,\n        schemaFactory: true,\n      };\n      const isObjectLike =\n        newSchema.type === 'object' ||\n        !!newSchema.allOf ||\n        resolvesToObjectLike(newSchema, context);\n      const mockTypeName = getStrictMockTypeName(pascal(name));\n      const strictMockTypeImport: GeneratorImport | undefined =\n        isStrictMock(mockOptions) && isObjectLike\n          ? {\n              name: mockTypeName,\n              values: false,\n              schemaFactory: true,\n            }\n          : undefined;\n      // For object-like refs the historical inline output is `{ ...body }`\n      // so the spread form keeps callers (combineSchemasMock, object\n      // properties) working without other changes. For everything else\n      // (scalars, arrays, nullables) emit the bare call.\n      //\n      // A `oneOf`/`anyOf` is only object-like when *every* branch resolves to\n      // an object. A composition of primitives (e.g. `number | string`) makes\n      // the factory return a primitive union, which is not spreadable: emitting\n      // `{ ...get<X>Mock() }` is invalid TypeScript (TS2698) and would discard\n      // the value as `{}` at runtime, so it must use the bare call (#3200).\n      const strictObjectCast =\n        isStrictMock(mockOptions) && isObjectLike ? ` as ${mockTypeName}` : '';\n      const callValue = isObjectLike\n        ? `{ ...${factoryName}()${strictObjectCast} }`\n        : `${factoryName}()`;\n\n      return {\n        value: getNullable(\n          callValue,\n          Boolean(newSchema.nullable),\n          mockOptions?.nonNullable,\n        ),\n        imports: strictMockTypeImport\n          ? [factoryImport, strictMockTypeImport]\n          : [factoryImport],\n        name: newSchema.name,\n        type: getType(newSchema),\n        nullWrapped: Boolean(newSchema.nullable) && !mockOptions?.nonNullable,\n      };\n    }\n\n    const importsBefore = imports.length;\n    const scalar = getMockScalar({\n      item: newSchema,\n      mockOptions,\n      operationId,\n      tags,\n      combine: combine\n        ? {\n            separator:\n              combine.separator === 'anyOf' ? newSeparator : combine.separator,\n            includedProperties:\n              newSeparator === 'allOf' ? [] : combine.includedProperties,\n          }\n        : undefined,\n      context,\n      imports,\n      existingReferencedProperties,\n      existingReferencedAllOfRefs,\n      splitMockImplementations,\n      allowOverride,\n    });\n    if (\n      scalar.value &&\n      (newSchema.type === 'object' || newSchema.allOf) &&\n      combine?.separator === 'oneOf'\n    ) {\n      const funcName = `get${pascal(operationId)}Response${pascal(newSchema.name)}Mock`;\n      if (\n        !splitMockImplementations.some((f) =>\n          f.includes(`export const ${funcName}`),\n        )\n      ) {\n        const discriminator = newSchema.discriminator as\n          | { propertyName?: string }\n          | undefined;\n        const discriminatedProperty = discriminator?.propertyName;\n\n        let overrideType = `Partial<${newSchema.name}>`;\n        if (discriminatedProperty) {\n          overrideType = `Omit<${overrideType}, '${discriminatedProperty}'>`;\n        }\n\n        const { param, returnType, returnCast } = getMockFactorySignatureParts(\n          newSchema.name,\n          mockOptions,\n          {\n            isOverridable: true,\n            overrideType,\n          },\n        );\n        const func = formatMockFactoryDeclaration(\n          funcName,\n          param,\n          returnType,\n          `{${scalar.value.startsWith('...') ? '' : '...'}${scalar.value}, ...${overrideVarName}}`,\n          returnCast,\n          { terminateStatement: true },\n        );\n        splitMockImplementations.push(func);\n      }\n\n      scalar.value = newSchema.nullable\n        ? `${funcName}()`\n        : `{...${funcName}()}`;\n\n      const typeImport: GeneratorImport = {\n        name: newSchema.name,\n        values: false,\n      };\n      scalar.imports.push(typeImport);\n      if (scalar.imports !== imports) {\n        imports.push(typeImport);\n      }\n    }\n\n    mergeReturnedMockImports(imports, importsBefore, scalar.imports);\n\n    return {\n      ...scalar,\n      type: getType(newSchema),\n    };\n  }\n\n  const importsBefore = imports.length;\n  const scalar = getMockScalar({\n    item: schema,\n    mockOptions,\n    operationId,\n    tags,\n    combine,\n    context,\n    imports,\n    existingReferencedProperties,\n    existingReferencedAllOfRefs,\n    splitMockImplementations,\n    allowOverride,\n  });\n  mergeReturnedMockImports(imports, importsBefore, scalar.imports);\n  return {\n    ...scalar,\n    type: getType(schema),\n  };\n}\n\nfunction getType(schema: MockSchema) {\n  if (isReference(schema)) {\n    return;\n  }\n\n  return (\n    (schema.type as string | undefined) ??\n    (schema.properties ? 'object' : schema.items ? 'array' : undefined)\n  );\n}\n\n// Whether a schema (or a `$ref` to one) ultimately produces an object mock.\n// Used to decide if a delegated `get<X>Mock()` call may be spread into an\n// object literal. Object-like schemas are `type: 'object'`, `properties`,\n// `additionalProperties` and `allOf`; a `oneOf`/`anyOf` qualifies only when\n// every branch resolves to an object. A union containing a primitive\n// (e.g. `number | string`) does not, since spreading that union is invalid\n// TypeScript. `seen` carries the `$ref`s on the current resolution path to\n// guard against self-referential compositions. A fresh copy is taken at each\n// `$ref` hop so sibling branches sharing a `$ref` don't falsely trip the guard.\nfunction resolvesToObjectLike(\n  schema: MockSchema,\n  context: ContextSpec,\n  seen = new Set<string>(),\n): boolean {\n  let resolved: Partial<OpenApiSchemaObject> | undefined;\n\n  if (isReference(schema)) {\n    // A non-string or already-visited `$ref` can't be resolved further here.\n    if (typeof schema.$ref !== 'string' || seen.has(schema.$ref)) {\n      return false;\n    }\n    seen = new Set(seen).add(schema.$ref);\n    const { refPaths } = getRefInfo(schema.$ref, context);\n    resolved = Array.isArray(refPaths)\n      ? (prop(\n          context.spec,\n          // @ts-expect-error: refPaths are not guaranteed to be valid keys of the spec\n          ...refPaths,\n        ) as Partial<OpenApiSchemaObject>)\n      : undefined;\n  } else {\n    resolved = schema as Partial<OpenApiSchemaObject>;\n  }\n\n  if (!resolved) {\n    return false;\n  }\n\n  if (\n    resolved.type === 'object' ||\n    resolved.properties ||\n    resolved.additionalProperties ||\n    resolved.allOf\n  ) {\n    return true;\n  }\n\n  const branches = (resolved.oneOf ?? resolved.anyOf) as\n    | MockSchema[]\n    | undefined;\n  if (branches && branches.length > 0) {\n    return branches.every((branch) =>\n      resolvesToObjectLike(branch, context, seen),\n    );\n  }\n\n  return false;\n}\n","import {\n  type ContextSpec,\n  type GeneratorImport,\n  getRefInfo,\n  isReference,\n  isSchema,\n  type MockOptions,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { resolveMockValue } from '../resolvers';\n\nfunction getReferenceName(\n  ref: string | undefined,\n  context: ContextSpec,\n): string {\n  if (!ref) return '';\n\n  return getRefInfo(ref, context).name;\n}\n\ninterface CombineSchemasMockOptions {\n  item: MockSchemaObject;\n  separator: 'allOf' | 'oneOf' | 'anyOf';\n  operationId: string;\n  mockOptions?: MockOptions;\n  tags: string[];\n  combine?: {\n    separator: 'allOf' | 'oneOf' | 'anyOf';\n    includedProperties: string[];\n  };\n  context: ContextSpec;\n  imports: GeneratorImport[];\n  // This is used to prevent recursion when combining schemas\n  // When an element is added to the array, it means on this iteration, we've already seen this property\n  existingReferencedProperties: string[];\n  // Schemas on the *current contiguous `allOf` composition* — the chain of\n  // `allOf` bases entered to reach the schema being expanded right now. This is\n  // the canonical doc for this field; other sites just point here.\n  //\n  // Why it exists: to break cycles built purely from top-level named schemas\n  // that extend each other (`A: allOf[B]`, `B: allOf[A]`). There every hop is a\n  // `$ref`, so `item.isRef` is always true and the `!item.isRef` clause in\n  // `shouldSkipRef` never fires; this chain catches the repeat instead. (It is\n  // narrower than `existingReferencedProperties`, which records every visited\n  // `$ref` — variants and properties included.)\n  //\n  // Invariant: it grows only on a direct `allOf` -> `allOf` base descent, and\n  // resets to `[]` when crossing into a `oneOf`/`anyOf` variant or a property\n  // value. Those boundaries begin a fresh mock instance whose own `allOf` base\n  // is legitimate and must still be pulled in, so keeping the chain across them\n  // would wrongly skip that base. Such re-entry can't loop forever anyway —\n  // `existingReferencedProperties` already bounds it.\n  existingReferencedAllOfRefs?: string[];\n  splitMockImplementations: string[];\n}\n\nexport function combineSchemasMock({\n  item,\n  separator,\n  mockOptions,\n  operationId,\n  tags,\n  combine,\n  context,\n  imports,\n  existingReferencedProperties,\n  existingReferencedAllOfRefs = [],\n  splitMockImplementations,\n}: CombineSchemasMockOptions): MockDefinition {\n  const combineImports: GeneratorImport[] = [];\n  const includedProperties: string[] = [...(combine?.includedProperties ?? [])];\n  const separatorItems = (item[separator] ?? []) as MockSchema[];\n  const itemRequired = item.required as string[] | undefined;\n\n  const isRefAndNotExisting =\n    isReference(item) && !existingReferencedProperties.includes(item.name);\n\n  // When a oneOf schema declares a discriminator with a mapping AND the\n  // discriminator property is also declared on the parent's `properties`,\n  // skip that property here. Each variant already encodes a constrained value\n  // for it via `resolveDiscriminators`; emitting the parent's free-choice enum\n  // alongside the picked variant would override the constrained value and\n  // guarantee a discriminator mismatch (#2155).\n  const discriminator = item.discriminator as\n    | { propertyName?: string; mapping?: Record<string, string> }\n    | undefined;\n  const itemProperties = item.properties as Record<string, unknown> | undefined;\n  const discriminatorPropertyName =\n    separator === 'oneOf' &&\n    discriminator?.mapping &&\n    discriminator.propertyName &&\n    itemProperties &&\n    discriminator.propertyName in itemProperties\n      ? discriminator.propertyName\n      : undefined;\n\n  const itemEntriesForResolve = Object.entries(item).filter(\n    ([key]) => key !== separator,\n  );\n  if (discriminatorPropertyName && itemProperties) {\n    const propertiesIdx = itemEntriesForResolve.findIndex(\n      ([key]) => key === 'properties',\n    );\n    if (propertiesIdx !== -1) {\n      const filteredProperties = Object.fromEntries(\n        Object.entries(itemProperties).filter(\n          ([key]) => key !== discriminatorPropertyName,\n        ),\n      );\n      if (Object.keys(filteredProperties).length === 0) {\n        itemEntriesForResolve.splice(propertiesIdx, 1);\n      } else {\n        itemEntriesForResolve[propertiesIdx] = [\n          'properties',\n          filteredProperties,\n        ];\n      }\n    }\n    // Keep `required` in sync with the filtered properties — leaving the\n    // discriminator key in `required` would describe a schema whose required\n    // field is missing from `properties`.\n    const requiredIdx = itemEntriesForResolve.findIndex(\n      ([key]) => key === 'required',\n    );\n    if (requiredIdx !== -1 && Array.isArray(itemRequired)) {\n      const filteredRequired = itemRequired.filter(\n        (key) => key !== discriminatorPropertyName,\n      );\n      if (filteredRequired.length === 0) {\n        itemEntriesForResolve.splice(requiredIdx, 1);\n      } else {\n        itemEntriesForResolve[requiredIdx] = ['required', filteredRequired];\n      }\n    }\n  }\n\n  const hasResolvableProperties = itemEntriesForResolve.some(\n    ([key]) => key === 'properties',\n  );\n\n  const itemResolvedValue =\n    isRefAndNotExisting || hasResolvableProperties\n      ? resolveMockValue({\n          schema: Object.fromEntries(itemEntriesForResolve) as MockSchemaObject,\n          combine: {\n            separator: 'allOf',\n            includedProperties: [],\n          },\n          mockOptions,\n          operationId,\n          tags,\n          context,\n          imports,\n          existingReferencedProperties,\n          existingReferencedAllOfRefs,\n          splitMockImplementations,\n        })\n      : undefined;\n\n  includedProperties.push(...(itemResolvedValue?.includedProperties ?? []));\n  combineImports.push(...(itemResolvedValue?.imports ?? []));\n  let containsOnlyPrimitiveValues = true;\n\n  const allRequiredFields: string[] = [];\n  if (separator === 'allOf') {\n    if (itemRequired) {\n      allRequiredFields.push(...itemRequired);\n    }\n    for (const val of separatorItems) {\n      if (isSchema(val) && val.required) {\n        allRequiredFields.push(...(val.required as string[]));\n      }\n    }\n  }\n\n  let value = separator === 'allOf' ? '' : 'faker.helpers.arrayElement([';\n\n  for (const val of separatorItems) {\n    const refName = isReference(val) ? getReferenceName(val.$ref, context) : '';\n    // For allOf: skip a base that would otherwise re-expand forever, in any of:\n    //   - `refName === item.name`: the schema lists itself as its own base;\n    //   - an already-seen *inline* base (`!item.isRef`): a circular inline allOf;\n    //   - a ref already on the contiguous allOf chain\n    //     (`existingReferencedAllOfRefs`): a top-level allOf cycle — see that\n    //     field's docs above.\n    // Top-level refs (`item.isRef`) are otherwise allowed through so a schema\n    // still inherits its base properties.\n    // For oneOf/anyOf: skip a variant pointing back to an already-visited schema,\n    // otherwise polymorphic recursion re-expands forever\n    // (e.g. Base.Parent → oneOf [Derived → allOf [Base]]).\n    const shouldSkipRef =\n      separator === 'allOf'\n        ? refName &&\n          (refName === item.name ||\n            (existingReferencedProperties.includes(refName) && !item.isRef) ||\n            existingReferencedAllOfRefs.includes(refName))\n        : refName && existingReferencedProperties.includes(refName);\n\n    if (shouldSkipRef) {\n      if (separatorItems.length === 1) {\n        value = 'undefined';\n      }\n      continue;\n    }\n\n    // the required fields in this schema need to be considered\n    // in the sub schema under the allOf key\n    const schema = (() => {\n      if (separator !== 'allOf' || allRequiredFields.length === 0) {\n        return {\n          ...val,\n          name: item.name,\n          path: item.path ?? '#',\n        };\n      }\n\n      const valWithRequired = val as MockSchema & { required?: string[] };\n      const valRequired = valWithRequired.required;\n      const combinedRequired = valRequired\n        ? [...allRequiredFields, ...valRequired]\n        : allRequiredFields;\n\n      return {\n        ...val,\n        name: item.name,\n        path: item.path ?? '#',\n        required: [...new Set(combinedRequired)],\n      };\n    })();\n\n    const resolvedValue = resolveMockValue({\n      schema,\n      combine: {\n        separator,\n        includedProperties:\n          separator === 'oneOf'\n            ? (itemResolvedValue?.includedProperties ?? [])\n            : includedProperties,\n      },\n      mockOptions,\n      operationId,\n      tags,\n      context,\n      imports,\n      existingReferencedProperties,\n      // Grow the chain on an allOf base hop; reset it on a oneOf/anyOf variant\n      // (a fresh instance). See `existingReferencedAllOfRefs` docs above.\n      existingReferencedAllOfRefs:\n        separator === 'allOf' && refName\n          ? [...existingReferencedAllOfRefs, refName]\n          : [],\n      splitMockImplementations,\n    });\n\n    combineImports.push(...resolvedValue.imports);\n    includedProperties.push(...(resolvedValue.includedProperties ?? []));\n\n    if (resolvedValue.value === '{}') {\n      containsOnlyPrimitiveValues = false;\n      continue;\n    }\n\n    if (separator === 'allOf') {\n      if (resolvedValue.value.startsWith('{') || !resolvedValue.type) {\n        containsOnlyPrimitiveValues = false;\n        value += `...${resolvedValue.value},`;\n        continue;\n      }\n\n      if (resolvedValue.type === 'object') {\n        containsOnlyPrimitiveValues = false;\n        value += resolvedValue.value.startsWith('faker')\n          ? `...${resolvedValue.value},`\n          : `...{${resolvedValue.value}},`;\n        continue;\n      }\n    }\n\n    value += `${resolvedValue.value},`;\n  }\n  // When every oneOf/anyOf variant was skipped (e.g. all $refs were already on\n  // the resolution stack) the loop leaves `value` at its initial opener. Emit\n  // `undefined` instead of closing it as `faker.helpers.arrayElement([])`,\n  // which throws at runtime.\n  const isEmptyArrayElement =\n    separator !== 'allOf' && value === 'faker.helpers.arrayElement([';\n\n  let finalValue =\n    value === 'undefined' || isEmptyArrayElement\n      ? 'undefined'\n      : // containsOnlyPrimitiveValues isn't just true, it's being set to false inside the above reduce and the type system doesn't detect it\n        `${separator === 'allOf' && !containsOnlyPrimitiveValues ? '{' : ''}${value}${separator === 'allOf' ? (containsOnlyPrimitiveValues ? '' : '}') : '])'}`;\n  if (itemResolvedValue) {\n    finalValue = finalValue.startsWith('...')\n      ? `...{${finalValue}, ${itemResolvedValue.value}}`\n      : `{...${finalValue}, ${itemResolvedValue.value}}`;\n  }\n  if (finalValue.endsWith(',')) {\n    finalValue = finalValue.slice(0, Math.max(0, finalValue.length - 1));\n  }\n\n  return {\n    value: finalValue,\n    imports: combineImports,\n    name: item.name,\n    includedProperties,\n  };\n}\n","import { camel, sanitize } from '@orval/core';\n\nconst hasParam = (path: string): boolean => /[^{]*{[\\w*_-]*}.*/.test(path);\n\nconst getRoutePath = (path: string): string => {\n  const matches = /([^{]*){?([\\w*_-]*)}?(.*)/.exec(path);\n  if (!matches?.length) return path; // impossible due to regexp grouping here, but for TS\n\n  const prev = matches[1];\n  const param = sanitize(camel(matches[2]), {\n    es5keyword: true,\n    underscore: true,\n    dash: true,\n    dot: true,\n  });\n  const next = hasParam(matches[3]) ? getRoutePath(matches[3]) : matches[3];\n\n  return hasParam(path) ? `${prev}:${param}${next}` : `${prev}${param}${next}`;\n};\n\nexport const getRouteMSW = (route: string, baseUrl = '*') => {\n  route = route.replaceAll(':', String.raw`\\\\:`);\n  const splittedRoute = route.split('/');\n  let resolvedRoute = baseUrl;\n\n  for (const [index, path] of splittedRoute.entries()) {\n    if (!path && !index) {\n      continue;\n    }\n\n    if (!path.includes('{')) {\n      resolvedRoute = `${resolvedRoute}/${path}`;\n      continue;\n    }\n\n    resolvedRoute = `${resolvedRoute}/${getRoutePath(path)}`;\n  }\n\n  return resolvedRoute;\n};\n","import {\n  type ContextSpec,\n  generalJSTypesWithArray,\n  type GeneratorImport,\n  type GlobalMockOptions,\n  isFunction,\n  type MockOptions,\n  type NormalizedOverrideOutput,\n  type OpenApiDocument,\n  resolveRef,\n  type ResReqTypesValue,\n  stringify,\n} from '@orval/core';\n\nimport { formatSchemaExampleValue } from '../faker/format-example-value';\nimport { getMockScalar } from '../faker/getters';\nimport {\n  appendImportsDelta,\n  collectSplitMockTypeImports,\n} from '../faker/imports';\n\nfunction getMockPropertiesWithoutFunc(\n  properties:\n    | Record<string, unknown>\n    | ((spec: OpenApiDocument) => Record<string, unknown>),\n  spec: OpenApiDocument,\n) {\n  const resolvedProperties =\n    typeof properties === 'function' ? properties(spec) : properties;\n  const mockProperties: Record<string, string> = {};\n\n  for (const [key, value] of Object.entries(resolvedProperties)) {\n    const implementation = isFunction(value)\n      ? `(${String(value)})()`\n      : (stringify(value) ?? 'undefined');\n\n    mockProperties[key] = implementation.replaceAll(\n      /import_faker\\.defaults|import_faker\\.faker|_faker\\.faker/g,\n      'faker',\n    );\n  }\n\n  return mockProperties;\n}\n\nexport function getMockWithoutFunc(\n  spec: OpenApiDocument,\n  override?: NormalizedOverrideOutput,\n): MockOptions {\n  const operations = override?.operations\n    ? (() => {\n        const operationMocks: Exclude<MockOptions['operations'], undefined> =\n          {};\n\n        for (const [key, value] of Object.entries(override.operations)) {\n          if (!value?.mock?.properties) {\n            continue;\n          }\n\n          operationMocks[key] = {\n            properties: getMockPropertiesWithoutFunc(\n              value.mock.properties,\n              spec,\n            ),\n          };\n        }\n\n        return operationMocks;\n      })()\n    : undefined;\n  const tags = override?.tags\n    ? (() => {\n        const tagMocks: Exclude<MockOptions['tags'], undefined> = {};\n\n        for (const [key, value] of Object.entries(override.tags)) {\n          if (!value?.mock?.properties) {\n            continue;\n          }\n\n          tagMocks[key] = {\n            properties: getMockPropertiesWithoutFunc(\n              value.mock.properties,\n              spec,\n            ),\n          };\n        }\n\n        return tagMocks;\n      })()\n    : undefined;\n  const schemas = override?.mock?.schemas\n    ? (() => {\n        const schemaMocks: Exclude<MockOptions['schemas'], undefined> = {};\n\n        for (const [key, value] of Object.entries(override.mock.schemas)) {\n          if (!value?.properties) {\n            continue;\n          }\n\n          schemaMocks[key] = {\n            properties: getMockPropertiesWithoutFunc(value.properties, spec),\n          };\n        }\n\n        return schemaMocks;\n      })()\n    : undefined;\n\n  return {\n    arrayMin: override?.mock?.arrayMin,\n    arrayMax: override?.mock?.arrayMax,\n    stringMin: override?.mock?.stringMin,\n    stringMax: override?.mock?.stringMax,\n    numberMin: override?.mock?.numberMin,\n    numberMax: override?.mock?.numberMax,\n    required: override?.mock?.required,\n    nonNullable: override?.mock?.nonNullable,\n    fractionDigits: override?.mock?.fractionDigits,\n    ...(override?.mock?.properties\n      ? {\n          properties: getMockPropertiesWithoutFunc(\n            override.mock.properties,\n            spec,\n          ),\n        }\n      : {}),\n    ...(override?.mock?.format\n      ? {\n          format: getMockPropertiesWithoutFunc(override.mock.format, spec),\n        }\n      : {}),\n    ...(operations ? { operations } : {}),\n    ...(tags ? { tags } : {}),\n    ...(schemas ? { schemas } : {}),\n  };\n}\n\nfunction getMockNumberOption(\n  mockOptionsWithoutFunc: Record<string, unknown>,\n  key: 'arrayMin' | 'arrayMax',\n) {\n  const value = mockOptionsWithoutFunc[key];\n  return typeof value === 'number' ? value : undefined;\n}\n\nfunction getMockScalarJsTypes(\n  definition: string,\n  mockOptionsWithoutFunc: Record<string, unknown>,\n) {\n  const isArray = definition.endsWith('[]');\n  const type = isArray ? definition.slice(0, -2) : definition;\n  const arrayMin = getMockNumberOption(mockOptionsWithoutFunc, 'arrayMin');\n  const arrayMax = getMockNumberOption(mockOptionsWithoutFunc, 'arrayMax');\n\n  switch (type) {\n    case 'number': {\n      const numArrParts: string[] = [];\n      if (arrayMin !== undefined) numArrParts.push(`min: ${arrayMin}`);\n      if (arrayMax !== undefined) numArrParts.push(`max: ${arrayMax}`);\n      const numArrArg =\n        numArrParts.length > 0 ? `{${numArrParts.join(', ')}}` : '';\n      return isArray\n        ? `Array.from({length: faker.number.int(${numArrArg})}, () => faker.number.int())`\n        : 'faker.number.int()';\n    }\n    case 'string': {\n      const strArrParts: string[] = [];\n      if (arrayMin !== undefined) strArrParts.push(`min: ${arrayMin}`);\n      if (arrayMax !== undefined) strArrParts.push(`max: ${arrayMax}`);\n      const strArrArg =\n        strArrParts.length > 0 ? `{${strArrParts.join(', ')}}` : '';\n      return isArray\n        ? `Array.from({length: faker.number.int(${strArrArg})}, () => faker.word.sample())`\n        : 'faker.word.sample()';\n    }\n    default: {\n      return 'undefined';\n    }\n  }\n}\n\ninterface GetResponsesMockDefinitionOptions {\n  operationId: string;\n  tags: string[];\n  returnType: string;\n  responses: ResReqTypesValue[];\n  mockOptionsWithoutFunc: Record<string, unknown>;\n  transformer?: (value: unknown, definition: string) => string;\n  context: ContextSpec;\n  mockOptions?: GlobalMockOptions;\n  splitMockImplementations: string[];\n}\n\nfunction getExampleEntries(examples: unknown): unknown[] {\n  if (Array.isArray(examples)) {\n    return examples;\n  }\n\n  if (examples && typeof examples === 'object') {\n    return Object.values(examples as Record<string, unknown>);\n  }\n\n  return [];\n}\n\nfunction unwrapExampleValue(example: unknown): unknown {\n  if (example && typeof example === 'object' && 'value' in example) {\n    return (example as { value?: unknown }).value;\n  }\n\n  return example;\n}\n\nexport function getResponsesMockDefinition({\n  operationId,\n  tags,\n  returnType,\n  responses,\n  mockOptionsWithoutFunc,\n  transformer,\n  context,\n  mockOptions,\n  splitMockImplementations,\n}: GetResponsesMockDefinitionOptions) {\n  const result = {\n    definitions: [] as string[],\n    imports: [] as GeneratorImport[],\n  };\n\n  for (const response of responses) {\n    const { value: definition, example, examples, imports, isRef } = response;\n    let { originalSchema } = response;\n\n    if (context.output.override.mock?.useExamples || mockOptions?.useExamples) {\n      const exampleValue = unwrapExampleValue(\n        example ??\n          originalSchema?.example ??\n          getExampleEntries(examples)[0] ??\n          getExampleEntries(originalSchema?.examples)[0],\n      );\n\n      if (exampleValue !== undefined) {\n        const formatted = formatSchemaExampleValue(\n          exampleValue,\n          originalSchema,\n          context,\n        );\n        result.definitions.push(\n          transformer ? transformer(formatted, returnType) : formatted,\n        );\n        continue;\n      }\n    }\n\n    if (!definition || generalJSTypesWithArray.includes(definition)) {\n      const value = getMockScalarJsTypes(definition, mockOptionsWithoutFunc);\n\n      result.definitions.push(\n        transformer ? transformer(value, returnType) : value,\n      );\n      continue;\n    }\n\n    if (!originalSchema && definition === 'Blob') {\n      originalSchema = { type: 'string', format: 'binary' };\n    } else if (!originalSchema) {\n      continue;\n    }\n\n    const resolvedSchema = resolveRef(originalSchema, context).schema;\n\n    const responseImports = imports ?? [];\n    const importsBefore = responseImports.length;\n    const scalar = getMockScalar({\n      item: {\n        ...(resolvedSchema as Record<string, unknown>),\n        name: definition,\n        ...(context.output.override.enumGenerationType === 'enum' && isRef\n          ? { isRef: true }\n          : {}),\n      },\n      imports: responseImports,\n      mockOptions: mockOptionsWithoutFunc,\n      operationId,\n      tags,\n      context,\n      existingReferencedProperties: [],\n      splitMockImplementations,\n      allowOverride: true,\n    });\n\n    appendImportsDelta(result.imports, responseImports, importsBefore);\n    if (scalar.imports !== responseImports) {\n      appendImportsDelta(result.imports, scalar.imports, 0);\n    }\n    result.definitions.push(\n      transformer ? transformer(scalar.value, returnType) : scalar.value,\n    );\n  }\n\n  appendImportsDelta(\n    result.imports,\n    collectSplitMockTypeImports(splitMockImplementations),\n    0,\n  );\n\n  return result;\n}\n\ninterface GetMockDefinitionOptions {\n  operationId: string;\n  tags: string[];\n  returnType: string;\n  responses: ResReqTypesValue[];\n  imports: GeneratorImport[];\n  override: NormalizedOverrideOutput;\n  transformer?: (value: unknown, definition: string) => string;\n  context: ContextSpec;\n  mockOptions?: GlobalMockOptions;\n  splitMockImplementations: string[];\n}\n\nexport function getMockDefinition({\n  operationId,\n  tags,\n  returnType,\n  responses,\n  override,\n  transformer,\n  context,\n  mockOptions,\n  splitMockImplementations,\n}: GetMockDefinitionOptions) {\n  const mockOptionsWithoutFunc = getMockWithoutFunc(context.spec, override);\n\n  const { definitions, imports } = getResponsesMockDefinition({\n    operationId,\n    tags,\n    returnType,\n    responses,\n    mockOptionsWithoutFunc,\n    transformer,\n    context,\n    mockOptions,\n    splitMockImplementations,\n  });\n\n  return {\n    definition: '[' + definitions.join(', ') + ']',\n    definitions,\n    imports,\n  };\n}\n\nexport function getMockOptionsDataOverride(\n  operationTags: string[],\n  operationId: string,\n  override: NormalizedOverrideOutput,\n) {\n  const responseOverride =\n    override.operations[operationId]?.mock?.data ??\n    operationTags\n      .map((operationTag) => override.tags[operationTag]?.mock?.data)\n      .find((e) => e !== undefined);\n  const implementation = isFunction(responseOverride)\n    ? `(${String(responseOverride)})()`\n    : stringify(responseOverride);\n\n  return implementation?.replaceAll(\n    /import_faker\\.defaults|import_faker\\.faker|_faker\\.faker/g,\n    'faker',\n  );\n}\n","import {\n  type ClientMockGeneratorBuilder,\n  escapeRegExp,\n  generateDependencyImports,\n  type GenerateMockImports,\n  type GeneratorDependency,\n  type GeneratorImport,\n  type GeneratorOptions,\n  type GeneratorVerbOptions,\n  type GlobalMockOptions,\n  isFunction,\n  isMswMock,\n  isObject,\n  pascal,\n  type ResReqTypesValue,\n  type StrictMockSchemaKind,\n} from '@orval/core';\n\nimport { getDelay } from '../delay';\nimport { getRouteMSW, overrideVarName } from '../faker/getters';\nimport {\n  applyStrictMockReturnType,\n  collectStrictMockSchemaTypeNamesFromImplementation,\n  formatMockFactoryDeclaration,\n  getMockFactorySignatureParts,\n  getSchemaTypeNamesFromResponses,\n  getSimpleSchemaReturnType,\n  getStrictMockSchemaKindsFromResponses,\n  isStrictMock,\n  mergeStrictMockSchemaKinds,\n  mergeStrictMockSchemaTypeNames,\n} from '../mock-types';\nimport { getMockDefinition, getMockOptionsDataOverride } from './mocks';\n\nfunction getMSWDependencies(\n  options?: GlobalMockOptions,\n): GeneratorDependency[] {\n  const locale = options?.locale;\n\n  const fakerDependency: GeneratorDependency = {\n    exports: [{ name: 'faker', values: true }],\n    dependency: locale ? `@faker-js/faker/locale/${locale}` : '@faker-js/faker',\n  };\n\n  const hasDelay =\n    options && isMswMock(options) ? options.delay !== false : true;\n\n  const exports = [\n    { name: 'http', values: true },\n    { name: 'HttpResponse', values: true },\n    { name: 'RequestHandlerOptions', values: false },\n  ];\n\n  if (hasDelay) {\n    exports.push({ name: 'delay', values: true });\n  }\n\n  return [{ exports, dependency: 'msw' }, fakerDependency];\n}\n\nexport const generateMSWImports: GenerateMockImports = ({\n  implementation,\n  imports,\n  projectName,\n  hasSchemaDir,\n  isAllowSyntheticDefaultImports,\n  options,\n}) => {\n  return generateDependencyImports(\n    implementation,\n    [...getMSWDependencies(options), ...imports],\n    projectName,\n    hasSchemaDir,\n    isAllowSyntheticDefaultImports,\n  );\n};\n\nfunction generateDefinition(\n  name: string,\n  route: string,\n  getResponseMockFunctionNameBase: string,\n  handlerNameBase: string,\n  { operationId, response, verb, tags }: GeneratorVerbOptions,\n  { override, context, mock }: GeneratorOptions,\n  returnType: string,\n  status: string,\n  responseImports: GeneratorImport[],\n  responses: ResReqTypesValue[],\n  contentTypes: string[],\n  splitMockImplementations: string[],\n) {\n  const oldSplitMockImplementations = [...splitMockImplementations];\n  const { definitions, definition, imports } = getMockDefinition({\n    operationId,\n    tags,\n    returnType,\n    responses,\n    imports: responseImports,\n    override,\n    context,\n    mockOptions: isFunction(mock) ? undefined : mock,\n    splitMockImplementations,\n  });\n\n  const mockData = getMockOptionsDataOverride(tags, operationId, override);\n\n  let value = '';\n\n  if (mockData) {\n    value = mockData;\n  } else if (definitions.length > 1) {\n    value = `faker.helpers.arrayElement(${definition})`;\n  } else if (definitions[0]) {\n    value = definitions[0];\n  }\n\n  const isResponseOverridable = value.includes(overrideVarName);\n  const isTextLikeContentType = (ct: string) =>\n    ct.startsWith('text/') || ct === 'application/xml' || ct.endsWith('+xml');\n  const isTypeExactlyString = (typeExpr: string) =>\n    typeExpr.trim().replaceAll(/^\\(+|\\)+$/g, '') === 'string';\n  const isUnionContainingString = (typeExpr: string) =>\n    typeExpr\n      .split('|')\n      .map((part) => part.trim().replaceAll(/^\\(+|\\)+$/g, ''))\n      .includes('string');\n  const isBinaryLikeContentType = (ct: string) =>\n    ct === 'application/octet-stream' ||\n    ct === 'application/pdf' ||\n    ct.startsWith('image/') ||\n    ct.startsWith('audio/') ||\n    ct.startsWith('video/') ||\n    ct.startsWith('font/');\n\n  const preferredContentType = isFunction(mock)\n    ? undefined\n    : (\n        mock as { preferredContentType?: string } | undefined\n      )?.preferredContentType?.toLowerCase();\n  // match preferredContentType against `responses` (not the wider `contentTypes` which mixes success and error MIMEs).\n  const preferredContentTypeMatch = preferredContentType\n    ? responses.find(\n        (r) => r.contentType.toLowerCase() === preferredContentType,\n      )?.contentType\n    : undefined;\n  const contentTypesByPreference = preferredContentTypeMatch\n    ? [preferredContentTypeMatch]\n    : contentTypes;\n  const responsesByPreference = preferredContentTypeMatch\n    ? responses.filter((r) => r.contentType === preferredContentTypeMatch)\n    : responses;\n\n  const hasTextLikeContentType = contentTypes.some((ct) =>\n    isTextLikeContentType(ct),\n  );\n  const isExactlyStringReturnType = isTypeExactlyString(returnType);\n\n  // Keep text helpers for exact string success return types whenever a text-like\n  // media type is available in the declared content types. This prevents a\n  // preferredContentType that matches an error media type from forcing\n  // HttpResponse.json() for text/plain success responses.\n  const isTextResponse =\n    (isExactlyStringReturnType && hasTextLikeContentType) ||\n    contentTypesByPreference.some((ct) => isTextLikeContentType(ct));\n  const isSchemaBinary = (r: ResReqTypesValue) =>\n    r.originalSchema?.format === 'binary' ||\n    (r.originalSchema?.contentMediaType === 'application/octet-stream' &&\n      !r.originalSchema.contentEncoding);\n  const isBinaryResponse =\n    contentTypesByPreference.some((ct) => isBinaryLikeContentType(ct)) ||\n    responsesByPreference.some((r) => isSchemaBinary(r));\n  // Bare ref names of schema-binary responses (include alias for collision-renamed imports).\n  const binaryRefNames = responsesByPreference\n    .filter((r) => isSchemaBinary(r))\n    .flatMap((r) =>\n      r.imports.flatMap((imp) =>\n        imp.alias ? [imp.name, imp.alias] : [imp.name],\n      ),\n    );\n  const isReturnHttpResponse = value && value !== 'undefined';\n\n  const getResponseMockFunctionName = `${getResponseMockFunctionNameBase}${pascal(\n    name,\n  )}`;\n  const handlerName = `${handlerNameBase}${pascal(name)}`;\n\n  const addedSplitMockImplementations = splitMockImplementations.slice(\n    oldSplitMockImplementations.length,\n  );\n  splitMockImplementations.push(...addedSplitMockImplementations);\n  const mockImplementations =\n    addedSplitMockImplementations.length > 0\n      ? `${addedSplitMockImplementations.join('\\n\\n')}\\n\\n`\n      : '';\n\n  const binaryTypeRewriteRegex = new RegExp(\n    String.raw`\\b(?:${['Blob', ...binaryRefNames].map((n) => escapeRegExp(n)).join('|')})\\b`,\n    'g',\n  );\n  const mockReturnType = isBinaryResponse\n    ? returnType.replaceAll(binaryTypeRewriteRegex, 'ArrayBuffer')\n    : returnType;\n\n  // Detect when the return type is a union containing void (e.g. \"Resource | void\"\n  // from endpoints with both 200 JSON and 204 No Content responses). In this case\n  // we need runtime branching so that void responses use `new HttpResponse(null)`\n  // instead of `HttpResponse.json()` which does not accept void/undefined.\n  const isVoidUnionType =\n    mockReturnType !== 'void' &&\n    mockReturnType.split('|').some((part) => part.trim() === 'void');\n  const noContentStatusCode = isVoidUnionType\n    ? (responses.find((r) => r.value === 'void')?.key ?? '204')\n    : undefined;\n  const nonVoidMockReturnType = isVoidUnionType\n    ? mockReturnType\n        .split('|')\n        .filter((part) => part.trim() !== 'void')\n        .join(' | ')\n        .trim()\n    : mockReturnType;\n\n  const hasJsonContentType = contentTypesByPreference.some(\n    (ct) => ct.includes('json') || ct.includes('+json'),\n  );\n  const hasStringReturnType =\n    isTypeExactlyString(mockReturnType) ||\n    isUnionContainingString(mockReturnType);\n  const overrideResponseType = `Partial<Extract<${nonVoidMockReturnType}, object>>`;\n  const shouldPreferJsonResponse = hasJsonContentType && !hasStringReturnType;\n\n  // When the return type is a union containing both string and structured types\n  // (e.g. `string | Pet`) AND both text-like and JSON content types are available,\n  // we need runtime branching to pick the correct HttpResponse helper based on\n  // the actual resolved value type. Without this, objects could be JSON.stringify'd\n  // and served under a text-like Content-Type (e.g. xml/html/plain), which is\n  // semantically incorrect for structured JSON data.\n  const needsRuntimeContentTypeSwitch =\n    isTextResponse &&\n    hasJsonContentType &&\n    hasStringReturnType &&\n    mockReturnType !== 'string';\n\n  const mockOptionsFromOverride = override.mock;\n  const strictMock = isStrictMock(mockOptionsFromOverride);\n  const schemaTypeNames = strictMock\n    ? getSchemaTypeNamesFromResponses(responses)\n    : [];\n  const strictMockReturnType = strictMock\n    ? applyStrictMockReturnType(nonVoidMockReturnType, schemaTypeNames)\n    : nonVoidMockReturnType;\n  const simpleSchemaReturnType = strictMock\n    ? getSimpleSchemaReturnType(nonVoidMockReturnType, schemaTypeNames)\n    : undefined;\n\n  let mockFactoryParam = '';\n  let mockFactoryReturnType = nonVoidMockReturnType;\n  let mockFactoryReturnCast = '';\n\n  if (isResponseOverridable) {\n    if (strictMock && simpleSchemaReturnType) {\n      const signature = getMockFactorySignatureParts(\n        simpleSchemaReturnType,\n        mockOptionsFromOverride,\n        {\n          isOverridable: true,\n          overrideType: overrideResponseType,\n        },\n      );\n      mockFactoryParam = signature.param;\n      mockFactoryReturnType = signature.returnType;\n      mockFactoryReturnCast = signature.returnCast;\n    } else {\n      mockFactoryParam = `overrideResponse: ${overrideResponseType} = {}`;\n      mockFactoryReturnType = strictMock\n        ? strictMockReturnType\n        : nonVoidMockReturnType;\n    }\n  } else if (strictMock) {\n    mockFactoryReturnType = strictMockReturnType;\n  }\n\n  const mockImplementation = isReturnHttpResponse\n    ? `${mockImplementations}${formatMockFactoryDeclaration(\n        getResponseMockFunctionName,\n        mockFactoryParam,\n        mockFactoryReturnType,\n        value,\n        mockFactoryReturnCast,\n        { omitReturnType: Boolean(mockData) },\n      )}\\n\\n`\n    : mockImplementations;\n\n  const delay = getDelay(override, isFunction(mock) ? undefined : mock);\n  const infoParam = 'info';\n  const resolvedResponseExpr = `overrideResponse !== undefined\n    ? (typeof overrideResponse === \"function\" ? await overrideResponse(${infoParam}) : overrideResponse)\n    : ${getResponseMockFunctionName}()`;\n\n  const statusCode = status === 'default' ? 200 : status.replace(/XX$/, '00');\n\n  // Determine the preferred non-JSON content type for binary responses\n  const binaryContentType =\n    (preferredContentTypeMatch &&\n    isBinaryLikeContentType(preferredContentTypeMatch)\n      ? preferredContentTypeMatch\n      : contentTypes.find((ct) => isBinaryLikeContentType(ct))) ??\n    'application/octet-stream';\n\n  // Pick the most specific MSW response helper based on the first\n  // text-like content type so the correct Content-Type header is set.\n  // MSW provides HttpResponse.xml() for application/xml and +xml,\n  // HttpResponse.html() for text/html, and HttpResponse.text() for\n  // all other text/* types.\n  const shouldIgnorePreferredForTextHelper =\n    isExactlyStringReturnType &&\n    !!preferredContentTypeMatch &&\n    !isTextLikeContentType(preferredContentTypeMatch) &&\n    hasTextLikeContentType;\n  const firstTextCt = shouldIgnorePreferredForTextHelper\n    ? contentTypes.find((ct) => isTextLikeContentType(ct))\n    : contentTypesByPreference.find((ct) => isTextLikeContentType(ct));\n  const textHelper =\n    firstTextCt === 'application/xml' || firstTextCt?.endsWith('+xml')\n      ? 'xml'\n      : firstTextCt === 'text/html'\n        ? 'html'\n        : 'text';\n\n  let responseBody: string;\n  // Use a prelude to evaluate the override expression once into a temp variable\n  // (the expression contains `await` so must not be duplicated). Only emit it\n  // when we actually generate a `*ResponseMock()` helper — otherwise the\n  // prelude would reference a function that doesn't exist (issue #3270).\n  let responsePrelude = '';\n  if (isReturnHttpResponse) {\n    if (isBinaryResponse) {\n      responsePrelude = `const binaryBody = ${resolvedResponseExpr};`;\n    } else if (isVoidUnionType || needsRuntimeContentTypeSwitch) {\n      responsePrelude = `const resolvedBody = ${resolvedResponseExpr};`;\n    } else if (isTextResponse && !shouldPreferJsonResponse) {\n      responsePrelude = `const resolvedBody = ${resolvedResponseExpr};\n    const textBody = typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null);`;\n    }\n  }\n  if (!isReturnHttpResponse) {\n    responseBody = `new HttpResponse(null,\n      { status: ${statusCode}\n      })`;\n  } else if (isBinaryResponse) {\n    responseBody = `HttpResponse.arrayBuffer(\n      binaryBody instanceof ArrayBuffer\n        ? binaryBody\n        : new ArrayBuffer(0),\n      { status: ${statusCode},\n        headers: { 'Content-Type': '${binaryContentType}' }\n      })`;\n  } else if (isVoidUnionType) {\n    // Runtime branching for void union types (e.g. 200 JSON + 204 No Content).\n    // When the resolved body is undefined, return an empty response with the\n    // no-content status code; otherwise use the appropriate response helper.\n    let nonVoidBody: string;\n    if (needsRuntimeContentTypeSwitch) {\n      nonVoidBody = `typeof resolvedBody === 'string'\n        ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n        : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n    } else if (isTextResponse && !shouldPreferJsonResponse) {\n      nonVoidBody = `HttpResponse.${textHelper}(\n        typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null),\n        { status: ${statusCode} })`;\n    } else {\n      nonVoidBody = `HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n    }\n    responseBody = `resolvedBody === undefined\n      ? new HttpResponse(null, { status: ${noContentStatusCode} })\n      : ${nonVoidBody}`;\n  } else if (needsRuntimeContentTypeSwitch) {\n    // Runtime branching: when the resolved value is a string, use the\n    // appropriate text helper; otherwise fall back to HttpResponse.json()\n    // so objects are never JSON.stringify'd under a text/xml Content-Type.\n    responseBody = `typeof resolvedBody === 'string'\n      ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n      : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n  } else if (isTextResponse && !shouldPreferJsonResponse) {\n    responseBody = `HttpResponse.${textHelper}(textBody,\n      { status: ${statusCode}\n      })`;\n  } else {\n    responseBody = `HttpResponse.json(${resolvedResponseExpr},\n      { status: ${statusCode}\n      })`;\n  }\n\n  const infoType = `Parameters<Parameters<typeof http.${verb}>[1]>[0]`;\n\n  const handlerImplementation = `\nexport const ${handlerName} = (overrideResponse?: ${mockReturnType} | ((${infoParam}: ${infoType}) => Promise<${mockReturnType}> | ${mockReturnType}), options?: RequestHandlerOptions) => {\n  return http.${verb}('${route}', async (${infoParam}: ${infoType}) => {${\n    delay === false\n      ? ''\n      : `await delay(${isFunction(delay) ? `(${String(delay)})()` : String(delay)});`\n  }\n  ${isReturnHttpResponse ? '' : `if (typeof overrideResponse === 'function') {await overrideResponse(info); }`}\n  ${responsePrelude}\n    return ${responseBody}\n  }, options)\n}\\n`;\n\n  const includeResponseImports = [\n    ...imports,\n    ...response.imports.filter((r) => {\n      // Only keep imports referenced in the mock. Aliased imports\n      // (`Foo as __Foo`) reference the alias rather than the bare name, so\n      // match against either. Mirrors `addDependency` in core/generators/imports.ts (#3269).\n      const searchWords = [r.alias, r.name]\n        .filter((p): p is string => Boolean(p?.length))\n        .map((part) => escapeRegExp(part))\n        .join('|');\n      if (!searchWords) {\n        return false;\n      }\n      const reg = new RegExp(String.raw`\\b(${searchWords})\\b`);\n      return reg.test(handlerImplementation) || reg.test(mockImplementation);\n    }),\n  ];\n\n  return {\n    implementation: {\n      function: mockImplementation,\n      handlerName: handlerName,\n      handler: handlerImplementation,\n    },\n    imports: includeResponseImports,\n    strictMockSchemaTypeNames: strictMock\n      ? mergeStrictMockSchemaTypeNames(\n          schemaTypeNames,\n          // Nested split factories: see collectStrictMockSchemaTypeNamesFromImplementation\n          // re regex-coupling note — prefer threading names from getters long-term.\n          collectStrictMockSchemaTypeNamesFromImplementation(\n            mockImplementation,\n          ),\n        )\n      : undefined,\n    strictMockSchemaKinds: strictMock\n      ? mergeStrictMockSchemaKinds(\n          getStrictMockSchemaKindsFromResponses(responses, context),\n          Object.fromEntries(\n            (\n              collectStrictMockSchemaTypeNamesFromImplementation(\n                mockImplementation,\n              ) ?? []\n            ).map((name) => [name, 'object' satisfies StrictMockSchemaKind]),\n          ),\n        )\n      : undefined,\n  };\n}\n\nexport function generateMSW(\n  generatorVerbOptions: GeneratorVerbOptions,\n  generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n  const { pathRoute, override, mock } = generatorOptions;\n  const { operationName, response } = generatorVerbOptions;\n\n  const overrideBaseUrl =\n    override.mock && 'baseUrl' in override.mock\n      ? (override.mock as { baseUrl?: string }).baseUrl\n      : undefined;\n  const mockBaseUrl = mock && isMswMock(mock) ? mock.baseUrl : undefined;\n  const route = getRouteMSW(pathRoute, overrideBaseUrl ?? mockBaseUrl);\n\n  // Derive names from operationName (not operationId): splitByContentType keeps\n  // one operationId across variants but suffixes operationName (e.g. *WithJson /\n  // *WithFormData), and the client side already names functions from it. Using\n  // operationId here would emit duplicate handler names and break tsc. See #3342.\n  const handlerName = `get${pascal(operationName)}MockHandler`;\n  const getResponseMockFunctionName = `get${pascal(operationName)}ResponseMock`;\n\n  const splitMockImplementations: string[] = [];\n\n  const baseDefinition = generateDefinition(\n    '',\n    route,\n    getResponseMockFunctionName,\n    handlerName,\n    generatorVerbOptions,\n    generatorOptions,\n    response.definition.success,\n    response.types.success[0]?.key ?? '200',\n    response.imports,\n    response.types.success,\n    response.contentTypes,\n    splitMockImplementations,\n  );\n\n  const mockImplementations = [baseDefinition.implementation.function];\n  const handlerImplementations = [baseDefinition.implementation.handler];\n  const imports = [...baseDefinition.imports];\n  const strictMockSchemaTypeNames = new Set(\n    baseDefinition.strictMockSchemaTypeNames,\n  );\n  const strictMockSchemaKinds: Record<string, StrictMockSchemaKind> = {\n    ...baseDefinition.strictMockSchemaKinds,\n  };\n\n  if (\n    generatorOptions.mock &&\n    isObject(generatorOptions.mock) &&\n    generatorOptions.mock.generateEachHttpStatus\n  ) {\n    for (const statusResponse of [\n      ...response.types.success,\n      ...response.types.errors,\n    ]) {\n      const definition = generateDefinition(\n        statusResponse.key,\n        route,\n        getResponseMockFunctionName,\n        handlerName,\n        generatorVerbOptions,\n        generatorOptions,\n        statusResponse.value,\n        statusResponse.key,\n        response.imports,\n        [statusResponse],\n        [statusResponse.contentType],\n        splitMockImplementations,\n      );\n      mockImplementations.push(definition.implementation.function);\n      handlerImplementations.push(definition.implementation.handler);\n      imports.push(...definition.imports);\n      for (const name of definition.strictMockSchemaTypeNames ?? []) {\n        strictMockSchemaTypeNames.add(name);\n      }\n      if (definition.strictMockSchemaKinds) {\n        for (const [name, kind] of Object.entries(\n          definition.strictMockSchemaKinds,\n        )) {\n          strictMockSchemaKinds[name] ??= kind;\n        }\n      }\n    }\n  }\n\n  const aggregatedStrictNames = [...strictMockSchemaTypeNames];\n\n  return {\n    implementation: {\n      function: mockImplementations.join('\\n'),\n      handlerName,\n      handler: handlerImplementations.join('\\n'),\n    },\n    imports: imports,\n    strictMockSchemaTypeNames:\n      aggregatedStrictNames.length > 0 ? aggregatedStrictNames : undefined,\n    strictMockSchemaKinds: mergeStrictMockSchemaKinds(strictMockSchemaKinds),\n  };\n}\n","import {\n  type ClientMockGeneratorBuilder,\n  type ContextSpec,\n  generateDependencyImports,\n  type GenerateMockImports,\n  type GeneratorDependency,\n  type GeneratorImport,\n  type GeneratorOptions,\n  type GeneratorSchema,\n  type GeneratorVerbOptions,\n  type GlobalMockOptions,\n  pascal,\n  type StrictMockSchemaKind,\n} from '@orval/core';\n\nimport {\n  formatMockFactoryDeclaration,\n  classifyStrictMockSchemaType,\n  collectStrictMockSchemaTypeNamesFromImplementation,\n  getMockFactorySignatureParts,\n  getStrictMockTypeName,\n  isStrictMock,\n  mergeStrictMockSchemaKinds,\n} from '../mock-types';\nimport { appendImportsDelta } from './imports';\nimport { generateMSW } from '../msw';\nimport { getMockWithoutFunc } from '../msw/mocks';\nimport { getMockScalar } from './getters';\n\nfunction getFakerDependencies(\n  options?: GlobalMockOptions,\n): GeneratorDependency[] {\n  const locale = options?.locale;\n\n  return [\n    {\n      exports: [{ name: 'faker', values: true }],\n      dependency: locale\n        ? `@faker-js/faker/locale/${locale}`\n        : '@faker-js/faker',\n    },\n  ];\n}\n\n/**\n * Emits the import header for a faker-only mock file. Faker output never\n * imports from `msw`, so this only emits `import { faker } from '@faker-js/faker'`\n * (or the locale-scoped variant) plus any operation-specific imports.\n */\nexport const generateFakerImports: GenerateMockImports = ({\n  implementation,\n  imports,\n  projectName,\n  hasSchemaDir,\n  isAllowSyntheticDefaultImports,\n  options,\n}) => {\n  return generateDependencyImports(\n    implementation,\n    [...getFakerDependencies(options), ...imports],\n    projectName,\n    hasSchemaDir,\n    isAllowSyntheticDefaultImports,\n  );\n};\n\n/**\n * Generates the faker-only mock output for a single operation. This reuses\n * the response-factory portion of {@link generateMSW} and strips out the\n * handler and aggregator entries so callers can write a standalone\n * `<file>.faker.ts` with no `msw` dependency.\n */\nexport function generateFaker(\n  generatorVerbOptions: GeneratorVerbOptions,\n  generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n  const result = generateMSW(generatorVerbOptions, generatorOptions);\n  return {\n    implementation: {\n      function: result.implementation.function,\n      handler: '',\n      handlerName: '',\n    },\n    imports: result.imports,\n    strictMockSchemaTypeNames: result.strictMockSchemaTypeNames,\n    strictMockSchemaKinds: result.strictMockSchemaKinds,\n  };\n}\n\nexport interface GenerateFakerForSchemasResult {\n  implementation: string;\n  imports: GeneratorImport[];\n  strictMockSchemaTypeNames?: string[];\n  strictMockSchemaKinds?: Record<string, StrictMockSchemaKind>;\n}\n\n/**\n * Builds the contents of a consolidated faker mock file for every entry under\n * `components/schemas`. Each schema produces a `get<SchemaName>Mock(overrides)`\n * factory in the spirit of the existing per-operation `get<Op>ResponseMock`\n * helpers. Opt in via `mock.generators: [{ type: 'faker', schemas: true }]`.\n *\n * Returns the function bodies plus any `GeneratorImport` references the\n * factories need so the writer can hoist them into the file header.\n */\nexport function generateFakerForSchemas(\n  schemas: GeneratorSchema[],\n  context: ContextSpec,\n  options: GlobalMockOptions,\n): GenerateFakerForSchemasResult {\n  const factories: string[] = [];\n  const strictMockTypeNames = new Set<string>();\n  const strictMockSchemaKinds: Record<string, StrictMockSchemaKind> = {};\n  const allImports: GeneratorImport[] = [];\n  // Shared across schemas so we emit each helper (e.g. an `allOf`-discriminator\n  // sub-factory) once even when several schemas reference the same union arm.\n  const splitMockImplementations: string[] = [];\n\n  // Names of the factories we're about to emit in this file. When the\n  // delegation logic in `resolveMockValue` produces a `getXMock()` call for\n  // a `components/schemas` ref, it pushes a `{ schemaFactory: true }` import\n  // — but if `X` is itself one of the schemas being generated here, the\n  // factory lives in this very file and must not be imported.\n  const localFactoryNames = new Set(\n    schemas.filter((s) => !!s.schema).map((s) => `get${pascal(s.name)}Mock`),\n  );\n  const localMockTypeNames = new Set(\n    schemas\n      .filter((s) => !!s.schema)\n      .map((s) => getStrictMockTypeName(pascal(s.name))),\n  );\n\n  // Serialize override.mock.properties functions the same way operation\n  // response mocks do (IIFE expressions), not raw function references.\n  const mockOptions = getMockWithoutFunc(context.spec, context.output.override);\n\n  for (const generatorSchema of schemas) {\n    const { name, schema } = generatorSchema;\n    if (!schema) continue;\n\n    const factoryName = `get${pascal(name)}Mock`;\n    const factoryImports: GeneratorImport[] = [];\n    const factoryImportsBefore = factoryImports.length;\n    const schemaName = pascal(name);\n\n    const result = getMockScalar({\n      item: {\n        ...(schema as Record<string, unknown>),\n        name: schemaName,\n      } as Parameters<typeof getMockScalar>[0]['item'],\n      imports: factoryImports,\n      mockOptions,\n      operationId: name,\n      tags: [],\n      context,\n      // Seed the schema under generation on both stacks so allOf/oneOf cycles\n      // (e.g. System.Xml.Linq-style inheritance) terminate instead of overflowing\n      // the stack while building consolidated schema factories (#3590).\n      existingReferencedProperties: [schemaName],\n      existingReferencedAllOfRefs: [schemaName],\n      splitMockImplementations,\n      allowOverride: true,\n      isRef: false,\n    } as Parameters<typeof getMockScalar>[0]);\n\n    appendImportsDelta(allImports, factoryImports, factoryImportsBefore);\n    if (result.imports !== factoryImports) {\n      appendImportsDelta(allImports, result.imports, 0);\n    }\n\n    // Match the behavior of operation-response factories: only declare the\n    // `overrideResponse` parameter when the generated expression actually\n    // references it (top-level object schemas). Array / scalar / enum\n    // schemas don't splice an override, so we omit the parameter rather than\n    // emit a `Partial<Pet[]>` signature TS can't satisfy.\n    const typeName = pascal(name);\n    const isOverridable = result.value.includes('overrideResponse');\n    const { param, returnType, returnCast } = getMockFactorySignatureParts(\n      typeName,\n      mockOptions,\n      {\n        isOverridable,\n        overrideType: `Partial<${typeName}>`,\n      },\n    );\n    const factory = formatMockFactoryDeclaration(\n      factoryName,\n      param,\n      returnType,\n      result.value,\n      returnCast,\n    );\n\n    if (isStrictMock(mockOptions)) {\n      strictMockTypeNames.add(typeName);\n      strictMockSchemaKinds[typeName] = classifyStrictMockSchemaType(schema);\n    }\n\n    factories.push(factory);\n\n    // Track the schema type itself as an import so writers can reference it\n    // from the generated factory file.\n    allImports.push({\n      name: pascal(name),\n      values: false,\n    });\n  }\n\n  // De-duplicate imports by name+alias so the header doesn't list the same\n  // schema twice when multiple factories reference it. \"Any value wins\":\n  // if the same name is pushed both as a type-only import and as a value\n  // import (e.g. an enum used both in an `as Foo` cast and an\n  // `Object.values(Foo)` call), we keep the value form. A plain\n  // `import { Foo }` works in both annotation and runtime positions, so\n  // emitting the value form avoids `TS1361: 'X' cannot be used as a value\n  // because it was imported using 'import type'`.\n  const mergedImports = new Map<string, GeneratorImport>();\n  for (const imp of allImports) {\n    // Drop self-references: `get<Schema>Mock` factories generated in this\n    // very file (pushed when delegation in `resolveMockValue` produced a\n    // local factory call). Without this we'd emit\n    // `import { getPetMock } from '.'` next to its own `export const`.\n    if (imp.schemaFactory && localFactoryNames.has(imp.name)) continue;\n    if (imp.schemaFactory && !imp.values && localMockTypeNames.has(imp.name)) {\n      continue;\n    }\n\n    const key = `${imp.name}::${imp.alias ?? ''}`;\n    const existing = mergedImports.get(key);\n    if (!existing) {\n      mergedImports.set(key, imp);\n      continue;\n    }\n    if (!existing.values && imp.values) {\n      mergedImports.set(key, imp);\n    }\n  }\n  const uniqueImports = [...mergedImports.values()];\n\n  // Reference `options` so unused-parameter rules don't complain; future\n  // schema-specific behavior (e.g. naming convention) will read from it.\n  void options;\n\n  // Helper factories from union/discriminator handling (`splitMockImplementations`)\n  // are emitted before the public `get<Schema>Mock` factories so call sites\n  // declared after them resolve cleanly without TS hoisting concerns.\n  const implementation = [...splitMockImplementations, ...factories]\n    .filter(Boolean)\n    .join('\\n\\n');\n\n  for (const name of collectStrictMockSchemaTypeNamesFromImplementation(\n    implementation,\n  )) {\n    strictMockTypeNames.add(name);\n    strictMockSchemaKinds[name] ??= 'object';\n  }\n\n  const aggregatedStrictNames = [...strictMockTypeNames];\n\n  return {\n    implementation,\n    imports: uniqueImports,\n    strictMockSchemaTypeNames:\n      aggregatedStrictNames.length > 0 ? aggregatedStrictNames : undefined,\n    strictMockSchemaKinds: mergeStrictMockSchemaKinds(strictMockSchemaKinds),\n  };\n}\n","import type {\n  FakerMockOptions,\n  GenerateMockImports,\n  GeneratorOptions,\n  GeneratorVerbOptions,\n  GlobalMockOptions,\n  MswMockOptions,\n} from '@orval/core';\nimport { OutputMockType } from '@orval/core';\n\nimport { generateFaker, generateFakerImports } from './faker';\nimport { generateMSW, generateMSWImports } from './msw';\n\nexport const DEFAULT_MSW_OPTIONS: MswMockOptions = {\n  type: OutputMockType.MSW,\n  useExamples: false,\n};\n\nexport const DEFAULT_FAKER_OPTIONS: FakerMockOptions = {\n  type: OutputMockType.FAKER,\n  useExamples: false,\n  schemas: false,\n  operationResponses: true,\n};\n\n/**\n * Returns the default GlobalMockOptions for a given mock type. Used when\n * normalizing user-provided entries in `output.mock.generators` so callers\n * can omit the per-type defaults.\n */\nexport const getDefaultMockOptionsForType = (\n  type: GlobalMockOptions['type'],\n): GlobalMockOptions => {\n  switch (type) {\n    case OutputMockType.FAKER: {\n      return DEFAULT_FAKER_OPTIONS;\n    }\n    case OutputMockType.MSW: {\n      return DEFAULT_MSW_OPTIONS;\n    }\n  }\n};\n\n/**\n * Dispatches mock-file imports generation to the appropriate generator based\n * on the `OutputMockType` discriminator on the mock options.\n */\nexport const generateMockImports: GenerateMockImports = (importOptions) => {\n  switch (importOptions.options?.type) {\n    case OutputMockType.FAKER: {\n      return generateFakerImports(importOptions);\n    }\n    default: {\n      return generateMSWImports(importOptions);\n    }\n  }\n};\n\n/**\n * Dispatches per-operation mock generation to the appropriate generator\n * based on the `OutputMockType` discriminator. Each entry in\n * `output.mock.generators` is dispatched here individually.\n */\nexport function generateMock(\n  generatorVerbOptions: GeneratorVerbOptions,\n  generatorOptions: Omit<GeneratorOptions, 'mock'> & {\n    mock: GlobalMockOptions;\n  },\n) {\n  const { context } = generatorOptions;\n  const previousActiveMockOutputType = context.activeMockOutputType;\n  context.activeMockOutputType = generatorOptions.mock.type;\n\n  try {\n    switch (generatorOptions.mock.type) {\n      case OutputMockType.FAKER: {\n        return generateFaker(generatorVerbOptions, generatorOptions);\n      }\n      default: {\n        return generateMSW(generatorVerbOptions, generatorOptions);\n      }\n    }\n  } finally {\n    context.activeMockOutputType = previousActiveMockOutputType;\n  }\n}\n\nexport type { GenerateFakerForSchemasResult } from './faker';\nexport {\n  generateFaker,\n  generateFakerForSchemas,\n  generateFakerImports,\n} from './faker';\nexport {\n  buildStrictMockTypeFileHeader,\n  dedupeStrictMockTypeDeclarations,\n} from './mock-types';\nexport { generateMSW, generateMSWImports } from './msw';\n"],"mappings":"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"}