@orval/mock 8.7.0 → 8.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import * as _orval_core0 from "@orval/core";
1
+ import * as _$_orval_core0 from "@orval/core";
2
2
  import { GenerateMockImports, GeneratorOptions, GeneratorVerbOptions, GlobalMockOptions } from "@orval/core";
3
3
 
4
4
  //#region src/index.d.ts
@@ -6,7 +6,7 @@ declare const DEFAULT_MOCK_OPTIONS: GlobalMockOptions;
6
6
  declare const generateMockImports: GenerateMockImports;
7
7
  declare function generateMock(generatorVerbOptions: GeneratorVerbOptions, generatorOptions: Omit<GeneratorOptions, 'mock'> & {
8
8
  mock: GlobalMockOptions;
9
- }): _orval_core0.ClientMockGeneratorBuilder;
9
+ }): _$_orval_core0.ClientMockGeneratorBuilder;
10
10
  //#endregion
11
11
  export { DEFAULT_MOCK_OPTIONS, generateMock, generateMockImports };
12
12
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { EnumGeneration, PropertySortOrder, camel, compareVersions, escape, generalJSTypesWithArray, generateDependencyImports, getKey, getRefInfo, isBoolean, isFunction, isNumber, isObject, isReference, isSchema, isString, mergeDeep, pascal, resolveRef, sanitize, stringify } from "@orval/core";
2
2
  import { prop } from "remeda";
3
-
4
3
  //#region src/delay.ts
5
4
  const getDelay = (override, options) => {
6
5
  const overrideDelay = override?.mock?.delay ?? options?.delay;
@@ -9,7 +8,6 @@ const getDelay = (override, options) => {
9
8
  if (isNumber(overrideDelay) || isBoolean(overrideDelay)) return overrideDelay;
10
9
  return false;
11
10
  };
12
-
13
11
  //#endregion
14
12
  //#region src/faker/compatible-v9.ts
15
13
  const getFakerPackageVersion = (packageJson) => {
@@ -21,7 +19,6 @@ const isFakerVersionV9 = (packageJson) => {
21
19
  const withoutRc = version.split("-")[0];
22
20
  return compareVersions(withoutRc, "9.0.0");
23
21
  };
24
-
25
22
  //#endregion
26
23
  //#region src/faker/constants.ts
27
24
  const DEFAULT_FORMAT_MOCK = {
@@ -49,7 +46,6 @@ const DEFAULT_FORMAT_MOCK = {
49
46
  zipCode: "faker.location.zipCode()"
50
47
  };
51
48
  const DEFAULT_OBJECT_KEY_MOCK = "faker.string.alphanumeric(5)";
52
-
53
49
  //#endregion
54
50
  //#region src/faker/getters/object.ts
55
51
  const overrideVarName = "overrideResponse";
@@ -92,21 +88,27 @@ function getMockObject({ item, mockOptions, operationId, tags, combine, context,
92
88
  existingReferencedProperties,
93
89
  splitMockImplementations
94
90
  });
95
- if (Array.isArray(itemType)) return combineSchemasMock({
96
- item: {
97
- anyOf: itemType.map((type) => ({ type })),
98
- name: schemaItem.name
99
- },
100
- separator: "anyOf",
101
- mockOptions,
102
- operationId,
103
- tags,
104
- combine,
105
- context,
106
- imports,
107
- existingReferencedProperties,
108
- splitMockImplementations
109
- });
91
+ if (Array.isArray(itemType)) {
92
+ const baseItem = schemaItem;
93
+ return combineSchemasMock({
94
+ item: {
95
+ anyOf: itemType.map((type) => ({
96
+ ...baseItem,
97
+ type
98
+ })),
99
+ name: schemaItem.name
100
+ },
101
+ separator: "anyOf",
102
+ mockOptions,
103
+ operationId,
104
+ tags,
105
+ combine,
106
+ context,
107
+ imports,
108
+ existingReferencedProperties,
109
+ splitMockImplementations
110
+ });
111
+ }
110
112
  if (itemProperties) {
111
113
  let value = !combine || combine.separator === "oneOf" || combine.separator === "anyOf" ? "{" : "";
112
114
  const imports = [];
@@ -197,7 +199,6 @@ function getMockObject({ item, mockOptions, operationId, tags, combine, context,
197
199
  name: schemaItem.name
198
200
  };
199
201
  }
200
-
201
202
  //#endregion
202
203
  //#region src/faker/getters/scalar.ts
203
204
  function getMockScalar({ item, imports, mockOptions, operationId, tags, combine, context, existingReferencedProperties, splitMockImplementations, allowOverride = false }) {
@@ -227,6 +228,13 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
227
228
  ...Object.fromEntries(Object.entries(formatOverrides).filter((entry) => typeof entry[1] === "string"))
228
229
  };
229
230
  const isNullable = Array.isArray(item.type) && item.type.includes("null");
231
+ const schemaContentMediaType = item.contentMediaType;
232
+ if (!item.format && schemaContentMediaType === "application/octet-stream" && ALL_FORMAT.binary) return {
233
+ value: getNullable(ALL_FORMAT.binary, isNullable),
234
+ imports: [],
235
+ name: item.name,
236
+ overrided: false
237
+ };
230
238
  if (item.format && ALL_FORMAT[item.format]) {
231
239
  let value = ALL_FORMAT[item.format];
232
240
  if (["date", "date-time"].includes(item.format) && context.output.override.useDates) value = `new Date(${value})`;
@@ -243,8 +251,8 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
243
251
  case "number":
244
252
  case "integer": {
245
253
  const intFunction = context.output.override.useBigInt && (item.format === "int64" || item.format === "uint64") ? "bigInt" : "int";
246
- const numMin = item.exclusiveMinimum ?? item.minimum ?? safeMockOptions.numberMin;
247
- const numMax = item.exclusiveMaximum ?? item.maximum ?? safeMockOptions.numberMax;
254
+ const numMin = typeof item.exclusiveMinimum === "number" ? item.exclusiveMinimum : item.minimum ?? safeMockOptions.numberMin;
255
+ const numMax = typeof item.exclusiveMaximum === "number" ? item.exclusiveMaximum : item.maximum ?? safeMockOptions.numberMax;
248
256
  const intParts = [];
249
257
  if (numMin !== void 0) intParts.push(`min: ${numMin}`);
250
258
  if (numMax !== void 0) intParts.push(`max: ${numMax}`);
@@ -407,7 +415,6 @@ function getEnum(item, imports, context, existingReferencedProperties, type) {
407
415
  }
408
416
  return item.path?.endsWith("[]") ? `faker.helpers.arrayElements(${enumValue})` : `faker.helpers.arrayElement(${enumValue})`;
409
417
  }
410
-
411
418
  //#endregion
412
419
  //#region src/faker/resolvers/value.ts
413
420
  function isRegex(key) {
@@ -501,7 +508,6 @@ function getType(schema) {
501
508
  if (isReference(schema)) return;
502
509
  return schema.type ?? (schema.properties ? "object" : schema.items ? "array" : void 0);
503
510
  }
504
-
505
511
  //#endregion
506
512
  //#region src/faker/getters/combine.ts
507
513
  function getReferenceName(ref) {
@@ -600,7 +606,6 @@ function combineSchemasMock({ item, separator, mockOptions, operationId, tags, c
600
606
  includedProperties
601
607
  };
602
608
  }
603
-
604
609
  //#endregion
605
610
  //#region src/faker/getters/route.ts
606
611
  const hasParam = (path) => /[^{]*{[\w*_-]*}.*/.test(path);
@@ -631,7 +636,6 @@ const getRouteMSW = (route, baseUrl = "*") => {
631
636
  }
632
637
  return resolvedRoute;
633
638
  };
634
-
635
639
  //#endregion
636
640
  //#region src/msw/mocks.ts
637
641
  function getMockPropertiesWithoutFunc(properties, spec) {
@@ -714,7 +718,7 @@ function getResponsesMockDefinition({ operationId, tags, returnType, responses,
714
718
  imports: []
715
719
  };
716
720
  for (const response of responses) {
717
- const { value: definition, example, examples, imports } = response;
721
+ const { value: definition, example, examples, imports, isRef } = response;
718
722
  let { originalSchema } = response;
719
723
  if (context.output.override.mock?.useExamples || mockOptions?.useExamples) {
720
724
  const exampleValue = unwrapExampleValue(example ?? originalSchema?.example ?? getExampleEntries(examples)[0] ?? getExampleEntries(originalSchema?.examples)[0]);
@@ -737,7 +741,8 @@ function getResponsesMockDefinition({ operationId, tags, returnType, responses,
737
741
  const scalar = getMockScalar({
738
742
  item: {
739
743
  ...resolvedSchema,
740
- name: definition
744
+ name: definition,
745
+ ...context.output.override.enumGenerationType === "enum" && isRef ? { isRef: true } : {}
741
746
  },
742
747
  imports,
743
748
  mockOptions: mockOptionsWithoutFunc,
@@ -775,7 +780,6 @@ function getMockOptionsDataOverride(operationTags, operationId, override) {
775
780
  const responseOverride = override.operations[operationId]?.mock?.data ?? operationTags.map((operationTag) => override.tags[operationTag]?.mock?.data).find((e) => e !== void 0);
776
781
  return (isFunction(responseOverride) ? `(${String(responseOverride)})()` : stringify(responseOverride))?.replaceAll(/import_faker\.defaults|import_faker\.faker|_faker\.faker/g, "faker");
777
782
  }
778
-
779
783
  //#endregion
780
784
  //#region src/msw/index.ts
781
785
  function getMSWDependencies(options) {
@@ -953,7 +957,6 @@ function generateMSW(generatorVerbOptions, generatorOptions) {
953
957
  imports
954
958
  };
955
959
  }
956
-
957
960
  //#endregion
958
961
  //#region src/index.ts
959
962
  const DEFAULT_MOCK_OPTIONS = {
@@ -970,7 +973,7 @@ function generateMock(generatorVerbOptions, generatorOptions) {
970
973
  default: return generateMSW(generatorVerbOptions, generatorOptions);
971
974
  }
972
975
  }
973
-
974
976
  //#endregion
975
977
  export { DEFAULT_MOCK_OPTIONS, generateMock, generateMockImports };
978
+
976
979
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["getReferenceName"],"sources":["../src/delay.ts","../src/faker/compatible-v9.ts","../src/faker/constants.ts","../src/faker/getters/object.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/index.ts"],"sourcesContent":["import {\n type GlobalMockOptions,\n isBoolean,\n isFunction,\n isNumber,\n type NormalizedOverrideOutput,\n} from '@orval/core';\n\nexport const getDelay = (\n override?: NormalizedOverrideOutput,\n options?: GlobalMockOptions,\n): GlobalMockOptions['delay'] => {\n const overrideDelay = override?.mock?.delay ?? options?.delay;\n const delayFunctionLazyExecute =\n override?.mock?.delayFunctionLazyExecute ??\n options?.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 isReference,\n type MockOptions,\n type OpenApiReferenceObject,\n type OpenApiSchemaObject,\n pascal,\n PropertySortOrder,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { DEFAULT_OBJECT_KEY_MOCK } from '../constants';\nimport { resolveMockValue } from '../resolvers/value';\nimport { combineSchemasMock } from './combine';\n\nexport const overrideVarName = 'overrideResponse';\n\nfunction getReferenceName(ref?: string): string {\n if (!ref) return '';\n\n return pascal(ref.split('/').pop() ?? '');\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 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 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 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 splitMockImplementations,\n });\n }\n\n if (Array.isArray(itemType)) {\n return combineSchemasMock({\n item: {\n anyOf: itemType.map((type) => ({ type })) 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 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]);\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(getReferenceName(prop.$ref))\n ) {\n if (isRequired) {\n const keyDefinition = getKey(key);\n return `${keyDefinition}: null`;\n }\n return;\n }\n\n const resolvedValue = resolveMockValue({\n schema: {\n ...(prop as Record<string, unknown>),\n name: key,\n path: schemaItem.path ? `${schemaItem.path}.${key}` : `#.${key}`,\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n });\n\n imports.push(...resolvedValue.imports);\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 nullValue = hasNullable ? 'null' : 'undefined';\n return `${keyDefinition}: faker.helpers.arrayElement([${resolvedValue.value}, ${nullValue}])`;\n }\n\n const isNullable =\n Array.isArray(prop.type) && prop.type.includes('null');\n if (isNullable && !resolvedValue.overrided) {\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 return {\n value,\n imports,\n name: schemaItem.name,\n includedProperties,\n };\n }\n\n if (itemAdditionalProperties) {\n if (itemAdditionalProperties === true) {\n return { value: `{}`, imports: [], name: schemaItem.name };\n }\n const additionalProperties = itemAdditionalProperties;\n if (\n isReference(additionalProperties) &&\n existingReferencedProperties.includes(\n getReferenceName(additionalProperties.$ref),\n )\n ) {\n return { value: `{}`, imports: [], name: schemaItem.name };\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 splitMockImplementations,\n });\n\n return {\n ...resolvedValue,\n value: `{\n [${DEFAULT_OBJECT_KEY_MOCK}]: ${resolvedValue.value}\n }`,\n };\n }\n\n return { value: '{}', imports: [], name: schemaItem.name };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\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 escape,\n type GeneratorImport,\n isString,\n mergeDeep,\n type MockOptions,\n type OpenApiSchemaObject,\n pascal,\n} from '@orval/core';\n\nimport type { MockDefinition, 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 { 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 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 splitMockImplementations,\n allowOverride = false,\n}: GetMockScalarOptions): MockDefinition {\n const safeMockOptions: MockOptions = mockOptions ?? {};\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 );\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]),\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(overrideTag.properties, item);\n\n if (tagProperty) {\n return tagProperty;\n }\n\n const property = resolveMockOverride(safeMockOptions.properties, item);\n\n if (property) {\n return property;\n }\n\n if (\n (context.output.override.mock?.useExamples ||\n safeMockOptions.useExamples) &&\n item.example !== undefined\n ) {\n return {\n value: JSON.stringify(item.example),\n imports: [],\n name: item.name,\n overrided: true,\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 const isNullable = Array.isArray(item.type) && item.type.includes('null');\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),\n imports: [],\n name: item.name,\n overrided: false,\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 const numMin = (item.exclusiveMinimum ??\n item.minimum ??\n safeMockOptions.numberMin) as number | undefined;\n const numMax = (item.exclusiveMaximum ??\n item.maximum ??\n safeMockOptions.numberMax) 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 );\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 );\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 };\n }\n\n case 'boolean': {\n let value = 'faker.datatype.boolean()';\n if ('const' in item) {\n value = JSON.stringify(item.const);\n }\n return {\n value,\n imports: [],\n name: item.name,\n };\n }\n\n case 'array': {\n if (!item.items) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n if (\n '$ref' in item.items &&\n existingReferencedProperties.includes(\n pascal(item.items.$ref.split('/').pop() ?? ''),\n )\n ) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n const {\n value,\n enums,\n imports: resolvedImports,\n } = resolveMockValue({\n schema: {\n ...item.items,\n name: item.name,\n path: item.path ? `${item.path}.[]` : '#.[]',\n },\n combine,\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\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 if (\n combine &&\n !value.startsWith('faker') &&\n !value.startsWith('{') &&\n !value.startsWith('Array.from')\n ) {\n mapValue = `{${value}}`;\n }\n\n const arrMin = (item.minItems ?? safeMockOptions.arrayMin) as\n | number\n | undefined;\n const arrMax = (item.maxItems ?? safeMockOptions.arrayMax) as\n | number\n | undefined;\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 const strMin = (item.minLength ?? safeMockOptions.stringMin) as\n | number\n | undefined;\n const strMax = (item.maxLength ?? safeMockOptions.stringMax) as\n | number\n | undefined;\n const strLenParts: string[] = [];\n if (strMin !== undefined) strLenParts.push(`min: ${strMin}`);\n if (strMax !== undefined) strLenParts.push(`max: ${strMax}`);\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),\n enums: item.enum,\n name: item.name,\n imports: stringImports,\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 splitMockImplementations,\n allowOverride,\n });\n }\n }\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',\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 ? `'${escape(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 isReference,\n type MockOptions,\n type OpenApiSchemaObject,\n pascal,\n} from '@orval/core';\nimport { prop } from 'remeda';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { overrideVarName } from '../getters';\nimport { getMockScalar } from '../getters/scalar';\n\nfunction isRegex(key: string) {\n return key.startsWith('/') && key.endsWith('/');\n}\n\nexport function resolveMockOverride(\n properties: Record<string, unknown> | undefined = {},\n item: OpenApiSchemaObject & { name: string; path?: string },\n) {\n const path = item.path ?? `#.${item.name}`;\n const property = Object.entries(properties).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 (`#.${key}` === path) {\n return true;\n }\n\n return false;\n });\n\n if (!property) {\n return;\n }\n\n const isNullable = Array.isArray(item.type) && item.type.includes('null');\n\n return {\n value: getNullable(property[1] as string, isNullable),\n imports: [],\n name: item.name,\n overrided: true,\n };\n}\n\nexport function getNullable(value: string, nullable?: boolean) {\n return nullable ? `faker.helpers.arrayElement([${value}, null])` : value;\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 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 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 const newSeparator = newSchema.allOf\n ? 'allOf'\n : newSchema.oneOf\n ? 'oneOf'\n : 'anyOf';\n\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 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 type = `Partial<${newSchema.name}>`;\n if (discriminatedProperty) {\n type = `Omit<${type}, '${discriminatedProperty}'>`;\n }\n\n const args = `${overrideVarName}: ${type} = {}`;\n const func = `export const ${funcName} = (${args}): ${newSchema.name} => ({${scalar.value.startsWith('...') ? '' : '...'}${scalar.value}, ...${overrideVarName}});`;\n splitMockImplementations.push(func);\n }\n\n scalar.value = newSchema.nullable\n ? `${funcName}()`\n : `{...${funcName}()}`;\n\n scalar.imports.push({ name: newSchema.name });\n }\n\n return {\n ...scalar,\n type: getType(newSchema),\n };\n }\n\n const scalar = getMockScalar({\n item: schema,\n mockOptions,\n operationId,\n tags,\n combine,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n allowOverride,\n });\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","import {\n type ContextSpec,\n type GeneratorImport,\n isReference,\n isSchema,\n type MockOptions,\n pascal,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { resolveMockValue } from '../resolvers';\n\nfunction getReferenceName(ref?: string): string {\n if (!ref) return '';\n\n return pascal(ref.split('/').pop() ?? '');\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 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 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 const itemResolvedValue =\n isRefAndNotExisting || item.properties\n ? resolveMockValue({\n schema: Object.fromEntries(\n Object.entries(item).filter(([key]) => key !== separator),\n ) as MockSchemaObject,\n combine: {\n separator: 'allOf',\n includedProperties: [],\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\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) : '';\n // For allOf: skip if refName is in existingRefs AND this is an inline schema (not a top-level ref)\n // This allows top-level schemas (item.isRef=true) to get base properties from allOf\n // while preventing circular allOf chains in inline property schemas\n const shouldSkipRef =\n separator === 'allOf'\n ? refName &&\n (refName === item.name ||\n (existingReferencedProperties.includes(refName) && !item.isRef))\n : false;\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 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 let finalValue =\n value === 'undefined'\n ? value\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 { getMockScalar } from '../faker/getters';\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\nfunction 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\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 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 };\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 } = 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 result.definitions.push(\n transformer\n ? transformer(exampleValue, returnType)\n : JSON.stringify(exampleValue),\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 scalar = getMockScalar({\n item: {\n ...(resolvedSchema as Record<string, unknown>),\n name: definition,\n },\n imports,\n mockOptions: mockOptionsWithoutFunc,\n operationId,\n tags,\n context,\n existingReferencedProperties: [],\n splitMockImplementations,\n allowOverride: true,\n });\n\n result.imports.push(...scalar.imports);\n result.definitions.push(\n transformer ? transformer(scalar.value, returnType) : scalar.value,\n );\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 generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorImport,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n isFunction,\n isObject,\n pascal,\n type ResReqTypesValue,\n} from '@orval/core';\n\nimport { getDelay } from '../delay';\nimport { getRouteMSW, overrideVarName } from '../faker/getters';\nimport { getMockDefinition, getMockOptionsDataOverride } from './mocks';\n\nfunction getMSWDependencies(\n options?: GlobalMockOptions,\n): GeneratorDependency[] {\n const hasDelay = options?.delay !== false;\n const locale = options?.locale;\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 [\n { exports, dependency: 'msw' },\n {\n exports: [{ name: 'faker', values: true }],\n dependency: locale\n ? `@faker-js/faker/locale/${locale}`\n : '@faker-js/faker',\n },\n ];\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 const preferredContentTypeMatch = preferredContentType\n ? contentTypes.find((ct) => ct.toLowerCase() === preferredContentType)\n : undefined;\n const contentTypesByPreference = preferredContentTypeMatch\n ? [preferredContentTypeMatch]\n : contentTypes;\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 isBinaryResponse =\n returnType === 'Blob' ||\n contentTypesByPreference.some((ct) => isBinaryLikeContentType(ct));\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 mockReturnType = isBinaryResponse\n ? returnType.replaceAll(/\\bBlob\\b/g, '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 mockImplementation = isReturnHttpResponse\n ? `${mockImplementations}export const ${getResponseMockFunctionName} = (${\n isResponseOverridable\n ? `overrideResponse: ${overrideResponseType} = {}`\n : ''\n })${mockData ? '' : `: ${nonVoidMockReturnType}`} => (${value})\\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)\n let responsePrelude = '';\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 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 include imports which are actually used in mock.\n const reg = new RegExp(String.raw`\\b${r.name}\\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 };\n}\n\nexport function generateMSW(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n const { pathRoute, override, mock } = generatorOptions;\n const { operationId, response } = generatorVerbOptions;\n\n const route = getRouteMSW(\n pathRoute,\n override.mock?.baseUrl ?? (isFunction(mock) ? undefined : mock?.baseUrl),\n );\n\n const handlerName = `get${pascal(operationId)}MockHandler`;\n const getResponseMockFunctionName = `get${pascal(operationId)}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\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 }\n }\n\n return {\n implementation: {\n function: mockImplementations.join('\\n'),\n handlerName: handlerName,\n handler: handlerImplementations.join('\\n'),\n },\n imports: imports,\n };\n}\n","import type {\n GenerateMockImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GlobalMockOptions,\n} from '@orval/core';\n\nimport { generateMSW, generateMSWImports } from './msw';\n\nexport const DEFAULT_MOCK_OPTIONS: GlobalMockOptions = {\n type: 'msw',\n useExamples: false,\n};\n\nexport const generateMockImports: GenerateMockImports = (importOptions) => {\n switch (importOptions.options?.type) {\n default: {\n // case 'msw':\n return generateMSWImports(importOptions);\n }\n }\n};\n\nexport function generateMock(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: Omit<GeneratorOptions, 'mock'> & {\n mock: GlobalMockOptions;\n },\n) {\n switch (generatorOptions.mock.type) {\n default: {\n // case 'msw':\n return generateMSW(generatorVerbOptions, generatorOptions);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["getReferenceName"],"sources":["../src/delay.ts","../src/faker/compatible-v9.ts","../src/faker/constants.ts","../src/faker/getters/object.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/index.ts"],"sourcesContent":["import {\n type GlobalMockOptions,\n isBoolean,\n isFunction,\n isNumber,\n type NormalizedOverrideOutput,\n} from '@orval/core';\n\nexport const getDelay = (\n override?: NormalizedOverrideOutput,\n options?: GlobalMockOptions,\n): GlobalMockOptions['delay'] => {\n const overrideDelay = override?.mock?.delay ?? options?.delay;\n const delayFunctionLazyExecute =\n override?.mock?.delayFunctionLazyExecute ??\n options?.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 isReference,\n type MockOptions,\n type OpenApiReferenceObject,\n type OpenApiSchemaObject,\n pascal,\n PropertySortOrder,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { DEFAULT_OBJECT_KEY_MOCK } from '../constants';\nimport { resolveMockValue } from '../resolvers/value';\nimport { combineSchemasMock } from './combine';\n\nexport const overrideVarName = 'overrideResponse';\n\nfunction getReferenceName(ref?: string): string {\n if (!ref) return '';\n\n return pascal(ref.split('/').pop() ?? '');\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 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 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 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 splitMockImplementations,\n });\n }\n\n if (Array.isArray(itemType)) {\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 baseItem = schemaItem as Record<string, unknown>;\n return combineSchemasMock({\n item: {\n anyOf: itemType.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 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]);\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(getReferenceName(prop.$ref))\n ) {\n if (isRequired) {\n const keyDefinition = getKey(key);\n return `${keyDefinition}: null`;\n }\n return;\n }\n\n const resolvedValue = resolveMockValue({\n schema: {\n ...(prop as Record<string, unknown>),\n name: key,\n path: schemaItem.path ? `${schemaItem.path}.${key}` : `#.${key}`,\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n });\n\n imports.push(...resolvedValue.imports);\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 nullValue = hasNullable ? 'null' : 'undefined';\n return `${keyDefinition}: faker.helpers.arrayElement([${resolvedValue.value}, ${nullValue}])`;\n }\n\n const isNullable =\n Array.isArray(prop.type) && prop.type.includes('null');\n if (isNullable && !resolvedValue.overrided) {\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 return {\n value,\n imports,\n name: schemaItem.name,\n includedProperties,\n };\n }\n\n if (itemAdditionalProperties) {\n if (itemAdditionalProperties === true) {\n return { value: `{}`, imports: [], name: schemaItem.name };\n }\n const additionalProperties = itemAdditionalProperties;\n if (\n isReference(additionalProperties) &&\n existingReferencedProperties.includes(\n getReferenceName(additionalProperties.$ref),\n )\n ) {\n return { value: `{}`, imports: [], name: schemaItem.name };\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 splitMockImplementations,\n });\n\n return {\n ...resolvedValue,\n value: `{\n [${DEFAULT_OBJECT_KEY_MOCK}]: ${resolvedValue.value}\n }`,\n };\n }\n\n return { value: '{}', imports: [], name: schemaItem.name };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\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 escape,\n type GeneratorImport,\n isString,\n mergeDeep,\n type MockOptions,\n type OpenApiSchemaObject,\n pascal,\n} from '@orval/core';\n\nimport type { MockDefinition, 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 { 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 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 splitMockImplementations,\n allowOverride = false,\n}: GetMockScalarOptions): MockDefinition {\n const safeMockOptions: MockOptions = mockOptions ?? {};\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 );\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]),\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(overrideTag.properties, item);\n\n if (tagProperty) {\n return tagProperty;\n }\n\n const property = resolveMockOverride(safeMockOptions.properties, item);\n\n if (property) {\n return property;\n }\n\n if (\n (context.output.override.mock?.useExamples ||\n safeMockOptions.useExamples) &&\n item.example !== undefined\n ) {\n return {\n value: JSON.stringify(item.example),\n imports: [],\n name: item.name,\n overrided: true,\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 const isNullable = Array.isArray(item.type) && item.type.includes('null');\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),\n imports: [],\n name: item.name,\n overrided: false,\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),\n imports: [],\n name: item.name,\n overrided: false,\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 );\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 );\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 };\n }\n\n case 'boolean': {\n let value = 'faker.datatype.boolean()';\n if ('const' in item) {\n value = JSON.stringify(item.const);\n }\n return {\n value,\n imports: [],\n name: item.name,\n };\n }\n\n case 'array': {\n if (!item.items) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n if (\n '$ref' in item.items &&\n existingReferencedProperties.includes(\n pascal(item.items.$ref.split('/').pop() ?? ''),\n )\n ) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n const {\n value,\n enums,\n imports: resolvedImports,\n } = resolveMockValue({\n schema: {\n ...item.items,\n name: item.name,\n path: item.path ? `${item.path}.[]` : '#.[]',\n },\n combine,\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\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 if (\n combine &&\n !value.startsWith('faker') &&\n !value.startsWith('{') &&\n !value.startsWith('Array.from')\n ) {\n mapValue = `{${value}}`;\n }\n\n const arrMin = (item.minItems ?? safeMockOptions.arrayMin) as\n | number\n | undefined;\n const arrMax = (item.maxItems ?? safeMockOptions.arrayMax) as\n | number\n | undefined;\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 const strMin = (item.minLength ?? safeMockOptions.stringMin) as\n | number\n | undefined;\n const strMax = (item.maxLength ?? safeMockOptions.stringMax) as\n | number\n | undefined;\n const strLenParts: string[] = [];\n if (strMin !== undefined) strLenParts.push(`min: ${strMin}`);\n if (strMax !== undefined) strLenParts.push(`max: ${strMax}`);\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),\n enums: item.enum,\n name: item.name,\n imports: stringImports,\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 splitMockImplementations,\n allowOverride,\n });\n }\n }\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',\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 ? `'${escape(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 isReference,\n type MockOptions,\n type OpenApiSchemaObject,\n pascal,\n} from '@orval/core';\nimport { prop } from 'remeda';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { overrideVarName } from '../getters';\nimport { getMockScalar } from '../getters/scalar';\n\nfunction isRegex(key: string) {\n return key.startsWith('/') && key.endsWith('/');\n}\n\nexport function resolveMockOverride(\n properties: Record<string, unknown> | undefined = {},\n item: OpenApiSchemaObject & { name: string; path?: string },\n) {\n const path = item.path ?? `#.${item.name}`;\n const property = Object.entries(properties).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 (`#.${key}` === path) {\n return true;\n }\n\n return false;\n });\n\n if (!property) {\n return;\n }\n\n const isNullable = Array.isArray(item.type) && item.type.includes('null');\n\n return {\n value: getNullable(property[1] as string, isNullable),\n imports: [],\n name: item.name,\n overrided: true,\n };\n}\n\nexport function getNullable(value: string, nullable?: boolean) {\n return nullable ? `faker.helpers.arrayElement([${value}, null])` : value;\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 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 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 const newSeparator = newSchema.allOf\n ? 'allOf'\n : newSchema.oneOf\n ? 'oneOf'\n : 'anyOf';\n\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 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 type = `Partial<${newSchema.name}>`;\n if (discriminatedProperty) {\n type = `Omit<${type}, '${discriminatedProperty}'>`;\n }\n\n const args = `${overrideVarName}: ${type} = {}`;\n const func = `export const ${funcName} = (${args}): ${newSchema.name} => ({${scalar.value.startsWith('...') ? '' : '...'}${scalar.value}, ...${overrideVarName}});`;\n splitMockImplementations.push(func);\n }\n\n scalar.value = newSchema.nullable\n ? `${funcName}()`\n : `{...${funcName}()}`;\n\n scalar.imports.push({ name: newSchema.name });\n }\n\n return {\n ...scalar,\n type: getType(newSchema),\n };\n }\n\n const scalar = getMockScalar({\n item: schema,\n mockOptions,\n operationId,\n tags,\n combine,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n allowOverride,\n });\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","import {\n type ContextSpec,\n type GeneratorImport,\n isReference,\n isSchema,\n type MockOptions,\n pascal,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { resolveMockValue } from '../resolvers';\n\nfunction getReferenceName(ref?: string): string {\n if (!ref) return '';\n\n return pascal(ref.split('/').pop() ?? '');\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 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 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 const itemResolvedValue =\n isRefAndNotExisting || item.properties\n ? resolveMockValue({\n schema: Object.fromEntries(\n Object.entries(item).filter(([key]) => key !== separator),\n ) as MockSchemaObject,\n combine: {\n separator: 'allOf',\n includedProperties: [],\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\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) : '';\n // For allOf: skip if refName is in existingRefs AND this is an inline schema (not a top-level ref)\n // This allows top-level schemas (item.isRef=true) to get base properties from allOf\n // while preventing circular allOf chains in inline property schemas\n const shouldSkipRef =\n separator === 'allOf'\n ? refName &&\n (refName === item.name ||\n (existingReferencedProperties.includes(refName) && !item.isRef))\n : false;\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 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 let finalValue =\n value === 'undefined'\n ? value\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 { getMockScalar } from '../faker/getters';\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\nfunction 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\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 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 };\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 result.definitions.push(\n transformer\n ? transformer(exampleValue, returnType)\n : JSON.stringify(exampleValue),\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 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,\n mockOptions: mockOptionsWithoutFunc,\n operationId,\n tags,\n context,\n existingReferencedProperties: [],\n splitMockImplementations,\n allowOverride: true,\n });\n\n result.imports.push(...scalar.imports);\n result.definitions.push(\n transformer ? transformer(scalar.value, returnType) : scalar.value,\n );\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 generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorImport,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n isFunction,\n isObject,\n pascal,\n type ResReqTypesValue,\n} from '@orval/core';\n\nimport { getDelay } from '../delay';\nimport { getRouteMSW, overrideVarName } from '../faker/getters';\nimport { getMockDefinition, getMockOptionsDataOverride } from './mocks';\n\nfunction getMSWDependencies(\n options?: GlobalMockOptions,\n): GeneratorDependency[] {\n const hasDelay = options?.delay !== false;\n const locale = options?.locale;\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 [\n { exports, dependency: 'msw' },\n {\n exports: [{ name: 'faker', values: true }],\n dependency: locale\n ? `@faker-js/faker/locale/${locale}`\n : '@faker-js/faker',\n },\n ];\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 const preferredContentTypeMatch = preferredContentType\n ? contentTypes.find((ct) => ct.toLowerCase() === preferredContentType)\n : undefined;\n const contentTypesByPreference = preferredContentTypeMatch\n ? [preferredContentTypeMatch]\n : contentTypes;\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 isBinaryResponse =\n returnType === 'Blob' ||\n contentTypesByPreference.some((ct) => isBinaryLikeContentType(ct));\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 mockReturnType = isBinaryResponse\n ? returnType.replaceAll(/\\bBlob\\b/g, '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 mockImplementation = isReturnHttpResponse\n ? `${mockImplementations}export const ${getResponseMockFunctionName} = (${\n isResponseOverridable\n ? `overrideResponse: ${overrideResponseType} = {}`\n : ''\n })${mockData ? '' : `: ${nonVoidMockReturnType}`} => (${value})\\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)\n let responsePrelude = '';\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 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 include imports which are actually used in mock.\n const reg = new RegExp(String.raw`\\b${r.name}\\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 };\n}\n\nexport function generateMSW(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n const { pathRoute, override, mock } = generatorOptions;\n const { operationId, response } = generatorVerbOptions;\n\n const route = getRouteMSW(\n pathRoute,\n override.mock?.baseUrl ?? (isFunction(mock) ? undefined : mock?.baseUrl),\n );\n\n const handlerName = `get${pascal(operationId)}MockHandler`;\n const getResponseMockFunctionName = `get${pascal(operationId)}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\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 }\n }\n\n return {\n implementation: {\n function: mockImplementations.join('\\n'),\n handlerName: handlerName,\n handler: handlerImplementations.join('\\n'),\n },\n imports: imports,\n };\n}\n","import type {\n GenerateMockImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GlobalMockOptions,\n} from '@orval/core';\n\nimport { generateMSW, generateMSWImports } from './msw';\n\nexport const DEFAULT_MOCK_OPTIONS: GlobalMockOptions = {\n type: 'msw',\n useExamples: false,\n};\n\nexport const generateMockImports: GenerateMockImports = (importOptions) => {\n switch (importOptions.options?.type) {\n default: {\n // case 'msw':\n return generateMSWImports(importOptions);\n }\n }\n};\n\nexport function generateMock(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: Omit<GeneratorOptions, 'mock'> & {\n mock: GlobalMockOptions;\n },\n) {\n switch (generatorOptions.mock.type) {\n default: {\n // case 'msw':\n return generateMSW(generatorVerbOptions, generatorOptions);\n }\n }\n}\n"],"mappings":";;;AAQA,MAAa,YACX,UACA,YAC+B;CAC/B,MAAM,gBAAgB,UAAU,MAAM,SAAS,SAAS;CACxD,MAAM,2BACJ,UAAU,MAAM,4BAChB,SAAS;AACX,KAAI,WAAW,cAAc,CAC3B,QAAO,2BAA2B,gBAAgB,eAAe;AAEnE,KAAI,SAAS,cAAc,IAAI,UAAU,cAAc,CACrD,QAAO;AAET,QAAO;;;;ACpBT,MAAM,0BAA0B,gBAA6B;AAC3D,QACE,YAAY,mBAAmB,sBAC/B,YAAY,eAAe,sBAC3B,YAAY,kBAAkB,sBAC9B,YAAY,mBAAmB;;AAInC,MAAa,oBAAoB,gBAA6B;CAC5D,MAAM,UAAU,uBAAuB,YAAY;AAEnD,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,QAAQ;;;;AClB5C,MAAa,sBAGT;CACF,KAAK;CACL,QAAQ;CACR,MAAM;CACN,SAAS;CACT,MAAM;CACN,aAAa;CACb,OAAO;CACP,WAAW;CACX,QAAQ;CACR,MAAM;CACN,MAAM;CACN,MAAM;CACN,UAAU;CACV,UAAU;CACV,UAAU;CACV,aAAa;CACb,YAAY;CACZ,KAAK;CACL,KAAK;CACL,UAAU;CACV,MAAM;CACN,SAAS;CACV;AAGD,MAAa,0BAA0B;;;ACdvC,MAAa,kBAAkB;AAE/B,SAASA,mBAAiB,KAAsB;AAC9C,KAAI,CAAC,IAAK,QAAO;AAEjB,QAAO,OAAO,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG;;AAsB3C,SAAgB,cAAc,EAC5B,MACA,aACA,aACA,MACA,SACA,SACA,SACA,8BACA,0BACA,gBAAgB,SACuB;AACvC,KAAI,YAAY,KAAK,CACnB,QAAO,iBAAiB;EACtB,QAAQ;GACN,GAAG;GACH,MAAM,KAAK;GACX,MAAM,KAAK,OAAO,GAAG,KAAK,KAAK,GAAG,KAAK,SAAS,KAAK;GACtD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGJ,MAAM,aAAa;CACnB,MAAM,YAAY,WAAW;CAC7B,MAAM,YAAY,WAAW;CAC7B,MAAM,YAAY,WAAW;CAC7B,MAAM,WAAW,WAAW;CAC5B,MAAM,iBAAiB,WAAW;CAGlC,MAAM,eAAe,WAAW;CAChC,MAAM,2BAA2B,WAAW;AAM5C,KAAI,aAAa,aAAa,UAE5B,QAAO,mBAAmB;EACxB,MAAM;EACN,WAHgB,YAAY,UAAU,YAAY,UAAU;EAI5D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAGJ,KAAI,MAAM,QAAQ,SAAS,EAAE;EAM3B,MAAM,WAAW;AACjB,SAAO,mBAAmB;GACxB,MAAM;IACJ,OAAO,SAAS,KAAK,UAAU;KAC7B,GAAG;KACH;KACD,EAAE;IACH,MAAM,WAAW;IAClB;GACD,WAAW;GACX;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;;AAGJ,KAAI,gBAAgB;EAClB,IAAI,QACF,CAAC,WAAW,QAAQ,cAAc,WAAW,QAAQ,cAAc,UAC/D,MACA;EACN,MAAM,UAA6B,EAAE;EACrC,MAAM,qBAA+B,EAAE;EAEvC,MAAM,UAAU,OAAO,QAAQ,eAAe;AAC9C,MAAI,QAAQ,OAAO,sBAAsB,kBAAkB,aACzD,SAAQ,MAAM,GAAG,MAAM;AACrB,UAAO,EAAE,GAAG,cAAc,EAAE,GAAG;IAC/B;EAEJ,MAAM,kBAAkB,QACrB,KACE,CAAC,KAAK,UAGD;AACJ,OAAI,SAAS,mBAAmB,SAAS,IAAI,CAC3C;GAGF,MAAM,aACJ,aAAa,aACZ,MAAM,QAAQ,aAAa,GAAG,eAAe,EAAE,EAAE,SAAS,IAAI;GAEjE,MAAM,cAAc,cAAc,QAAQ,KAAK,aAAa;AAI5D,OACE,YAAY,KAAK,IACjB,6BAA6B,SAASA,mBAAiB,KAAK,KAAK,CAAC,EAClE;AACA,QAAI,WAEF,QAAO,GADe,OAAO,IAAI,CACT;AAE1B;;GAGF,MAAM,gBAAgB,iBAAiB;IACrC,QAAQ;KACN,GAAI;KACJ,MAAM;KACN,MAAM,WAAW,OAAO,GAAG,WAAW,KAAK,GAAG,QAAQ,KAAK;KAC5D;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACD,CAAC;AAEF,WAAQ,KAAK,GAAG,cAAc,QAAQ;AACtC,sBAAmB,KAAK,IAAI;GAE5B,MAAM,gBAAgB,OAAO,IAAI;GAEjC,MAAM,aAAa,aAAa,QAAQ,KAAK,YAAY,KAAA;AAEzD,OAAI,CAAC,cAAc,CAAC,cAAc,aAAa,CAAC,YAAY;IAC1D,MAAM,YAAY,cAAc,SAAS;AACzC,WAAO,GAAG,cAAc,gCAAgC,cAAc,MAAM,IAAI,UAAU;;AAK5F,OADE,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,OAAO,IACtC,CAAC,cAAc,UAC/B,QAAO,GAAG,cAAc,gCAAgC,cAAc,MAAM;AAG9E,UAAO,GAAG,cAAc,IAAI,cAAc;IAE7C,CACA,OAAO,QAAQ;AAElB,MAAI,cACF,iBAAgB,KAAK,MAAM,kBAAkB;AAG/C,WAAS,gBAAgB,KAAK,KAAK;AACnC,WACE,CAAC,WAAW,QAAQ,cAAc,WAAW,QAAQ,cAAc,UAC/D,MACA;AAEN,SAAO;GACL;GACA;GACA,MAAM,WAAW;GACjB;GACD;;AAGH,KAAI,0BAA0B;AAC5B,MAAI,6BAA6B,KAC/B,QAAO;GAAE,OAAO;GAAM,SAAS,EAAE;GAAE,MAAM,WAAW;GAAM;EAE5D,MAAM,uBAAuB;AAC7B,MACE,YAAY,qBAAqB,IACjC,6BAA6B,SAC3BA,mBAAiB,qBAAqB,KAAK,CAC5C,CAED,QAAO;GAAE,OAAO;GAAM,SAAS,EAAE;GAAE,MAAM,WAAW;GAAM;EAG5D,MAAM,gBAAgB,iBAAiB;GACrC,QAAQ;IACN,GAAG;IACH,MAAM,WAAW;IACjB,MAAM,WAAW,OAAO,GAAG,WAAW,KAAK,MAAM;IAClD;GACD;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;AAEF,SAAO;GACL,GAAG;GACH,OAAO;WACF,wBAAwB,KAAK,cAAc,MAAM;;GAEvD;;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS,EAAE;EAAE,MAAM,WAAW;EAAM;;;;AC3N5D,SAAgB,cAAc,EAC5B,MACA,SACA,aACA,aACA,MACA,SACA,SACA,8BACA,0BACA,gBAAgB,SACuB;CACvC,MAAM,kBAA+B,eAAe,EAAE;AAEtD,KAAI,KAAK,MACP,gCAA+B,CAAC,GAAG,8BAA8B,KAAK,KAAK;CAG7E,MAAM,oBAAoB,oBACxB,gBAAgB,aAAa,cAAc,YAC3C,KACD;AAED,KAAI,kBACF,QAAO;CAGT,IAAI,cAAuD,EACzD,YAAY,EAAE,EACf;CACD,MAAM,aAAa,OAAO,QAAQ,gBAAgB,QAAQ,EAAE,CAAC,CAAC,UAC3D,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,CACnC;AACD,MAAK,MAAM,CAAC,KAAK,YAAY,YAAY;AACvC,MAAI,CAAC,KAAK,SAAS,IAAI,CACrB;AAEF,gBAAc,UAAU,aAAa,QAAQ;;CAG/C,MAAM,cAAc,oBAAoB,YAAY,YAAY,KAAK;AAErE,KAAI,YACF,QAAO;CAGT,MAAM,WAAW,oBAAoB,gBAAgB,YAAY,KAAK;AAEtE,KAAI,SACF,QAAO;AAGT,MACG,QAAQ,OAAO,SAAS,MAAM,eAC7B,gBAAgB,gBAClB,KAAK,YAAY,KAAA,EAEjB,QAAO;EACL,OAAO,KAAK,UAAU,KAAK,QAAQ;EACnC,SAAS,EAAE;EACX,MAAM,KAAK;EACX,WAAW;EACZ;CAGH,MAAM,kBAAkB,gBAAgB,UAAU,EAAE;CACpD,MAAM,aAAqC;EACzC,GAAG;EACH,GAAG,OAAO,YACR,OAAO,QAAQ,gBAAgB,CAAC,QAC7B,UAAqC,OAAO,MAAM,OAAO,SAC3D,CACF;EACF;CAED,MAAM,aAAa,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,OAAO;CAKzE,MAAM,yBAA0B,KAA6B;AAC7D,KACE,CAAC,KAAK,UACN,2BAA2B,8BAC3B,WAAW,OAEX,QAAO;EACL,OAAO,YAAY,WAAW,QAAQ,WAAW;EACjD,SAAS,EAAE;EACX,MAAM,KAAK;EACX,WAAW;EACZ;AAEH,KAAI,KAAK,UAAU,WAAW,KAAK,SAAS;EAC1C,IAAI,QAAQ,WAAW,KAAK;AAG5B,MADoB,CAAC,QAAQ,YAAY,CACzB,SAAS,KAAK,OAAO,IAAI,QAAQ,OAAO,SAAS,SAC/D,SAAQ,YAAY,MAAM;AAG5B,SAAO;GACL,OAAO,YAAY,OAAO,WAAW;GACrC,SAAS,EAAE;GACX,MAAM,KAAK;GACX,WAAW;GACZ;;CAGH,MAAM,OAAO,YAAY,KAAK;CAC9B,MAAM,YACJ,CAAC,CAAC,QAAQ,OAAO,eACjB,iBAAiB,QAAQ,OAAO,YAAY;AAE9C,SAAQ,MAAR;EACE,KAAK;EACL,KAAK,WAAW;GACd,MAAM,cACJ,QAAQ,OAAO,SAAS,cACvB,KAAK,WAAW,WAAW,KAAK,WAAW,YACxC,WACA;GAIN,MAAM,SACJ,OAAO,KAAK,qBAAqB,WAC7B,KAAK,mBACJ,KAAK,WAAW,gBAAgB;GAEvC,MAAM,SACJ,OAAO,KAAK,qBAAqB,WAC7B,KAAK,mBACJ,KAAK,WAAW,gBAAgB;GAEvC,MAAM,WAAqB,EAAE;AAC7B,OAAI,WAAW,KAAA,EAAW,UAAS,KAAK,QAAQ,SAAS;AACzD,OAAI,WAAW,KAAA,EAAW,UAAS,KAAK,QAAQ,SAAS;AACzD,OAAI,aAAa,KAAK,eAAe,KAAA,EACnC,UAAS,KAAK,eAAe,KAAK,aAAa;GACjD,IAAI,QAAQ,YACV,gBAAgB,YAAY,GAAG,SAAS,SAAS,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,GAAG,IACrF,WACD;AACD,OAAI,SAAS,UAAU;IACrB,MAAM,aAAuB,EAAE;AAC/B,QAAI,WAAW,KAAA,EAAW,YAAW,KAAK,QAAQ,SAAS;AAC3D,QAAI,WAAW,KAAA,EAAW,YAAW,KAAK,QAAQ,SAAS;AAC3D,QAAI,aAAa,KAAK,eAAe,KAAA,EACnC,YAAW,KAAK,eAAe,KAAK,aAAa;aACxC,gBAAgB,mBAAmB,KAAA,EAC5C,YAAW,KAAK,mBAAmB,gBAAgB,iBAAiB;AAEtE,YAAQ,YACN,sBAAsB,WAAW,SAAS,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,KAAK,GAAG,IAChF,WACD;;GAEH,MAAM,gBAAmC,EAAE;AAE3C,OAAI,KAAK,KACP,SAAQ,QACN,MACA,eACA,SACA,8BACA,SACD;YACQ,WAAW,KACpB,SAAQ,KAAK,UAAU,KAAK,MAAM;AAGpC,UAAO;IACL;IACA,OAAO,KAAK;IACZ,SAAS;IACT,MAAM,KAAK;IACZ;;EAGH,KAAK,WAAW;GACd,IAAI,QAAQ;AACZ,OAAI,WAAW,KACb,SAAQ,KAAK,UAAU,KAAK,MAAM;AAEpC,UAAO;IACL;IACA,SAAS,EAAE;IACX,MAAM,KAAK;IACZ;;EAGH,KAAK,SAAS;AACZ,OAAI,CAAC,KAAK,MACR,QAAO;IAAE,OAAO;IAAM,SAAS,EAAE;IAAE,MAAM,KAAK;IAAM;AAGtD,OACE,UAAU,KAAK,SACf,6BAA6B,SAC3B,OAAO,KAAK,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG,CAC/C,CAED,QAAO;IAAE,OAAO;IAAM,SAAS,EAAE;IAAE,MAAM,KAAK;IAAM;GAGtD,MAAM,EACJ,OACA,OACA,SAAS,oBACP,iBAAiB;IACnB,QAAQ;KACN,GAAG,KAAK;KACR,MAAM,KAAK;KACX,MAAM,KAAK,OAAO,GAAG,KAAK,KAAK,OAAO;KACvC;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACD,CAAC;AAEF,OAAI,MACF,QAAO;IACL;IACA,SAAS;IACT,MAAM,KAAK;IACZ;GAGH,IAAI,WAAW;AAEf,OACE,WACA,CAAC,MAAM,WAAW,QAAQ,IAC1B,CAAC,MAAM,WAAW,IAAI,IACtB,CAAC,MAAM,WAAW,aAAa,CAE/B,YAAW,IAAI,MAAM;GAGvB,MAAM,SAAU,KAAK,YAAY,gBAAgB;GAGjD,MAAM,SAAU,KAAK,YAAY,gBAAgB;GAGjD,MAAM,WAAqB,EAAE;AAC7B,OAAI,WAAW,KAAA,EAAW,UAAS,KAAK,QAAQ,SAAS;AACzD,OAAI,WAAW,KAAA,EAAW,UAAS,KAAK,QAAQ,SAAS;AAIzD,UAAO;IACL,OACE,yCAJF,SAAS,SAAS,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,GAKjC,mCACkB,SAAS;IAC7C,SAAS;IACT,MAAM,KAAK;IACZ;;EAGH,KAAK,UAAU;GACb,MAAM,SAAU,KAAK,aAAa,gBAAgB;GAGlD,MAAM,SAAU,KAAK,aAAa,gBAAgB;GAGlD,MAAM,cAAwB,EAAE;AAChC,OAAI,WAAW,KAAA,EAAW,aAAY,KAAK,QAAQ,SAAS;AAC5D,OAAI,WAAW,KAAA,EAAW,aAAY,KAAK,QAAQ,SAAS;GAG5D,IAAI,QAAQ,sBADV,YAAY,SAAS,IAAI,aAAa,YAAY,KAAK,KAAK,CAAC,MAAM,GAC5B;GACzC,MAAM,gBAAmC,EAAE;AAE3C,OAAI,KAAK,KACP,SAAQ,QACN,MACA,eACA,SACA,8BACA,SACD;YACQ,KAAK,QACd,SAAQ,4BAA4B,KAAK,UAAU,KAAK,QAAQ,CAAC;YACxD,WAAW,KACpB,SAAQ,KAAK,UAAW,KAA6B,MAAM;AAG7D,UAAO;IACL,OAAO,YAAY,OAAO,WAAW;IACrC,OAAO,KAAK;IACZ,MAAM,KAAK;IACX,SAAS;IACV;;EAGH,KAAK,OACH,QAAO;GACL,OAAO;GACP,SAAS,EAAE;GACX,MAAM,KAAK;GACZ;EAGH;AACE,OAAI,KAAK,MAAM;IACb,MAAM,cAAiC,EAAE;AAQzC,WAAO;KACL,OARY,QACZ,MACA,aACA,SACA,6BACD;KAIC,OAAO,KAAK;KACZ,SAAS;KACT,MAAM,KAAK;KACZ;;AAGH,UAAO,cAAc;IACnB;IACA;IACA;IACA;IACA,SAAS,UACL;KACE,WAAW,QAAQ;KACnB,oBAAoB,EAAE;KACvB,GACD,KAAA;IACJ;IACA;IACA;IACA;IACA;IACD,CAAC;;;AAKR,SAAS,YAAY,MAAwB;AAC3C,KAAI,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,OAAO,EAAE;EAC1D,MAAM,mBAAmB,KAAK,KAAK,QAAQ,MAAM,MAAM,OAAO;AAI9D,SAFE,iBAAiB,WAAW,IAAI,iBAAiB,KAAK;;AAK1D,KAAI,KAAK,KAAM,QAAO,KAAK;AAC3B,KAAI,CAAC,KAAK,KAAM;CAEhB,MAAM,YAAY,IAAI,IAAI,KAAK,KAAK,KAAK,UAAU,OAAO,MAAM,CAAC;AACjE,KAAI,UAAU,OAAO,EAAG;CAExB,MAAM,OAAO,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC,GAAG,EAAE;AAC1C,KAAI,CAAC,KAAM;AACX,QAAO,CAAC,UAAU,SAAS,CAAC,SAAS,KAAK,GAAG,OAAO,KAAA;;AAGtD,SAAS,QACP,MACA,SACA,SACA,8BACA,MACA;AACA,KAAI,CAAC,KAAK,KAAM,QAAO;CAUvB,IAAI,YAAY,IATS,KAAK,KAC3B,QAAQ,MAAM,MAAM,KAAK,CACzB,KAAK,MACJ,SAAS,YAAa,SAAS,KAAA,KAAa,SAAS,EAAE,GACnD,IAAI,OAAO,EAAE,CAAC,KACd,EACL,CACA,KAAK,IAAI,CAEyB;AACrC,KAAI,QAAQ,OAAO,SAAS,uBAAuB,eAAe,KAChE,KAAI,KAAK,SAAS,6BAA6B,WAAW,GAAG;AAC3D,eAAa,OAAO,KAAK,OAAO,KAAK,KAAK,SAAS,KAAK,GAAG,KAAK;AAChE,UAAQ,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;QAC5B;EACL,MAAM,kBAAkB,6BAA6B,GAAG,GAAG;AAC3D,MAAI,CAAC,gBACH,QAAO;AAGT,eAAa,OAAO,gBAAgB,IAAI,KAAK,KAAK;AAClD,MAAI,CAAC,KAAK,MAAM,SAAS,KAAK,CAAE,cAAa;AAC7C,UAAQ,KAAK,EACX,MAAM,iBACP,CAAC;;KAGJ,cAAa;AAIf,KAAI,KAAK,SAAS,SAAS,UAAU;AACnC,cAAY,iBAAiB,KAAK,KAAK;AACvC,UAAQ,KAAK;GACX,MAAM,KAAK;GACX,QAAQ;GACT,CAAC;;AAGJ,QAAO,KAAK,MAAM,SAAS,KAAK,GAC5B,+BAA+B,UAAU,KACzC,8BAA8B,UAAU;;;;ACrc9C,SAAS,QAAQ,KAAa;AAC5B,QAAO,IAAI,WAAW,IAAI,IAAI,IAAI,SAAS,IAAI;;AAGjD,SAAgB,oBACd,aAAkD,EAAE,EACpD,MACA;CACA,MAAM,OAAO,KAAK,QAAQ,KAAK,KAAK;CACpC,MAAM,WAAW,OAAO,QAAQ,WAAW,CAAC,MAAM,CAAC,SAAS;AAC1D,MAAI,QAAQ,IAAI,EAAE;GAChB,MAAM,QAAQ,IAAI,OAAO,IAAI,MAAM,GAAG,GAAG,CAAC;AAC1C,OAAI,MAAM,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAC3C,QAAO;;AAIX,MAAI,KAAK,UAAU,KACjB,QAAO;AAGT,SAAO;GACP;AAEF,KAAI,CAAC,SACH;CAGF,MAAM,aAAa,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,OAAO;AAEzE,QAAO;EACL,OAAO,YAAY,SAAS,IAAc,WAAW;EACrD,SAAS,EAAE;EACX,MAAM,KAAK;EACX,WAAW;EACZ;;AAGH,SAAgB,YAAY,OAAe,UAAoB;AAC7D,QAAO,WAAW,+BAA+B,MAAM,YAAY;;AAqBrE,SAAgB,iBAAiB,EAC/B,QACA,aACA,aACA,MACA,SACA,SACA,SACA,8BACA,0BACA,iBAC8D;AAC9D,KAAI,YAAY,OAAO,EAAE;EACvB,MAAM,kBAAkB;EAMxB,MAAM,EAAE,MAAM,aAAa,WADL,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO,IACjB,QAAQ;EAE7D,MAAM,YAAY,MAAM,QAAQ,SAAS,GACpC,KACC,QAAQ,MAER,GAAG,SACJ,GACD,KAAA;EAEJ,MAAM,YAAY;GAChB,GAAG;GACH;GACA,MAAM,gBAAgB;GACtB,OAAO;GACP,UAAU,CACR,GAAK,WAAW,YAAqC,EAAE,EACvD,GAAI,gBAAgB,YAAY,EAAE,CACnC;GACD,GAAI,gBAAgB,aAAa,KAAA,IAC7B,EAAE,GACF,EAAE,UAAU,gBAAgB,UAAU;GAC3C;EAED,MAAM,eAAe,UAAU,QAC3B,UACA,UAAU,QACR,UACA;EAEN,MAAM,SAAS,cAAc;GAC3B,MAAM;GACN;GACA;GACA;GACA,SAAS,UACL;IACE,WACE,QAAQ,cAAc,UAAU,eAAe,QAAQ;IACzD,oBACE,iBAAiB,UAAU,EAAE,GAAG,QAAQ;IAC3C,GACD,KAAA;GACJ;GACA;GACA;GACA;GACA;GACD,CAAC;AACF,MACE,OAAO,UACN,UAAU,SAAS,YAAY,UAAU,UAC1C,SAAS,cAAc,SACvB;GACA,MAAM,WAAW,MAAM,OAAO,YAAY,CAAC,UAAU,OAAO,UAAU,KAAK,CAAC;AAC5E,OACE,CAAC,yBAAyB,MAAM,MAC9B,EAAE,SAAS,gBAAgB,WAAW,CACvC,EACD;IAIA,MAAM,wBAHgB,UAAU,eAGa;IAE7C,IAAI,OAAO,WAAW,UAAU,KAAK;AACrC,QAAI,sBACF,QAAO,QAAQ,KAAK,KAAK,sBAAsB;IAIjD,MAAM,OAAO,gBAAgB,SAAS,MADzB,GAAG,gBAAgB,IAAI,KAAK,OACQ,KAAK,UAAU,KAAK,QAAQ,OAAO,MAAM,WAAW,MAAM,GAAG,KAAK,QAAQ,OAAO,MAAM,OAAO,gBAAgB;AAC/J,6BAAyB,KAAK,KAAK;;AAGrC,UAAO,QAAQ,UAAU,WACrB,GAAG,SAAS,MACZ,OAAO,SAAS;AAEpB,UAAO,QAAQ,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC;;AAG/C,SAAO;GACL,GAAG;GACH,MAAM,QAAQ,UAAU;GACzB;;AAeH,QAAO;EACL,GAba,cAAc;GAC3B,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAGA,MAAM,QAAQ,OAAO;EACtB;;AAGH,SAAS,QAAQ,QAAoB;AACnC,KAAI,YAAY,OAAO,CACrB;AAGF,QACG,OAAO,SACP,OAAO,aAAa,WAAW,OAAO,QAAQ,UAAU,KAAA;;;;ACnM7D,SAAS,iBAAiB,KAAsB;AAC9C,KAAI,CAAC,IAAK,QAAO;AAEjB,QAAO,OAAO,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG;;AAqB3C,SAAgB,mBAAmB,EACjC,MACA,WACA,aACA,aACA,MACA,SACA,SACA,SACA,8BACA,4BAC4C;CAC5C,MAAM,iBAAoC,EAAE;CAC5C,MAAM,qBAA+B,CAAC,GAAI,SAAS,sBAAsB,EAAE,CAAE;CAC7E,MAAM,iBAAkB,KAAK,cAAc,EAAE;CAC7C,MAAM,eAAe,KAAK;CAK1B,MAAM,oBAFJ,YAAY,KAAK,IAAI,CAAC,6BAA6B,SAAS,KAAK,KAAK,IAG/C,KAAK,aACxB,iBAAiB;EACf,QAAQ,OAAO,YACb,OAAO,QAAQ,KAAK,CAAC,QAAQ,CAAC,SAAS,QAAQ,UAAU,CAC1D;EACD,SAAS;GACP,WAAW;GACX,oBAAoB,EAAE;GACvB;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,GACF,KAAA;AAEN,oBAAmB,KAAK,GAAI,mBAAmB,sBAAsB,EAAE,CAAE;AACzE,gBAAe,KAAK,GAAI,mBAAmB,WAAW,EAAE,CAAE;CAC1D,IAAI,8BAA8B;CAElC,MAAM,oBAA8B,EAAE;AACtC,KAAI,cAAc,SAAS;AACzB,MAAI,aACF,mBAAkB,KAAK,GAAG,aAAa;AAEzC,OAAK,MAAM,OAAO,eAChB,KAAI,SAAS,IAAI,IAAI,IAAI,SACvB,mBAAkB,KAAK,GAAI,IAAI,SAAsB;;CAK3D,IAAI,QAAQ,cAAc,UAAU,KAAK;AAEzC,MAAK,MAAM,OAAO,gBAAgB;EAChC,MAAM,UAAU,YAAY,IAAI,GAAG,iBAAiB,IAAI,KAAK,GAAG;AAWhE,MANE,cAAc,UACV,YACC,YAAY,KAAK,QACf,6BAA6B,SAAS,QAAQ,IAAI,CAAC,KAAK,SAC3D,OAEa;AACjB,OAAI,eAAe,WAAW,EAC5B,SAAQ;AAEV;;EA4BF,MAAM,gBAAgB,iBAAiB;GACrC,eAxBoB;AACpB,QAAI,cAAc,WAAW,kBAAkB,WAAW,EACxD,QAAO;KACL,GAAG;KACH,MAAM,KAAK;KACX,MAAM,KAAK,QAAQ;KACpB;IAIH,MAAM,cADkB,IACY;IACpC,MAAM,mBAAmB,cACrB,CAAC,GAAG,mBAAmB,GAAG,YAAY,GACtC;AAEJ,WAAO;KACL,GAAG;KACH,MAAM,KAAK;KACX,MAAM,KAAK,QAAQ;KACnB,UAAU,CAAC,GAAG,IAAI,IAAI,iBAAiB,CAAC;KACzC;OACC;GAIF,SAAS;IACP;IACA,oBACE,cAAc,UACT,mBAAmB,sBAAsB,EAAE,GAC5C;IACP;GACD;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;AAEF,iBAAe,KAAK,GAAG,cAAc,QAAQ;AAC7C,qBAAmB,KAAK,GAAI,cAAc,sBAAsB,EAAE,CAAE;AAEpE,MAAI,cAAc,UAAU,MAAM;AAChC,iCAA8B;AAC9B;;AAGF,MAAI,cAAc,SAAS;AACzB,OAAI,cAAc,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,MAAM;AAC9D,kCAA8B;AAC9B,aAAS,MAAM,cAAc,MAAM;AACnC;;AAGF,OAAI,cAAc,SAAS,UAAU;AACnC,kCAA8B;AAC9B,aAAS,cAAc,MAAM,WAAW,QAAQ,GAC5C,MAAM,cAAc,MAAM,KAC1B,OAAO,cAAc,MAAM;AAC/B;;;AAIJ,WAAS,GAAG,cAAc,MAAM;;CAElC,IAAI,aACF,UAAU,cACN,QAEA,GAAG,cAAc,WAAW,CAAC,8BAA8B,MAAM,KAAK,QAAQ,cAAc,UAAW,8BAA8B,KAAK,MAAO;AACvJ,KAAI,kBACF,cAAa,WAAW,WAAW,MAAM,GACrC,OAAO,WAAW,IAAI,kBAAkB,MAAM,KAC9C,OAAO,WAAW,IAAI,kBAAkB,MAAM;AAEpD,KAAI,WAAW,SAAS,IAAI,CAC1B,cAAa,WAAW,MAAM,GAAG,KAAK,IAAI,GAAG,WAAW,SAAS,EAAE,CAAC;AAGtE,QAAO;EACL,OAAO;EACP,SAAS;EACT,MAAM,KAAK;EACX;EACD;;;;ACvMH,MAAM,YAAY,SAA0B,oBAAoB,KAAK,KAAK;AAE1E,MAAM,gBAAgB,SAAyB;CAC7C,MAAM,UAAU,4BAA4B,KAAK,KAAK;AACtD,KAAI,CAAC,SAAS,OAAQ,QAAO;CAE7B,MAAM,OAAO,QAAQ;CACrB,MAAM,QAAQ,SAAS,MAAM,QAAQ,GAAG,EAAE;EACxC,YAAY;EACZ,YAAY;EACZ,MAAM;EACN,KAAK;EACN,CAAC;CACF,MAAM,OAAO,SAAS,QAAQ,GAAG,GAAG,aAAa,QAAQ,GAAG,GAAG,QAAQ;AAEvE,QAAO,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,SAAS,GAAG,OAAO,QAAQ;;AAGxE,MAAa,eAAe,OAAe,UAAU,QAAQ;AAC3D,SAAQ,MAAM,WAAW,KAAK,OAAO,GAAG,KAAK;CAC7C,MAAM,gBAAgB,MAAM,MAAM,IAAI;CACtC,IAAI,gBAAgB;AAEpB,MAAK,MAAM,CAAC,OAAO,SAAS,cAAc,SAAS,EAAE;AACnD,MAAI,CAAC,QAAQ,CAAC,MACZ;AAGF,MAAI,CAAC,KAAK,SAAS,IAAI,EAAE;AACvB,mBAAgB,GAAG,cAAc,GAAG;AACpC;;AAGF,kBAAgB,GAAG,cAAc,GAAG,aAAa,KAAK;;AAGxD,QAAO;;;;ACtBT,SAAS,6BACP,YAGA,MACA;CACA,MAAM,qBACJ,OAAO,eAAe,aAAa,WAAW,KAAK,GAAG;CACxD,MAAM,iBAAyC,EAAE;AAEjD,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,mBAAmB,CAK3D,gBAAe,QAJQ,WAAW,MAAM,GACpC,IAAI,OAAO,MAAM,CAAC,OACjB,UAAU,MAAM,IAAI,aAEY,WACnC,6DACA,QACD;AAGH,QAAO;;AAGT,SAAS,mBACP,MACA,UACa;CACb,MAAM,aAAa,UAAU,oBAClB;EACL,MAAM,iBACJ,EAAE;AAEJ,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,WAAW,EAAE;AAC9D,OAAI,CAAC,OAAO,MAAM,WAChB;AAGF,kBAAe,OAAO,EACpB,YAAY,6BACV,MAAM,KAAK,YACX,KACD,EACF;;AAGH,SAAO;KACL,GACJ,KAAA;CACJ,MAAM,OAAO,UAAU,cACZ;EACL,MAAM,WAAoD,EAAE;AAE5D,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,KAAK,EAAE;AACxD,OAAI,CAAC,OAAO,MAAM,WAChB;AAGF,YAAS,OAAO,EACd,YAAY,6BACV,MAAM,KAAK,YACX,KACD,EACF;;AAGH,SAAO;KACL,GACJ,KAAA;AAEJ,QAAO;EACL,UAAU,UAAU,MAAM;EAC1B,UAAU,UAAU,MAAM;EAC1B,WAAW,UAAU,MAAM;EAC3B,WAAW,UAAU,MAAM;EAC3B,WAAW,UAAU,MAAM;EAC3B,WAAW,UAAU,MAAM;EAC3B,UAAU,UAAU,MAAM;EAC1B,gBAAgB,UAAU,MAAM;EAChC,GAAI,UAAU,MAAM,aAChB,EACE,YAAY,6BACV,SAAS,KAAK,YACd,KACD,EACF,GACD,EAAE;EACN,GAAI,UAAU,MAAM,SAChB,EACE,QAAQ,6BAA6B,SAAS,KAAK,QAAQ,KAAK,EACjE,GACD,EAAE;EACN,GAAI,aAAa,EAAE,YAAY,GAAG,EAAE;EACpC,GAAI,OAAO,EAAE,MAAM,GAAG,EAAE;EACzB;;AAGH,SAAS,oBACP,wBACA,KACA;CACA,MAAM,QAAQ,uBAAuB;AACrC,QAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;;AAG7C,SAAS,qBACP,YACA,wBACA;CACA,MAAM,UAAU,WAAW,SAAS,KAAK;CACzC,MAAM,OAAO,UAAU,WAAW,MAAM,GAAG,GAAG,GAAG;CACjD,MAAM,WAAW,oBAAoB,wBAAwB,WAAW;CACxE,MAAM,WAAW,oBAAoB,wBAAwB,WAAW;AAExE,SAAQ,MAAR;EACE,KAAK,UAAU;GACb,MAAM,cAAwB,EAAE;AAChC,OAAI,aAAa,KAAA,EAAW,aAAY,KAAK,QAAQ,WAAW;AAChE,OAAI,aAAa,KAAA,EAAW,aAAY,KAAK,QAAQ,WAAW;GAChE,MAAM,YACJ,YAAY,SAAS,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC,KAAK;AAC3D,UAAO,UACH,wCAAwC,UAAU,iCAClD;;EAEN,KAAK,UAAU;GACb,MAAM,cAAwB,EAAE;AAChC,OAAI,aAAa,KAAA,EAAW,aAAY,KAAK,QAAQ,WAAW;AAChE,OAAI,aAAa,KAAA,EAAW,aAAY,KAAK,QAAQ,WAAW;GAChE,MAAM,YACJ,YAAY,SAAS,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC,KAAK;AAC3D,UAAO,UACH,wCAAwC,UAAU,kCAClD;;EAEN,QACE,QAAO;;;AAiBb,SAAS,kBAAkB,UAA8B;AACvD,KAAI,MAAM,QAAQ,SAAS,CACzB,QAAO;AAGT,KAAI,YAAY,OAAO,aAAa,SAClC,QAAO,OAAO,OAAO,SAAoC;AAG3D,QAAO,EAAE;;AAGX,SAAS,mBAAmB,SAA2B;AACrD,KAAI,WAAW,OAAO,YAAY,YAAY,WAAW,QACvD,QAAQ,QAAgC;AAG1C,QAAO;;AAGT,SAAgB,2BAA2B,EACzC,aACA,MACA,YACA,WACA,wBACA,aACA,SACA,aACA,4BACoC;CACpC,MAAM,SAAS;EACb,aAAa,EAAE;EACf,SAAS,EAAE;EACZ;AAED,MAAK,MAAM,YAAY,WAAW;EAChC,MAAM,EAAE,OAAO,YAAY,SAAS,UAAU,SAAS,UAAU;EACjE,IAAI,EAAE,mBAAmB;AAEzB,MAAI,QAAQ,OAAO,SAAS,MAAM,eAAe,aAAa,aAAa;GACzE,MAAM,eAAe,mBACnB,WACE,gBAAgB,WAChB,kBAAkB,SAAS,CAAC,MAC5B,kBAAkB,gBAAgB,SAAS,CAAC,GAC/C;AAED,OAAI,iBAAiB,KAAA,GAAW;AAC9B,WAAO,YAAY,KACjB,cACI,YAAY,cAAc,WAAW,GACrC,KAAK,UAAU,aAAa,CACjC;AACD;;;AAIJ,MAAI,CAAC,cAAc,wBAAwB,SAAS,WAAW,EAAE;GAC/D,MAAM,QAAQ,qBAAqB,YAAY,uBAAuB;AAEtE,UAAO,YAAY,KACjB,cAAc,YAAY,OAAO,WAAW,GAAG,MAChD;AACD;;AAGF,MAAI,CAAC,kBAAkB,eAAe,OACpC,kBAAiB;GAAE,MAAM;GAAU,QAAQ;GAAU;WAC5C,CAAC,eACV;EAGF,MAAM,iBAAiB,WAAW,gBAAgB,QAAQ,CAAC;EAE3D,MAAM,SAAS,cAAc;GAC3B,MAAM;IACJ,GAAI;IACJ,MAAM;IACN,GAAI,QAAQ,OAAO,SAAS,uBAAuB,UAAU,QACzD,EAAE,OAAO,MAAM,GACf,EAAE;IACP;GACD;GACA,aAAa;GACb;GACA;GACA;GACA,8BAA8B,EAAE;GAChC;GACA,eAAe;GAChB,CAAC;AAEF,SAAO,QAAQ,KAAK,GAAG,OAAO,QAAQ;AACtC,SAAO,YAAY,KACjB,cAAc,YAAY,OAAO,OAAO,WAAW,GAAG,OAAO,MAC9D;;AAGH,QAAO;;AAgBT,SAAgB,kBAAkB,EAChC,aACA,MACA,YACA,WACA,UACA,aACA,SACA,aACA,4BAC2B;CAG3B,MAAM,EAAE,aAAa,YAAY,2BAA2B;EAC1D;EACA;EACA;EACA;EACA,wBAP6B,mBAAmB,QAAQ,MAAM,SAAS;EAQvE;EACA;EACA;EACA;EACD,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,YAAY,KAAK,KAAK,GAAG;EAC3C;EACA;EACD;;AAGH,SAAgB,2BACd,eACA,aACA,UACA;CACA,MAAM,mBACJ,SAAS,WAAW,cAAc,MAAM,QACxC,cACG,KAAK,iBAAiB,SAAS,KAAK,eAAe,MAAM,KAAK,CAC9D,MAAM,MAAM,MAAM,KAAA,EAAU;AAKjC,SAJuB,WAAW,iBAAiB,GAC/C,IAAI,OAAO,iBAAiB,CAAC,OAC7B,UAAU,iBAAiB,GAER,WACrB,6DACA,QACD;;;;AC1TH,SAAS,mBACP,SACuB;CACvB,MAAM,WAAW,SAAS,UAAU;CACpC,MAAM,SAAS,SAAS;CAExB,MAAM,UAAU;EACd;GAAE,MAAM;GAAQ,QAAQ;GAAM;EAC9B;GAAE,MAAM;GAAgB,QAAQ;GAAM;EACtC;GAAE,MAAM;GAAyB,QAAQ;GAAO;EACjD;AAED,KAAI,SACF,SAAQ,KAAK;EAAE,MAAM;EAAS,QAAQ;EAAM,CAAC;AAG/C,QAAO,CACL;EAAE;EAAS,YAAY;EAAO,EAC9B;EACE,SAAS,CAAC;GAAE,MAAM;GAAS,QAAQ;GAAM,CAAC;EAC1C,YAAY,SACR,0BAA0B,WAC1B;EACL,CACF;;AAGH,MAAa,sBAA2C,EACtD,gBACA,SACA,aACA,cACA,gCACA,cACI;AACJ,QAAO,0BACL,gBACA,CAAC,GAAG,mBAAmB,QAAQ,EAAE,GAAG,QAAQ,EAC5C,aACA,cACA,+BACD;;AAGH,SAAS,mBACP,MACA,OACA,iCACA,iBACA,EAAE,aAAa,UAAU,MAAM,QAC/B,EAAE,UAAU,SAAS,QACrB,YACA,QACA,iBACA,WACA,cACA,0BACA;CACA,MAAM,8BAA8B,CAAC,GAAG,yBAAyB;CACjE,MAAM,EAAE,aAAa,YAAY,YAAY,kBAAkB;EAC7D;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA,aAAa,WAAW,KAAK,GAAG,KAAA,IAAY;EAC5C;EACD,CAAC;CAEF,MAAM,WAAW,2BAA2B,MAAM,aAAa,SAAS;CAExE,IAAI,QAAQ;AAEZ,KAAI,SACF,SAAQ;UACC,YAAY,SAAS,EAC9B,SAAQ,8BAA8B,WAAW;UACxC,YAAY,GACrB,SAAQ,YAAY;CAGtB,MAAM,wBAAwB,MAAM,SAAS,gBAAgB;CAC7D,MAAM,yBAAyB,OAC7B,GAAG,WAAW,QAAQ,IAAI,OAAO,qBAAqB,GAAG,SAAS,OAAO;CAC3E,MAAM,uBAAuB,aAC3B,SAAS,MAAM,CAAC,WAAW,cAAc,GAAG,KAAK;CACnD,MAAM,2BAA2B,aAC/B,SACG,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,MAAM,CAAC,WAAW,cAAc,GAAG,CAAC,CACvD,SAAS,SAAS;CACvB,MAAM,2BAA2B,OAC/B,OAAO,8BACP,OAAO,qBACP,GAAG,WAAW,SAAS,IACvB,GAAG,WAAW,SAAS,IACvB,GAAG,WAAW,SAAS,IACvB,GAAG,WAAW,QAAQ;CAExB,MAAM,uBAAuB,WAAW,KAAK,GACzC,KAAA,IAEE,MACC,sBAAsB,aAAa;CAC1C,MAAM,4BAA4B,uBAC9B,aAAa,MAAM,OAAO,GAAG,aAAa,KAAK,qBAAqB,GACpE,KAAA;CACJ,MAAM,2BAA2B,4BAC7B,CAAC,0BAA0B,GAC3B;CAEJ,MAAM,yBAAyB,aAAa,MAAM,OAChD,sBAAsB,GAAG,CAC1B;CACD,MAAM,4BAA4B,oBAAoB,WAAW;CAMjE,MAAM,iBACH,6BAA6B,0BAC9B,yBAAyB,MAAM,OAAO,sBAAsB,GAAG,CAAC;CAClE,MAAM,mBACJ,eAAe,UACf,yBAAyB,MAAM,OAAO,wBAAwB,GAAG,CAAC;CACpE,MAAM,uBAAuB,SAAS,UAAU;CAEhD,MAAM,8BAA8B,GAAG,kCAAkC,OACvE,KACD;CACD,MAAM,cAAc,GAAG,kBAAkB,OAAO,KAAK;CAErD,MAAM,gCAAgC,yBAAyB,MAC7D,4BAA4B,OAC7B;AACD,0BAAyB,KAAK,GAAG,8BAA8B;CAC/D,MAAM,sBACJ,8BAA8B,SAAS,IACnC,GAAG,8BAA8B,KAAK,OAAO,CAAC,QAC9C;CAEN,MAAM,iBAAiB,mBACnB,WAAW,WAAW,aAAa,cAAc,GACjD;CAMJ,MAAM,kBACJ,mBAAmB,UACnB,eAAe,MAAM,IAAI,CAAC,MAAM,SAAS,KAAK,MAAM,KAAK,OAAO;CAClE,MAAM,sBAAsB,kBACvB,UAAU,MAAM,MAAM,EAAE,UAAU,OAAO,EAAE,OAAO,QACnD,KAAA;CACJ,MAAM,wBAAwB,kBAC1B,eACG,MAAM,IAAI,CACV,QAAQ,SAAS,KAAK,MAAM,KAAK,OAAO,CACxC,KAAK,MAAM,CACX,MAAM,GACT;CAEJ,MAAM,qBAAqB,yBAAyB,MACjD,OAAO,GAAG,SAAS,OAAO,IAAI,GAAG,SAAS,QAAQ,CACpD;CACD,MAAM,sBACJ,oBAAoB,eAAe,IACnC,wBAAwB,eAAe;CACzC,MAAM,uBAAuB,mBAAmB,sBAAsB;CACtE,MAAM,2BAA2B,sBAAsB,CAAC;CAQxD,MAAM,gCACJ,kBACA,sBACA,uBACA,mBAAmB;CAErB,MAAM,qBAAqB,uBACvB,GAAG,oBAAoB,eAAe,4BAA4B,MAChE,wBACI,qBAAqB,qBAAqB,SAC1C,GACL,GAAG,WAAW,KAAK,KAAK,wBAAwB,OAAO,MAAM,SAC9D;CAEJ,MAAM,QAAQ,SAAS,UAAU,WAAW,KAAK,GAAG,KAAA,IAAY,KAAK;CACrE,MAAM,YAAY;CAClB,MAAM,uBAAuB;yEAC0C,UAAU;QAC3E,4BAA4B;CAElC,MAAM,aAAa,WAAW,YAAY,MAAM,OAAO,QAAQ,OAAO,KAAK;CAG3E,MAAM,qBACH,6BACD,wBAAwB,0BAA0B,GAC9C,4BACA,aAAa,MAAM,OAAO,wBAAwB,GAAG,CAAC,KAC1D;CAYF,MAAM,cAJJ,6BACA,CAAC,CAAC,6BACF,CAAC,sBAAsB,0BAA0B,IACjD,yBAEE,aAAa,MAAM,OAAO,sBAAsB,GAAG,CAAC,GACpD,yBAAyB,MAAM,OAAO,sBAAsB,GAAG,CAAC;CACpE,MAAM,aACJ,gBAAgB,qBAAqB,aAAa,SAAS,OAAO,GAC9D,QACA,gBAAgB,cACd,SACA;CAER,IAAI;CAGJ,IAAI,kBAAkB;AACtB,KAAI,iBACF,mBAAkB,sBAAsB,qBAAqB;UACpD,mBAAmB,8BAC5B,mBAAkB,wBAAwB,qBAAqB;UACtD,kBAAkB,CAAC,yBAC5B,mBAAkB,wBAAwB,qBAAqB;;AAGjE,KAAI,CAAC,qBACH,gBAAe;kBACD,WAAW;;UAEhB,iBACT,gBAAe;;;;kBAID,WAAW;sCACS,kBAAkB;;UAE3C,iBAAiB;EAI1B,IAAI;AACJ,MAAI,8BACF,eAAc;yBACK,WAAW,2BAA2B,WAAW;sDACpB,WAAW;WAClD,kBAAkB,CAAC,yBAC5B,eAAc,gBAAgB,WAAW;;oBAE3B,WAAW;MAEzB,eAAc,6CAA6C,WAAW;AAExE,iBAAe;2CACwB,oBAAoB;UACrD;YACG,8BAIT,gBAAe;uBACI,WAAW,2BAA2B,WAAW;oDACpB,WAAW;UAClD,kBAAkB,CAAC,yBAC5B,gBAAe,gBAAgB,WAAW;kBAC5B,WAAW;;KAGzB,gBAAe,qBAAqB,qBAAqB;kBAC3C,WAAW;;CAI3B,MAAM,WAAW,qCAAqC,KAAK;CAE3D,MAAM,wBAAwB;eACjB,YAAY,yBAAyB,eAAe,OAAO,UAAU,IAAI,SAAS,eAAe,eAAe,MAAM,eAAe;gBACpI,KAAK,IAAI,MAAM,YAAY,UAAU,IAAI,SAAS,QAC9D,UAAU,QACN,KACA,eAAe,WAAW,MAAM,GAAG,IAAI,OAAO,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,IAC/E;IACC,uBAAuB,KAAK,+EAA+E;IAC3G,gBAAgB;aACP,aAAa;;;CAIxB,MAAM,yBAAyB,CAC7B,GAAG,SACH,GAAG,SAAS,QAAQ,QAAQ,MAAM;EAEhC,MAAM,MAAM,IAAI,OAAO,OAAO,GAAG,KAAK,EAAE,KAAK,IAAI;AACjD,SAAO,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,mBAAmB;GACtE,CACH;AAED,QAAO;EACL,gBAAgB;GACd,UAAU;GACG;GACb,SAAS;GACV;EACD,SAAS;EACV;;AAGH,SAAgB,YACd,sBACA,kBAC4B;CAC5B,MAAM,EAAE,WAAW,UAAU,SAAS;CACtC,MAAM,EAAE,aAAa,aAAa;CAElC,MAAM,QAAQ,YACZ,WACA,SAAS,MAAM,YAAY,WAAW,KAAK,GAAG,KAAA,IAAY,MAAM,SACjE;CAED,MAAM,cAAc,MAAM,OAAO,YAAY,CAAC;CAC9C,MAAM,8BAA8B,MAAM,OAAO,YAAY,CAAC;CAE9D,MAAM,2BAAqC,EAAE;CAE7C,MAAM,iBAAiB,mBACrB,IACA,OACA,6BACA,aACA,sBACA,kBACA,SAAS,WAAW,SACpB,SAAS,MAAM,QAAQ,IAAI,OAAO,OAClC,SAAS,SACT,SAAS,MAAM,SACf,SAAS,cACT,yBACD;CAED,MAAM,sBAAsB,CAAC,eAAe,eAAe,SAAS;CACpE,MAAM,yBAAyB,CAAC,eAAe,eAAe,QAAQ;CACtE,MAAM,UAAU,CAAC,GAAG,eAAe,QAAQ;AAE3C,KACE,iBAAiB,QACjB,SAAS,iBAAiB,KAAK,IAC/B,iBAAiB,KAAK,uBAEtB,MAAK,MAAM,kBAAkB,CAC3B,GAAG,SAAS,MAAM,SAClB,GAAG,SAAS,MAAM,OACnB,EAAE;EACD,MAAM,aAAa,mBACjB,eAAe,KACf,OACA,6BACA,aACA,sBACA,kBACA,eAAe,OACf,eAAe,KACf,SAAS,SACT,CAAC,eAAe,EAChB,CAAC,eAAe,YAAY,EAC5B,yBACD;AACD,sBAAoB,KAAK,WAAW,eAAe,SAAS;AAC5D,yBAAuB,KAAK,WAAW,eAAe,QAAQ;AAC9D,UAAQ,KAAK,GAAG,WAAW,QAAQ;;AAIvC,QAAO;EACL,gBAAgB;GACd,UAAU,oBAAoB,KAAK,KAAK;GAC3B;GACb,SAAS,uBAAuB,KAAK,KAAK;GAC3C;EACQ;EACV;;;;ACvZH,MAAa,uBAA0C;CACrD,MAAM;CACN,aAAa;CACd;AAED,MAAa,uBAA4C,kBAAkB;AACzE,SAAQ,cAAc,SAAS,MAA/B;EACE,QAEE,QAAO,mBAAmB,cAAc;;;AAK9C,SAAgB,aACd,sBACA,kBAGA;AACA,SAAQ,iBAAiB,KAAK,MAA9B;EACE,QAEE,QAAO,YAAY,sBAAsB,iBAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/mock",
3
- "version": "8.7.0",
3
+ "version": "8.8.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,13 +35,13 @@
35
35
  "nuke": "rimraf .turbo dist node_modules"
36
36
  },
37
37
  "dependencies": {
38
- "@orval/core": "8.7.0",
38
+ "@orval/core": "8.8.1",
39
39
  "remeda": "^2.33.6"
40
40
  },
41
41
  "devDependencies": {
42
42
  "eslint": "10.1.0",
43
43
  "rimraf": "6.1.2",
44
- "tsdown": "0.20.3",
44
+ "tsdown": "0.21.9",
45
45
  "typescript": "5.9.3",
46
46
  "vitest": "4.0.18"
47
47
  },