@orval/mock 8.12.3 → 8.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _$_orval_core0 from "@orval/core";
2
- import { ClientMockGeneratorBuilder, FakerMockOptions, GenerateMockImports, GeneratorOptions, GeneratorVerbOptions, GlobalMockOptions, MswMockOptions } from "@orval/core";
2
+ import { ClientMockGeneratorBuilder, ContextSpec, FakerMockOptions, GenerateMockImports, GeneratorImport, GeneratorOptions, GeneratorSchema, GeneratorVerbOptions, GlobalMockOptions, MswMockOptions } from "@orval/core";
3
3
 
4
4
  //#region src/faker/index.d.ts
5
5
  /**
@@ -15,6 +15,20 @@ declare const generateFakerImports: GenerateMockImports;
15
15
  * `<file>.faker.ts` with no `msw` dependency.
16
16
  */
17
17
  declare function generateFaker(generatorVerbOptions: GeneratorVerbOptions, generatorOptions: GeneratorOptions): ClientMockGeneratorBuilder;
18
+ interface GenerateFakerForSchemasResult {
19
+ implementation: string;
20
+ imports: GeneratorImport[];
21
+ }
22
+ /**
23
+ * Builds the contents of a consolidated faker mock file for every entry under
24
+ * `components/schemas`. Each schema produces a `get<SchemaName>Mock(overrides)`
25
+ * factory in the spirit of the existing per-operation `get<Op>ResponseMock`
26
+ * helpers. Opt in via `mock.generators: [{ type: 'faker', schemas: true }]`.
27
+ *
28
+ * Returns the function bodies plus any `GeneratorImport` references the
29
+ * factories need so the writer can hoist them into the file header.
30
+ */
31
+ declare function generateFakerForSchemas(schemas: GeneratorSchema[], context: ContextSpec, options: GlobalMockOptions): GenerateFakerForSchemasResult;
18
32
  //#endregion
19
33
  //#region src/msw/index.d.ts
20
34
  declare const generateMSWImports: GenerateMockImports;
@@ -43,5 +57,5 @@ declare function generateMock(generatorVerbOptions: GeneratorVerbOptions, genera
43
57
  mock: GlobalMockOptions;
44
58
  }): _$_orval_core0.ClientMockGeneratorBuilder;
45
59
  //#endregion
46
- export { DEFAULT_FAKER_OPTIONS, DEFAULT_MSW_OPTIONS, generateFaker, generateFakerImports, generateMSW, generateMSWImports, generateMock, generateMockImports, getDefaultMockOptionsForType };
60
+ export { DEFAULT_FAKER_OPTIONS, DEFAULT_MSW_OPTIONS, type GenerateFakerForSchemasResult, generateFaker, generateFakerForSchemas, generateFakerImports, generateMSW, generateMSWImports, generateMock, generateMockImports, getDefaultMockOptionsForType };
47
61
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -51,9 +51,9 @@ const DEFAULT_OBJECT_KEY_MOCK = "faker.string.alphanumeric(5)";
51
51
  //#endregion
52
52
  //#region src/faker/getters/object.ts
53
53
  const overrideVarName = "overrideResponse";
54
- function getReferenceName$1(ref) {
54
+ function getReferenceName$1(ref, context) {
55
55
  if (!ref) return "";
56
- return pascal(ref.split("/").pop() ?? "");
56
+ return getRefInfo(ref, context).name;
57
57
  }
58
58
  function getMockObject({ item, mockOptions, operationId, tags, combine, context, imports, existingReferencedProperties, splitMockImplementations, allowOverride = false }) {
59
59
  if (isReference(item)) return resolveMockValue({
@@ -123,7 +123,7 @@ function getMockObject({ item, mockOptions, operationId, tags, combine, context,
123
123
  if (combine?.includedProperties.includes(key)) return;
124
124
  const isRequired = mockOptions?.required ?? (Array.isArray(itemRequired) ? itemRequired : []).includes(key);
125
125
  const hasNullable = "nullable" in prop && prop.nullable === true;
126
- if (isReference(prop) && existingReferencedProperties.includes(getReferenceName$1(prop.$ref))) {
126
+ if (isReference(prop) && existingReferencedProperties.includes(getReferenceName$1(prop.$ref, context))) {
127
127
  if (isRequired) return `${getKey(key)}: null`;
128
128
  return;
129
129
  }
@@ -169,7 +169,7 @@ function getMockObject({ item, mockOptions, operationId, tags, combine, context,
169
169
  name: schemaItem.name
170
170
  };
171
171
  const additionalProperties = itemAdditionalProperties;
172
- if (isReference(additionalProperties) && existingReferencedProperties.includes(getReferenceName$1(additionalProperties.$ref))) return {
172
+ if (isReference(additionalProperties) && existingReferencedProperties.includes(getReferenceName$1(additionalProperties.$ref, context))) return {
173
173
  value: `{}`,
174
174
  imports: [],
175
175
  name: schemaItem.name
@@ -283,10 +283,13 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
283
283
  }
284
284
  case "boolean": {
285
285
  let value = "faker.datatype.boolean()";
286
- if ("const" in item) value = JSON.stringify(item.const);
286
+ const booleanImports = [];
287
+ if (item.enum) value = getEnum(item, booleanImports, context, existingReferencedProperties, "boolean");
288
+ else if ("const" in item) value = JSON.stringify(item.const);
287
289
  return {
288
290
  value,
289
- imports: [],
291
+ enums: item.enum,
292
+ imports: booleanImports,
290
293
  name: item.name
291
294
  };
292
295
  }
@@ -297,7 +300,7 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
297
300
  name: item.name
298
301
  };
299
302
  const itemsRef = extractItemsRef(item.items);
300
- if (itemsRef && existingReferencedProperties.includes(pascal(itemsRef.split("/").pop() ?? ""))) return {
303
+ if (itemsRef && existingReferencedProperties.includes(getRefInfo(itemsRef, context).name)) return {
301
304
  value: "[]",
302
305
  imports: [],
303
306
  name: item.name
@@ -324,8 +327,20 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
324
327
  };
325
328
  let mapValue = value;
326
329
  if (combine && !value.startsWith("faker") && !value.startsWith("{") && !value.startsWith("Array.from")) mapValue = `{${value}}`;
327
- const arrMin = item.minItems ?? safeMockOptions.arrayMin;
328
- const arrMax = item.maxItems ?? safeMockOptions.arrayMax;
330
+ const arrSchemaMin = item.minItems;
331
+ const arrSchemaMax = item.maxItems;
332
+ const arrGlobalMin = safeMockOptions.arrayMin;
333
+ const arrGlobalMax = safeMockOptions.arrayMax;
334
+ let arrMin;
335
+ if (arrSchemaMin !== void 0) arrMin = arrSchemaMin;
336
+ else if (arrSchemaMax === void 0) arrMin = arrGlobalMin;
337
+ else if (arrGlobalMin === void 0 || arrGlobalMin > arrSchemaMax) arrMin = arrSchemaMax;
338
+ else arrMin = arrGlobalMin;
339
+ let arrMax;
340
+ if (arrSchemaMax !== void 0) arrMax = arrSchemaMax;
341
+ else if (arrSchemaMin === void 0) arrMax = arrGlobalMax;
342
+ else if (arrGlobalMax === void 0 || arrGlobalMax < arrSchemaMin) arrMax = arrSchemaMin;
343
+ else arrMax = arrGlobalMax;
329
344
  const arrParts = [];
330
345
  if (arrMin !== void 0) arrParts.push(`min: ${arrMin}`);
331
346
  if (arrMax !== void 0) arrParts.push(`max: ${arrMax}`);
@@ -336,11 +351,22 @@ function getMockScalar({ item, imports, mockOptions, operationId, tags, combine,
336
351
  };
337
352
  }
338
353
  case "string": {
339
- const strMin = item.minLength ?? safeMockOptions.stringMin;
340
- const strMax = item.maxLength ?? safeMockOptions.stringMax;
354
+ const schemaMin = item.minLength;
355
+ const schemaMax = item.maxLength;
356
+ const globalMin = safeMockOptions.stringMin;
357
+ const globalMax = safeMockOptions.stringMax;
358
+ let strMin;
359
+ if (schemaMin !== void 0) strMin = schemaMin;
360
+ else if (schemaMax === void 0) strMin = globalMin;
361
+ else if (globalMin === void 0 || globalMin > schemaMax) strMin = schemaMax;
362
+ else strMin = globalMin;
363
+ let strMax;
364
+ if (schemaMax !== void 0) strMax = schemaMax;
365
+ else if (schemaMin === void 0) strMax = globalMax;
366
+ else if (globalMax === void 0 || globalMax < schemaMin) strMax = schemaMin;
367
+ else strMax = globalMax;
341
368
  const strLenParts = [];
342
- if (strMin !== void 0) strLenParts.push(`min: ${strMin}`);
343
- if (strMax !== void 0) strLenParts.push(`max: ${strMax}`);
369
+ if (strMin !== void 0 && strMax !== void 0) strLenParts.push(`min: ${strMin}`, `max: ${strMax}`);
344
370
  let value = `faker.string.alpha(${strLenParts.length > 0 ? `{length: {${strLenParts.join(", ")}}}` : ""})`;
345
371
  const stringImports = [];
346
372
  if (item.enum) value = getEnum(item, stringImports, context, existingReferencedProperties, "string");
@@ -459,6 +485,53 @@ function resolveMockOverride(properties = {}, item) {
459
485
  function getNullable(value, nullable) {
460
486
  return nullable ? `faker.helpers.arrayElement([${value}, null])` : value;
461
487
  }
488
+ /**
489
+ * True when the active faker generator entry asks for consolidated schema
490
+ * mock factories and the output is configured to host them (i.e. there is a
491
+ * dedicated schemas directory we can import `index.faker` from). Used to
492
+ * decide whether an operation factory should inline a `$ref`'d schema or
493
+ * delegate to its `get<X>Mock` factory.
494
+ */
495
+ function shouldDelegateToSchemaFactories(context) {
496
+ if (!context.output.schemas) return false;
497
+ return !!context.output.mock.generators.find((g) => !isFunction(g) && g.type === OutputMockType.FAKER && g.schemas === true);
498
+ }
499
+ /**
500
+ * Predicate: this `$ref` points at a top-level `#/components/schemas/<Name>`
501
+ * (vs. a parameter, response, or inline schema). Only those have a
502
+ * corresponding `get<Name>Mock` factory in the consolidated faker file.
503
+ */
504
+ function isComponentsSchemaRef(refPaths) {
505
+ return Array.isArray(refPaths) && refPaths[0] === "components" && refPaths[1] === "schemas";
506
+ }
507
+ /**
508
+ * Returns true when an operation- or tag-level mock override touches any
509
+ * property declared on the referenced schema. In that case we must inline
510
+ * the schema body so the override actually applies; the shared
511
+ * `get<X>Mock` factory has no knowledge of operation-scoped overrides.
512
+ *
513
+ * Reuses `resolveMockOverride` so the same matching rules apply as for
514
+ * regular property mocks — bare name, regex (`/.../`), and exact-path
515
+ * (`#.foo.bar`). The parent's `path` (where the `$ref` appears in the
516
+ * surrounding schema) gets composed into each synthetic property item so
517
+ * exact-path overrides like `#.color.value` resolve correctly.
518
+ */
519
+ function hasOverrideTouchingSchema(schemaProperties, mockOptions, operationId, tags, parentPath) {
520
+ if (!schemaProperties) return false;
521
+ const propertyNames = Object.keys(schemaProperties);
522
+ if (propertyNames.length === 0) return false;
523
+ const overrideBuckets = [mockOptions?.operations?.[operationId]?.properties];
524
+ for (const tag of tags) overrideBuckets.push(mockOptions?.tags?.[tag]?.properties);
525
+ return overrideBuckets.some((bucket) => {
526
+ if (!bucket) return false;
527
+ return propertyNames.some((propertyName) => {
528
+ return !!resolveMockOverride(bucket, {
529
+ name: propertyName,
530
+ path: parentPath ? `${parentPath}.${propertyName}` : propertyName
531
+ });
532
+ });
533
+ });
534
+ }
462
535
  function resolveMockValue({ schema, mockOptions, operationId, tags, combine, context, imports, existingReferencedProperties, splitMockImplementations, allowOverride }) {
463
536
  if (isReference(schema)) {
464
537
  const schemaReference = schema;
@@ -472,7 +545,41 @@ function resolveMockValue({ schema, mockOptions, operationId, tags, combine, con
472
545
  required: [...schemaRef?.required ?? [], ...schemaReference.required ?? []],
473
546
  ...schemaReference.nullable === void 0 ? {} : { nullable: schemaReference.nullable }
474
547
  };
548
+ if (combine?.separator === "allOf" && newSchema.discriminator && newSchema.oneOf) {
549
+ const parentDiscriminator = newSchema.discriminator;
550
+ const mappingTargetNames = parentDiscriminator.mapping ? Object.values(parentDiscriminator.mapping).map((ref) => pascal(ref.split("/").pop() ?? "")) : [];
551
+ if (existingReferencedProperties.some((refName) => mappingTargetNames.includes(refName))) {
552
+ const mutableSchema = newSchema;
553
+ delete mutableSchema.oneOf;
554
+ const parentProperties = newSchema.properties;
555
+ if (parentDiscriminator.propertyName && parentProperties && parentDiscriminator.propertyName in parentProperties) {
556
+ const remainingProperties = Object.fromEntries(Object.entries(parentProperties).filter(([key]) => key !== parentDiscriminator.propertyName));
557
+ if (Object.keys(remainingProperties).length === 0) delete mutableSchema.properties;
558
+ else mutableSchema.properties = remainingProperties;
559
+ const parentRequired = newSchema.required;
560
+ if (Array.isArray(parentRequired)) {
561
+ const filteredRequired = parentRequired.filter((key) => key !== parentDiscriminator.propertyName);
562
+ if (filteredRequired.length === 0) delete mutableSchema.required;
563
+ else mutableSchema.required = filteredRequired;
564
+ }
565
+ }
566
+ }
567
+ }
475
568
  const newSeparator = newSchema.allOf ? "allOf" : newSchema.oneOf ? "oneOf" : "anyOf";
569
+ if (shouldDelegateToSchemaFactories(context) && isComponentsSchemaRef(refPaths) && !hasOverrideTouchingSchema(schemaRef?.properties, mockOptions, operationId, tags, schemaReference.path)) {
570
+ const factoryName = `get${pascal(name)}Mock`;
571
+ imports.push({
572
+ name: factoryName,
573
+ values: true,
574
+ schemaFactory: true
575
+ });
576
+ return {
577
+ value: getNullable(newSchema.type === "object" || !!newSchema.allOf || !!newSchema.oneOf || !!newSchema.anyOf ? `{ ...${factoryName}() }` : `${factoryName}()`, Boolean(newSchema.nullable)),
578
+ imports,
579
+ name: newSchema.name,
580
+ type: getType(newSchema)
581
+ };
582
+ }
476
583
  const scalar = getMockScalar({
477
584
  item: newSchema,
478
585
  mockOptions,
@@ -527,17 +634,37 @@ function getType(schema) {
527
634
  }
528
635
  //#endregion
529
636
  //#region src/faker/getters/combine.ts
530
- function getReferenceName(ref) {
637
+ function getReferenceName(ref, context) {
531
638
  if (!ref) return "";
532
- return pascal(ref.split("/").pop() ?? "");
639
+ return getRefInfo(ref, context).name;
533
640
  }
534
641
  function combineSchemasMock({ item, separator, mockOptions, operationId, tags, combine, context, imports, existingReferencedProperties, splitMockImplementations }) {
535
642
  const combineImports = [];
536
643
  const includedProperties = [...combine?.includedProperties ?? []];
537
644
  const separatorItems = item[separator] ?? [];
538
645
  const itemRequired = item.required;
539
- const itemResolvedValue = isReference(item) && !existingReferencedProperties.includes(item.name) || item.properties ? resolveMockValue({
540
- schema: Object.fromEntries(Object.entries(item).filter(([key]) => key !== separator)),
646
+ const isRefAndNotExisting = isReference(item) && !existingReferencedProperties.includes(item.name);
647
+ const discriminator = item.discriminator;
648
+ const itemProperties = item.properties;
649
+ const discriminatorPropertyName = separator === "oneOf" && discriminator?.mapping && discriminator.propertyName && itemProperties && discriminator.propertyName in itemProperties ? discriminator.propertyName : void 0;
650
+ const itemEntriesForResolve = Object.entries(item).filter(([key]) => key !== separator);
651
+ if (discriminatorPropertyName && itemProperties) {
652
+ const propertiesIdx = itemEntriesForResolve.findIndex(([key]) => key === "properties");
653
+ if (propertiesIdx !== -1) {
654
+ const filteredProperties = Object.fromEntries(Object.entries(itemProperties).filter(([key]) => key !== discriminatorPropertyName));
655
+ if (Object.keys(filteredProperties).length === 0) itemEntriesForResolve.splice(propertiesIdx, 1);
656
+ else itemEntriesForResolve[propertiesIdx] = ["properties", filteredProperties];
657
+ }
658
+ const requiredIdx = itemEntriesForResolve.findIndex(([key]) => key === "required");
659
+ if (requiredIdx !== -1 && Array.isArray(itemRequired)) {
660
+ const filteredRequired = itemRequired.filter((key) => key !== discriminatorPropertyName);
661
+ if (filteredRequired.length === 0) itemEntriesForResolve.splice(requiredIdx, 1);
662
+ else itemEntriesForResolve[requiredIdx] = ["required", filteredRequired];
663
+ }
664
+ }
665
+ const hasResolvableProperties = itemEntriesForResolve.some(([key]) => key === "properties");
666
+ const itemResolvedValue = isRefAndNotExisting || hasResolvableProperties ? resolveMockValue({
667
+ schema: Object.fromEntries(itemEntriesForResolve),
541
668
  combine: {
542
669
  separator: "allOf",
543
670
  includedProperties: []
@@ -560,7 +687,7 @@ function combineSchemasMock({ item, separator, mockOptions, operationId, tags, c
560
687
  }
561
688
  let value = separator === "allOf" ? "" : "faker.helpers.arrayElement([";
562
689
  for (const val of separatorItems) {
563
- const refName = isReference(val) ? getReferenceName(val.$ref) : "";
690
+ const refName = isReference(val) ? getReferenceName(val.$ref, context) : "";
564
691
  if (separator === "allOf" ? refName && (refName === item.name || existingReferencedProperties.includes(refName) && !item.isRef) : refName && existingReferencedProperties.includes(refName)) {
565
692
  if (separatorItems.length === 1) value = "undefined";
566
693
  continue;
@@ -1022,6 +1149,67 @@ function generateFaker(generatorVerbOptions, generatorOptions) {
1022
1149
  imports: result.imports
1023
1150
  };
1024
1151
  }
1152
+ /**
1153
+ * Builds the contents of a consolidated faker mock file for every entry under
1154
+ * `components/schemas`. Each schema produces a `get<SchemaName>Mock(overrides)`
1155
+ * factory in the spirit of the existing per-operation `get<Op>ResponseMock`
1156
+ * helpers. Opt in via `mock.generators: [{ type: 'faker', schemas: true }]`.
1157
+ *
1158
+ * Returns the function bodies plus any `GeneratorImport` references the
1159
+ * factories need so the writer can hoist them into the file header.
1160
+ */
1161
+ function generateFakerForSchemas(schemas, context, options) {
1162
+ const factories = [];
1163
+ const allImports = [];
1164
+ const splitMockImplementations = [];
1165
+ const localFactoryNames = new Set(schemas.filter((s) => !!s.schema).map((s) => `get${pascal(s.name)}Mock`));
1166
+ const mockOptions = context.output.override.mock;
1167
+ for (const generatorSchema of schemas) {
1168
+ const { name, schema } = generatorSchema;
1169
+ if (!schema) continue;
1170
+ const factoryName = `get${pascal(name)}Mock`;
1171
+ const factoryImports = [];
1172
+ const result = getMockScalar({
1173
+ item: {
1174
+ ...schema,
1175
+ name
1176
+ },
1177
+ imports: factoryImports,
1178
+ mockOptions,
1179
+ operationId: name,
1180
+ tags: [],
1181
+ context,
1182
+ existingReferencedProperties: [],
1183
+ splitMockImplementations,
1184
+ allowOverride: true,
1185
+ isRef: false
1186
+ });
1187
+ allImports.push(...result.imports, ...factoryImports);
1188
+ const typeName = pascal(name);
1189
+ const factory = `export const ${factoryName} = (${result.value.includes("overrideResponse") ? `overrideResponse: Partial<${typeName}> = {}` : ""}): ${typeName} => (${result.value});\n`;
1190
+ factories.push(factory);
1191
+ allImports.push({
1192
+ name: pascal(name),
1193
+ values: false
1194
+ });
1195
+ }
1196
+ const mergedImports = /* @__PURE__ */ new Map();
1197
+ for (const imp of allImports) {
1198
+ if (imp.schemaFactory && localFactoryNames.has(imp.name)) continue;
1199
+ const key = `${imp.name}::${imp.alias ?? ""}`;
1200
+ const existing = mergedImports.get(key);
1201
+ if (!existing) {
1202
+ mergedImports.set(key, imp);
1203
+ continue;
1204
+ }
1205
+ if (!existing.values && imp.values) mergedImports.set(key, imp);
1206
+ }
1207
+ const uniqueImports = [...mergedImports.values()];
1208
+ return {
1209
+ implementation: [...splitMockImplementations, ...factories].join("\n"),
1210
+ imports: uniqueImports
1211
+ };
1212
+ }
1025
1213
  //#endregion
1026
1214
  //#region src/index.ts
1027
1215
  const DEFAULT_MSW_OPTIONS = {
@@ -1030,7 +1218,9 @@ const DEFAULT_MSW_OPTIONS = {
1030
1218
  };
1031
1219
  const DEFAULT_FAKER_OPTIONS = {
1032
1220
  type: OutputMockType.FAKER,
1033
- useExamples: false
1221
+ useExamples: false,
1222
+ schemas: false,
1223
+ operationResponses: true
1034
1224
  };
1035
1225
  /**
1036
1226
  * Returns the default GlobalMockOptions for a given mock type. Used when
@@ -1065,6 +1255,6 @@ function generateMock(generatorVerbOptions, generatorOptions) {
1065
1255
  }
1066
1256
  }
1067
1257
  //#endregion
1068
- export { DEFAULT_FAKER_OPTIONS, DEFAULT_MSW_OPTIONS, generateFaker, generateFakerImports, generateMSW, generateMSWImports, generateMock, generateMockImports, getDefaultMockOptionsForType };
1258
+ export { DEFAULT_FAKER_OPTIONS, DEFAULT_MSW_OPTIONS, generateFaker, generateFakerForSchemas, generateFakerImports, generateMSW, generateMSWImports, generateMock, generateMockImports, getDefaultMockOptionsForType };
1069
1259
 
1070
1260
  //# 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/faker/index.ts","../src/index.ts"],"sourcesContent":["import {\n type GlobalMockOptions,\n isBoolean,\n isFunction,\n isMswMock,\n isNumber,\n type MswMockOptions,\n type NormalizedOverrideOutput,\n} from '@orval/core';\n\nexport const getDelay = (\n override?: NormalizedOverrideOutput,\n options?: GlobalMockOptions,\n): MswMockOptions['delay'] => {\n // `delay` and `delayFunctionLazyExecute` are MSW-only. Narrow the\n // discriminated `GlobalMockOptions` union (and the partial override\n // counterpart) before reading them.\n const mswOptions = options && isMswMock(options) ? options : undefined;\n const overrideMock = override?.mock as Partial<MswMockOptions> | undefined;\n const overrideDelay = overrideMock?.delay ?? mswOptions?.delay;\n const delayFunctionLazyExecute =\n overrideMock?.delayFunctionLazyExecute ??\n mswOptions?.delayFunctionLazyExecute;\n if (isFunction(overrideDelay)) {\n return delayFunctionLazyExecute ? overrideDelay : overrideDelay();\n }\n if (isNumber(overrideDelay) || isBoolean(overrideDelay)) {\n return overrideDelay;\n }\n return false;\n};\n","import { compareVersions, type PackageJson } from '@orval/core';\n\nconst getFakerPackageVersion = (packageJson: PackageJson) => {\n return (\n packageJson.resolvedVersions?.['@faker-js/faker'] ??\n packageJson.dependencies?.['@faker-js/faker'] ??\n packageJson.devDependencies?.['@faker-js/faker'] ??\n packageJson.peerDependencies?.['@faker-js/faker']\n );\n};\n\nexport const isFakerVersionV9 = (packageJson: PackageJson) => {\n const version = getFakerPackageVersion(packageJson);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '9.0.0');\n};\n","import type { OpenApiSchemaObject } from '@orval/core';\n\nexport const DEFAULT_FORMAT_MOCK: Record<\n Required<Extract<OpenApiSchemaObject, object>>['format'],\n string\n> = {\n bic: 'faker.finance.bic()',\n binary: 'new ArrayBuffer(faker.number.int({ min: 1, max: 64 }))',\n city: 'faker.location.city()',\n country: 'faker.location.country()',\n date: 'faker.date.past().toISOString().slice(0, 10)',\n 'date-time': \"faker.date.past().toISOString().slice(0, 19) + 'Z'\",\n email: 'faker.internet.email()',\n firstName: 'faker.person.firstName()',\n gender: 'faker.person.gender()',\n iban: 'faker.finance.iban()',\n ipv4: 'faker.internet.ipv4()',\n ipv6: 'faker.internet.ipv6()',\n jobTitle: 'faker.person.jobTitle()',\n lastName: 'faker.person.lastName()',\n password: 'faker.internet.password()',\n phoneNumber: 'faker.phone.number()',\n streetName: 'faker.location.street()',\n uri: 'faker.internet.url()',\n url: 'faker.internet.url()',\n userName: 'faker.internet.userName()',\n uuid: 'faker.string.uuid()',\n zipCode: 'faker.location.zipCode()',\n};\n\n// #980 replace CUID so tests are consistent\nexport const DEFAULT_OBJECT_KEY_MOCK = 'faker.string.alphanumeric(5)';\n","import {\n type ContextSpec,\n type GeneratorImport,\n getKey,\n 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], 'en', { numeric: true });\n });\n }\n const propertyScalars = entries\n .map(\n ([key, prop]: [\n string,\n OpenApiReferenceObject | OpenApiSchemaObject,\n ]) => {\n if (combine?.includedProperties.includes(key)) {\n return;\n }\n\n const isRequired =\n mockOptions?.required ??\n (Array.isArray(itemRequired) ? itemRequired : []).includes(key);\n\n const hasNullable = 'nullable' in prop && prop.nullable === true;\n\n // Check to see if the property is a reference to an existing property\n // Fixes issue #910\n if (\n isReference(prop) &&\n existingReferencedProperties.includes(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\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 isReference,\n isString,\n mergeDeep,\n type MockOptions,\n type OpenApiSchemaObject,\n pascal,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { isFakerVersionV9 } from '../compatible-v9';\nimport { DEFAULT_FORMAT_MOCK } from '../constants';\nimport {\n getNullable,\n resolveMockOverride,\n resolveMockValue,\n} from '../resolvers';\nimport { 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], 'en', { numeric: true }),\n );\n for (const [tag, options] of sortedTags) {\n if (!tags.includes(tag)) {\n continue;\n }\n overrideTag = mergeDeep(overrideTag, options);\n }\n\n const tagProperty = resolveMockOverride(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 ) {\n // OAS 3.0 inputs go through @scalar/openapi-parser's upgrade(), which\n // rewrites property-level `example: <value>` into `examples: [<value>]`\n // and deletes the singular field. Fall back to the array form so this\n // option keeps working post-upgrade.\n const propertyExample =\n item.example === undefined\n ? Array.isArray(item.examples) && item.examples.length > 0\n ? item.examples[0]\n : undefined\n : item.example;\n if (propertyExample !== undefined) {\n return {\n value: JSON.stringify(propertyExample),\n imports: [],\n name: item.name,\n overrided: true,\n };\n }\n }\n\n const formatOverrides = safeMockOptions.format ?? {};\n const ALL_FORMAT: Record<string, string> = {\n ...DEFAULT_FORMAT_MOCK,\n ...Object.fromEntries(\n Object.entries(formatOverrides).filter(\n (entry): entry is [string, string] => typeof entry[1] === 'string',\n ),\n ),\n };\n\n 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 const itemsRef = extractItemsRef(item.items);\n if (\n itemsRef &&\n existingReferencedProperties.includes(\n pascal(itemsRef.split('/').pop() ?? ''),\n )\n ) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n // If `items` is a single-element `allOf`/`oneOf`/`anyOf` wrapping a\n // `$ref`, treat it as a direct `$ref`. This avoids double-wrapping when\n // the inner schema is an enum array (whose `getEnum` already emits\n // `faker.helpers.arrayElements(...)`) and keeps recursion semantics in\n // line with direct-$ref items.\n const resolvedItems =\n itemsRef && !('$ref' in item.items) ? { $ref: itemsRef } : item.items;\n\n const {\n value,\n enums,\n imports: resolvedImports,\n } = resolveMockValue({\n schema: {\n ...resolvedItems,\n name: item.name,\n 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\n// Returns the $ref string from array `items` — either direct ($ref on items\n// itself) or wrapped in a single-element allOf/oneOf/anyOf composition.\n// Multi-element compositions return undefined to preserve combine semantics.\nfunction extractItemsRef(items: MockSchema): string | undefined {\n if (isReference(items)) {\n return items.$ref;\n }\n for (const key of ['allOf', 'oneOf', 'anyOf'] as const) {\n const composed = items[key] as MockSchema[] | undefined;\n if (\n Array.isArray(composed) &&\n composed.length === 1 &&\n isReference(composed[0])\n ) {\n return composed[0].$ref;\n }\n }\n return;\n}\n\nfunction getItemType(item: MockSchemaObject) {\n if (Array.isArray(item.type) && item.type.includes('null')) {\n const typesWithoutNull = item.type.filter((x) => x !== 'null');\n const itemType =\n typesWithoutNull.length === 1 ? typesWithoutNull[0] : typesWithoutNull;\n\n return itemType;\n }\n\n if (item.type) return item.type;\n if (!item.enum) return;\n\n const uniqTypes = new Set(item.enum.map((value) => typeof value));\n if (uniqTypes.size > 1) return;\n\n const type = [...uniqTypes.values()].at(0);\n if (!type) return;\n return ['string', 'number'].includes(type) ? type : undefined;\n}\n\nfunction getEnum(\n item: MockSchemaObject,\n imports: GeneratorImport[],\n context: ContextSpec,\n existingReferencedProperties: string[],\n type?: 'string' | 'number',\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 // For oneOf/anyOf: skip variants that point back to an already-visited schema,\n // otherwise polymorphic recursion (e.g. Base.Parent → oneOf [Derived → allOf [Base]])\n // would infinitely re-expand.\n const shouldSkipRef =\n separator === 'allOf'\n ? refName &&\n (refName === item.name ||\n (existingReferencedProperties.includes(refName) && !item.isRef))\n : refName && existingReferencedProperties.includes(refName);\n\n if (shouldSkipRef) {\n if (separatorItems.length === 1) {\n value = 'undefined';\n }\n continue;\n }\n\n // the required fields in this schema need to be considered\n // in the sub schema under the allOf key\n const schema = (() => {\n if (separator !== 'allOf' || allRequiredFields.length === 0) {\n return {\n ...val,\n name: item.name,\n path: item.path ?? '#',\n };\n }\n\n const valWithRequired = val as MockSchema & { required?: string[] };\n const valRequired = valWithRequired.required;\n const combinedRequired = valRequired\n ? [...allRequiredFields, ...valRequired]\n : allRequiredFields;\n\n return {\n ...val,\n name: item.name,\n path: item.path ?? '#',\n required: [...new Set(combinedRequired)],\n };\n })();\n\n const resolvedValue = resolveMockValue({\n schema,\n combine: {\n separator,\n includedProperties:\n separator === 'oneOf'\n ? (itemResolvedValue?.includedProperties ?? [])\n : includedProperties,\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n });\n\n combineImports.push(...resolvedValue.imports);\n includedProperties.push(...(resolvedValue.includedProperties ?? []));\n\n if (resolvedValue.value === '{}') {\n containsOnlyPrimitiveValues = false;\n continue;\n }\n\n if (separator === 'allOf') {\n if (resolvedValue.value.startsWith('{') || !resolvedValue.type) {\n containsOnlyPrimitiveValues = false;\n value += `...${resolvedValue.value},`;\n continue;\n }\n\n if (resolvedValue.type === 'object') {\n containsOnlyPrimitiveValues = false;\n value += resolvedValue.value.startsWith('faker')\n ? `...${resolvedValue.value},`\n : `...{${resolvedValue.value}},`;\n continue;\n }\n }\n\n value += `${resolvedValue.value},`;\n }\n // When every oneOf/anyOf variant was skipped (e.g. all $refs were already on\n // the resolution stack) the loop leaves `value` at its initial opener. Emit\n // `undefined` instead of closing it as `faker.helpers.arrayElement([])`,\n // which throws at runtime.\n const isEmptyArrayElement =\n separator !== 'allOf' && value === 'faker.helpers.arrayElement([';\n\n let finalValue =\n value === 'undefined' || isEmptyArrayElement\n ? 'undefined'\n : // containsOnlyPrimitiveValues isn't just true, it's being set to false inside the above reduce and the type system doesn't detect it\n `${separator === 'allOf' && !containsOnlyPrimitiveValues ? '{' : ''}${value}${separator === 'allOf' ? (containsOnlyPrimitiveValues ? '' : '}') : '])'}`;\n if (itemResolvedValue) {\n finalValue = finalValue.startsWith('...')\n ? `...{${finalValue}, ${itemResolvedValue.value}}`\n : `{...${finalValue}, ${itemResolvedValue.value}}`;\n }\n if (finalValue.endsWith(',')) {\n finalValue = finalValue.slice(0, Math.max(0, finalValue.length - 1));\n }\n\n return {\n value: finalValue,\n imports: combineImports,\n name: item.name,\n includedProperties,\n };\n}\n","import { camel, sanitize } from '@orval/core';\n\nconst hasParam = (path: string): boolean => /[^{]*{[\\w*_-]*}.*/.test(path);\n\nconst getRoutePath = (path: string): string => {\n const matches = /([^{]*){?([\\w*_-]*)}?(.*)/.exec(path);\n if (!matches?.length) return path; // impossible due to regexp grouping here, but for TS\n\n const prev = matches[1];\n const param = sanitize(camel(matches[2]), {\n es5keyword: true,\n underscore: true,\n dash: true,\n dot: true,\n });\n const next = hasParam(matches[3]) ? getRoutePath(matches[3]) : matches[3];\n\n return hasParam(path) ? `${prev}:${param}${next}` : `${prev}${param}${next}`;\n};\n\nexport const getRouteMSW = (route: string, baseUrl = '*') => {\n route = route.replaceAll(':', String.raw`\\\\:`);\n const splittedRoute = route.split('/');\n let resolvedRoute = baseUrl;\n\n for (const [index, path] of splittedRoute.entries()) {\n if (!path && !index) {\n continue;\n }\n\n if (!path.includes('{')) {\n resolvedRoute = `${resolvedRoute}/${path}`;\n continue;\n }\n\n resolvedRoute = `${resolvedRoute}/${getRoutePath(path)}`;\n }\n\n return resolvedRoute;\n};\n","import {\n type ContextSpec,\n generalJSTypesWithArray,\n type GeneratorImport,\n type GlobalMockOptions,\n isFunction,\n type MockOptions,\n type NormalizedOverrideOutput,\n type OpenApiDocument,\n resolveRef,\n type ResReqTypesValue,\n stringify,\n} from '@orval/core';\n\nimport { 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 escapeRegExp,\n generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorImport,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n isFunction,\n isMswMock,\n isObject,\n pascal,\n type ResReqTypesValue,\n} 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 locale = options?.locale;\n\n const fakerDependency: GeneratorDependency = {\n exports: [{ name: 'faker', values: true }],\n dependency: locale ? `@faker-js/faker/locale/${locale}` : '@faker-js/faker',\n };\n\n const hasDelay =\n options && isMswMock(options) ? options.delay !== false : true;\n\n const exports = [\n { name: 'http', values: true },\n { name: 'HttpResponse', values: true },\n { name: 'RequestHandlerOptions', values: false },\n ];\n\n if (hasDelay) {\n exports.push({ name: 'delay', values: true });\n }\n\n return [{ exports, dependency: 'msw' }, fakerDependency];\n}\n\nexport const generateMSWImports: GenerateMockImports = ({\n implementation,\n imports,\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n options,\n}) => {\n return generateDependencyImports(\n implementation,\n [...getMSWDependencies(options), ...imports],\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\nfunction generateDefinition(\n name: string,\n route: string,\n getResponseMockFunctionNameBase: string,\n handlerNameBase: string,\n { operationId, response, verb, tags }: GeneratorVerbOptions,\n { override, context, mock }: GeneratorOptions,\n returnType: string,\n status: string,\n responseImports: GeneratorImport[],\n responses: ResReqTypesValue[],\n contentTypes: string[],\n splitMockImplementations: string[],\n) {\n const oldSplitMockImplementations = [...splitMockImplementations];\n const { definitions, definition, imports } = getMockDefinition({\n operationId,\n tags,\n returnType,\n responses,\n imports: responseImports,\n override,\n context,\n mockOptions: isFunction(mock) ? undefined : mock,\n splitMockImplementations,\n });\n\n const mockData = getMockOptionsDataOverride(tags, operationId, override);\n\n let value = '';\n\n if (mockData) {\n value = mockData;\n } else if (definitions.length > 1) {\n value = `faker.helpers.arrayElement(${definition})`;\n } else if (definitions[0]) {\n value = definitions[0];\n }\n\n const isResponseOverridable = value.includes(overrideVarName);\n const isTextLikeContentType = (ct: string) =>\n ct.startsWith('text/') || ct === 'application/xml' || ct.endsWith('+xml');\n const isTypeExactlyString = (typeExpr: string) =>\n typeExpr.trim().replaceAll(/^\\(+|\\)+$/g, '') === 'string';\n const isUnionContainingString = (typeExpr: string) =>\n typeExpr\n .split('|')\n .map((part) => part.trim().replaceAll(/^\\(+|\\)+$/g, ''))\n .includes('string');\n const isBinaryLikeContentType = (ct: string) =>\n ct === 'application/octet-stream' ||\n ct === 'application/pdf' ||\n ct.startsWith('image/') ||\n ct.startsWith('audio/') ||\n ct.startsWith('video/') ||\n ct.startsWith('font/');\n\n const preferredContentType = isFunction(mock)\n ? undefined\n : (\n mock as { preferredContentType?: string } | undefined\n )?.preferredContentType?.toLowerCase();\n // match preferredContentType against `responses` (not the wider `contentTypes` which mixes success and error MIMEs).\n const preferredContentTypeMatch = preferredContentType\n ? responses.find(\n (r) => r.contentType.toLowerCase() === preferredContentType,\n )?.contentType\n : undefined;\n const contentTypesByPreference = preferredContentTypeMatch\n ? [preferredContentTypeMatch]\n : contentTypes;\n const responsesByPreference = preferredContentTypeMatch\n ? responses.filter((r) => r.contentType === preferredContentTypeMatch)\n : responses;\n\n const hasTextLikeContentType = contentTypes.some((ct) =>\n isTextLikeContentType(ct),\n );\n const isExactlyStringReturnType = isTypeExactlyString(returnType);\n\n // Keep text helpers for exact string success return types whenever a text-like\n // media type is available in the declared content types. This prevents a\n // preferredContentType that matches an error media type from forcing\n // HttpResponse.json() for text/plain success responses.\n const isTextResponse =\n (isExactlyStringReturnType && hasTextLikeContentType) ||\n contentTypesByPreference.some((ct) => isTextLikeContentType(ct));\n const isSchemaBinary = (r: ResReqTypesValue) =>\n r.originalSchema?.format === 'binary' ||\n (r.originalSchema?.contentMediaType === 'application/octet-stream' &&\n !r.originalSchema.contentEncoding);\n const isBinaryResponse =\n contentTypesByPreference.some((ct) => isBinaryLikeContentType(ct)) ||\n responsesByPreference.some((r) => isSchemaBinary(r));\n // Bare ref names of schema-binary responses (include alias for collision-renamed imports).\n const binaryRefNames = responsesByPreference\n .filter((r) => isSchemaBinary(r))\n .flatMap((r) =>\n r.imports.flatMap((imp) =>\n imp.alias ? [imp.name, imp.alias] : [imp.name],\n ),\n );\n const isReturnHttpResponse = value && value !== 'undefined';\n\n const getResponseMockFunctionName = `${getResponseMockFunctionNameBase}${pascal(\n name,\n )}`;\n const handlerName = `${handlerNameBase}${pascal(name)}`;\n\n const addedSplitMockImplementations = splitMockImplementations.slice(\n oldSplitMockImplementations.length,\n );\n splitMockImplementations.push(...addedSplitMockImplementations);\n const mockImplementations =\n addedSplitMockImplementations.length > 0\n ? `${addedSplitMockImplementations.join('\\n\\n')}\\n\\n`\n : '';\n\n const binaryTypeRewriteRegex = new RegExp(\n String.raw`\\b(?:${['Blob', ...binaryRefNames].map((n) => escapeRegExp(n)).join('|')})\\b`,\n 'g',\n );\n const mockReturnType = isBinaryResponse\n ? returnType.replaceAll(binaryTypeRewriteRegex, 'ArrayBuffer')\n : returnType;\n\n // Detect when the return type is a union containing void (e.g. \"Resource | void\"\n // from endpoints with both 200 JSON and 204 No Content responses). In this case\n // we need runtime branching so that void responses use `new HttpResponse(null)`\n // instead of `HttpResponse.json()` which does not accept void/undefined.\n const isVoidUnionType =\n mockReturnType !== 'void' &&\n mockReturnType.split('|').some((part) => part.trim() === 'void');\n const noContentStatusCode = isVoidUnionType\n ? (responses.find((r) => r.value === 'void')?.key ?? '204')\n : undefined;\n const nonVoidMockReturnType = isVoidUnionType\n ? mockReturnType\n .split('|')\n .filter((part) => part.trim() !== 'void')\n .join(' | ')\n .trim()\n : mockReturnType;\n\n const hasJsonContentType = contentTypesByPreference.some(\n (ct) => ct.includes('json') || ct.includes('+json'),\n );\n const hasStringReturnType =\n isTypeExactlyString(mockReturnType) ||\n isUnionContainingString(mockReturnType);\n const overrideResponseType = `Partial<Extract<${nonVoidMockReturnType}, object>>`;\n const shouldPreferJsonResponse = hasJsonContentType && !hasStringReturnType;\n\n // When the return type is a union containing both string and structured types\n // (e.g. `string | Pet`) AND both text-like and JSON content types are available,\n // we need runtime branching to pick the correct HttpResponse helper based on\n // the actual resolved value type. Without this, objects could be JSON.stringify'd\n // and served under a text-like Content-Type (e.g. xml/html/plain), which is\n // semantically incorrect for structured JSON data.\n const needsRuntimeContentTypeSwitch =\n isTextResponse &&\n hasJsonContentType &&\n hasStringReturnType &&\n mockReturnType !== 'string';\n\n const 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). Only emit it\n // when we actually generate a `*ResponseMock()` helper — otherwise the\n // prelude would reference a function that doesn't exist (issue #3270).\n let responsePrelude = '';\n if (isReturnHttpResponse) {\n if (isBinaryResponse) {\n responsePrelude = `const binaryBody = ${resolvedResponseExpr};`;\n } else if (isVoidUnionType || needsRuntimeContentTypeSwitch) {\n responsePrelude = `const resolvedBody = ${resolvedResponseExpr};`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n responsePrelude = `const resolvedBody = ${resolvedResponseExpr};\n const textBody = typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null);`;\n }\n }\n if (!isReturnHttpResponse) {\n responseBody = `new HttpResponse(null,\n { status: ${statusCode}\n })`;\n } else if (isBinaryResponse) {\n responseBody = `HttpResponse.arrayBuffer(\n binaryBody instanceof ArrayBuffer\n ? binaryBody\n : new ArrayBuffer(0),\n { status: ${statusCode},\n headers: { 'Content-Type': '${binaryContentType}' }\n })`;\n } else if (isVoidUnionType) {\n // Runtime branching for void union types (e.g. 200 JSON + 204 No Content).\n // When the resolved body is undefined, return an empty response with the\n // no-content status code; otherwise use the appropriate response helper.\n let nonVoidBody: string;\n if (needsRuntimeContentTypeSwitch) {\n nonVoidBody = `typeof resolvedBody === 'string'\n ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n nonVoidBody = `HttpResponse.${textHelper}(\n typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null),\n { status: ${statusCode} })`;\n } else {\n nonVoidBody = `HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n }\n responseBody = `resolvedBody === undefined\n ? new HttpResponse(null, { status: ${noContentStatusCode} })\n : ${nonVoidBody}`;\n } else if (needsRuntimeContentTypeSwitch) {\n // Runtime branching: when the resolved value is a string, use the\n // appropriate text helper; otherwise fall back to HttpResponse.json()\n // so objects are never JSON.stringify'd under a text/xml Content-Type.\n responseBody = `typeof resolvedBody === 'string'\n ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n responseBody = `HttpResponse.${textHelper}(textBody,\n { status: ${statusCode}\n })`;\n } else {\n responseBody = `HttpResponse.json(${resolvedResponseExpr},\n { status: ${statusCode}\n })`;\n }\n\n const infoType = `Parameters<Parameters<typeof http.${verb}>[1]>[0]`;\n\n const handlerImplementation = `\nexport const ${handlerName} = (overrideResponse?: ${mockReturnType} | ((${infoParam}: ${infoType}) => Promise<${mockReturnType}> | ${mockReturnType}), options?: RequestHandlerOptions) => {\n return http.${verb}('${route}', async (${infoParam}: ${infoType}) => {${\n delay === false\n ? ''\n : `await delay(${isFunction(delay) ? `(${String(delay)})()` : String(delay)});`\n }\n ${isReturnHttpResponse ? '' : `if (typeof overrideResponse === 'function') {await overrideResponse(info); }`}\n ${responsePrelude}\n return ${responseBody}\n }, options)\n}\\n`;\n\n const includeResponseImports = [\n ...imports,\n ...response.imports.filter((r) => {\n // Only keep imports referenced in the mock. Aliased imports\n // (`Foo as __Foo`) reference the alias rather than the bare name, so\n // match against either. Mirrors `addDependency` in core/generators/imports.ts (#3269).\n const searchWords = [r.alias, r.name]\n .filter((p): p is string => Boolean(p?.length))\n .map((part) => escapeRegExp(part))\n .join('|');\n if (!searchWords) {\n return false;\n }\n const reg = new RegExp(String.raw`\\b(${searchWords})\\b`);\n return reg.test(handlerImplementation) || reg.test(mockImplementation);\n }),\n ];\n\n return {\n implementation: {\n function: mockImplementation,\n handlerName: handlerName,\n handler: handlerImplementation,\n },\n imports: includeResponseImports,\n };\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 overrideBaseUrl =\n override.mock && 'baseUrl' in override.mock\n ? (override.mock as { baseUrl?: string }).baseUrl\n : undefined;\n const mockBaseUrl = mock && isMswMock(mock) ? mock.baseUrl : undefined;\n const route = getRouteMSW(pathRoute, overrideBaseUrl ?? mockBaseUrl);\n\n 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,\n handler: handlerImplementations.join('\\n'),\n },\n imports: imports,\n };\n}\n","import {\n type ClientMockGeneratorBuilder,\n generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n} from '@orval/core';\n\nimport { generateMSW } from '../msw';\n\nfunction getFakerDependencies(\n options?: GlobalMockOptions,\n): GeneratorDependency[] {\n const locale = options?.locale;\n\n return [\n {\n exports: [{ name: 'faker', values: true }],\n dependency: locale\n ? `@faker-js/faker/locale/${locale}`\n : '@faker-js/faker',\n },\n ];\n}\n\n/**\n * Emits the import header for a faker-only mock file. Faker output never\n * imports from `msw`, so this only emits `import { faker } from '@faker-js/faker'`\n * (or the locale-scoped variant) plus any operation-specific imports.\n */\nexport const generateFakerImports: GenerateMockImports = ({\n implementation,\n imports,\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n options,\n}) => {\n return generateDependencyImports(\n implementation,\n [...getFakerDependencies(options), ...imports],\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\n/**\n * Generates the faker-only mock output for a single operation. This reuses\n * the response-factory portion of {@link generateMSW} and strips out the\n * handler and aggregator entries so callers can write a standalone\n * `<file>.faker.ts` with no `msw` dependency.\n */\nexport function generateFaker(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n const result = generateMSW(generatorVerbOptions, generatorOptions);\n return {\n implementation: {\n function: result.implementation.function,\n handler: '',\n handlerName: '',\n },\n imports: result.imports,\n };\n}\n","import type {\n FakerMockOptions,\n GenerateMockImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GlobalMockOptions,\n MswMockOptions,\n} from '@orval/core';\nimport { OutputMockType } from '@orval/core';\n\nimport { generateFaker, generateFakerImports } from './faker';\nimport { generateMSW, generateMSWImports } from './msw';\n\nexport const DEFAULT_MSW_OPTIONS: MswMockOptions = {\n type: OutputMockType.MSW,\n useExamples: false,\n};\n\nexport const DEFAULT_FAKER_OPTIONS: FakerMockOptions = {\n type: OutputMockType.FAKER,\n useExamples: false,\n};\n\n/**\n * Returns the default GlobalMockOptions for a given mock type. Used when\n * normalizing user-provided entries in `output.mock.generators` so callers\n * can omit the per-type defaults.\n */\nexport const getDefaultMockOptionsForType = (\n type: GlobalMockOptions['type'],\n): GlobalMockOptions => {\n switch (type) {\n case OutputMockType.FAKER: {\n return DEFAULT_FAKER_OPTIONS;\n }\n case OutputMockType.MSW: {\n return DEFAULT_MSW_OPTIONS;\n }\n }\n};\n\n/**\n * Dispatches mock-file imports generation to the appropriate generator based\n * on the `OutputMockType` discriminator on the mock options.\n */\nexport const generateMockImports: GenerateMockImports = (importOptions) => {\n switch (importOptions.options?.type) {\n case OutputMockType.FAKER: {\n return generateFakerImports(importOptions);\n }\n default: {\n return generateMSWImports(importOptions);\n }\n }\n};\n\n/**\n * Dispatches per-operation mock generation to the appropriate generator\n * based on the `OutputMockType` discriminator. Each entry in\n * `output.mock.generators` is dispatched here individually.\n */\nexport function generateMock(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: Omit<GeneratorOptions, 'mock'> & {\n mock: GlobalMockOptions;\n },\n) {\n switch (generatorOptions.mock.type) {\n case OutputMockType.FAKER: {\n return generateFaker(generatorVerbOptions, generatorOptions);\n }\n default: {\n return generateMSW(generatorVerbOptions, generatorOptions);\n }\n }\n}\n\nexport { generateFaker, generateFakerImports } from './faker';\nexport { generateMSW, generateMSWImports } from './msw';\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/faker/index.ts","../src/index.ts"],"sourcesContent":["import {\n type GlobalMockOptions,\n isBoolean,\n isFunction,\n isMswMock,\n isNumber,\n type MswMockOptions,\n type NormalizedOverrideOutput,\n} from '@orval/core';\n\nexport const getDelay = (\n override?: NormalizedOverrideOutput,\n options?: GlobalMockOptions,\n): MswMockOptions['delay'] => {\n // `delay` and `delayFunctionLazyExecute` are MSW-only. Narrow the\n // discriminated `GlobalMockOptions` union (and the partial override\n // counterpart) before reading them.\n const mswOptions = options && isMswMock(options) ? options : undefined;\n const overrideMock = override?.mock as Partial<MswMockOptions> | undefined;\n const overrideDelay = overrideMock?.delay ?? mswOptions?.delay;\n const delayFunctionLazyExecute =\n overrideMock?.delayFunctionLazyExecute ??\n mswOptions?.delayFunctionLazyExecute;\n if (isFunction(overrideDelay)) {\n return delayFunctionLazyExecute ? overrideDelay : overrideDelay();\n }\n if (isNumber(overrideDelay) || isBoolean(overrideDelay)) {\n return overrideDelay;\n }\n return false;\n};\n","import { compareVersions, type PackageJson } from '@orval/core';\n\nconst getFakerPackageVersion = (packageJson: PackageJson) => {\n return (\n packageJson.resolvedVersions?.['@faker-js/faker'] ??\n packageJson.dependencies?.['@faker-js/faker'] ??\n packageJson.devDependencies?.['@faker-js/faker'] ??\n packageJson.peerDependencies?.['@faker-js/faker']\n );\n};\n\nexport const isFakerVersionV9 = (packageJson: PackageJson) => {\n const version = getFakerPackageVersion(packageJson);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '9.0.0');\n};\n","import type { OpenApiSchemaObject } from '@orval/core';\n\nexport const DEFAULT_FORMAT_MOCK: Record<\n Required<Extract<OpenApiSchemaObject, object>>['format'],\n string\n> = {\n bic: 'faker.finance.bic()',\n binary: 'new ArrayBuffer(faker.number.int({ min: 1, max: 64 }))',\n city: 'faker.location.city()',\n country: 'faker.location.country()',\n date: 'faker.date.past().toISOString().slice(0, 10)',\n 'date-time': \"faker.date.past().toISOString().slice(0, 19) + 'Z'\",\n email: 'faker.internet.email()',\n firstName: 'faker.person.firstName()',\n gender: 'faker.person.gender()',\n iban: 'faker.finance.iban()',\n ipv4: 'faker.internet.ipv4()',\n ipv6: 'faker.internet.ipv6()',\n jobTitle: 'faker.person.jobTitle()',\n lastName: 'faker.person.lastName()',\n password: 'faker.internet.password()',\n phoneNumber: 'faker.phone.number()',\n streetName: 'faker.location.street()',\n uri: 'faker.internet.url()',\n url: 'faker.internet.url()',\n userName: 'faker.internet.userName()',\n uuid: 'faker.string.uuid()',\n zipCode: 'faker.location.zipCode()',\n};\n\n// #980 replace CUID so tests are consistent\nexport const DEFAULT_OBJECT_KEY_MOCK = 'faker.string.alphanumeric(5)';\n","import {\n type ContextSpec,\n type GeneratorImport,\n getKey,\n getRefInfo,\n isReference,\n type MockOptions,\n type OpenApiReferenceObject,\n type OpenApiSchemaObject,\n PropertySortOrder,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { DEFAULT_OBJECT_KEY_MOCK } from '../constants';\nimport { resolveMockValue } from '../resolvers/value';\nimport { combineSchemasMock } from './combine';\n\nexport const overrideVarName = 'overrideResponse';\n\nfunction getReferenceName(\n ref: string | undefined,\n context: ContextSpec,\n): string {\n if (!ref) return '';\n\n return getRefInfo(ref, context).name;\n}\n\ninterface GetMockObjectOptions {\n item: MockSchemaObject;\n operationId: string;\n mockOptions?: MockOptions;\n tags: string[];\n combine?: {\n separator: 'allOf' | 'oneOf' | 'anyOf';\n includedProperties: string[];\n };\n context: ContextSpec;\n imports: GeneratorImport[];\n // This is used to prevent recursion when combining schemas\n // When an element is added to the array, it means on this iteration, we've already seen this property\n existingReferencedProperties: string[];\n 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], 'en', { numeric: true });\n });\n }\n const propertyScalars = entries\n .map(\n ([key, prop]: [\n string,\n OpenApiReferenceObject | OpenApiSchemaObject,\n ]) => {\n if (combine?.includedProperties.includes(key)) {\n return;\n }\n\n const isRequired =\n mockOptions?.required ??\n (Array.isArray(itemRequired) ? itemRequired : []).includes(key);\n\n const hasNullable = 'nullable' in prop && prop.nullable === true;\n\n // Check to see if the property is a reference to an existing property\n // Fixes issue #910\n if (\n isReference(prop) &&\n existingReferencedProperties.includes(\n getReferenceName(prop.$ref, context),\n )\n ) {\n if (isRequired) {\n const keyDefinition = getKey(key);\n return `${keyDefinition}: null`;\n }\n return;\n }\n\n const 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, context),\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\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 getRefInfo,\n isReference,\n isString,\n mergeDeep,\n type MockOptions,\n type OpenApiSchemaObject,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { isFakerVersionV9 } from '../compatible-v9';\nimport { DEFAULT_FORMAT_MOCK } from '../constants';\nimport {\n getNullable,\n resolveMockOverride,\n resolveMockValue,\n} from '../resolvers';\nimport { 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], 'en', { numeric: true }),\n );\n for (const [tag, options] of sortedTags) {\n if (!tags.includes(tag)) {\n continue;\n }\n overrideTag = mergeDeep(overrideTag, options);\n }\n\n const tagProperty = resolveMockOverride(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 ) {\n // OAS 3.0 inputs go through @scalar/openapi-parser's upgrade(), which\n // rewrites property-level `example: <value>` into `examples: [<value>]`\n // and deletes the singular field. Fall back to the array form so this\n // option keeps working post-upgrade.\n const propertyExample =\n item.example === undefined\n ? Array.isArray(item.examples) && item.examples.length > 0\n ? item.examples[0]\n : undefined\n : item.example;\n if (propertyExample !== undefined) {\n return {\n value: JSON.stringify(propertyExample),\n imports: [],\n name: item.name,\n overrided: true,\n };\n }\n }\n\n const formatOverrides = safeMockOptions.format ?? {};\n const ALL_FORMAT: Record<string, string> = {\n ...DEFAULT_FORMAT_MOCK,\n ...Object.fromEntries(\n Object.entries(formatOverrides).filter(\n (entry): entry is [string, string] => typeof entry[1] === 'string',\n ),\n ),\n };\n\n 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 const booleanImports: GeneratorImport[] = [];\n if (item.enum) {\n value = getEnum(\n item,\n booleanImports,\n context,\n existingReferencedProperties,\n 'boolean',\n );\n } else if ('const' in item) {\n value = JSON.stringify(item.const);\n }\n return {\n value,\n enums: item.enum,\n imports: booleanImports,\n name: item.name,\n };\n }\n\n case 'array': {\n if (!item.items) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n const itemsRef = extractItemsRef(item.items);\n if (\n itemsRef &&\n existingReferencedProperties.includes(\n getRefInfo(itemsRef, context).name,\n )\n ) {\n return { value: '[]', imports: [], name: item.name };\n }\n\n // If `items` is a single-element `allOf`/`oneOf`/`anyOf` wrapping a\n // `$ref`, treat it as a direct `$ref`. This avoids double-wrapping when\n // the inner schema is an enum array (whose `getEnum` already emits\n // `faker.helpers.arrayElements(...)`) and keeps recursion semantics in\n // line with direct-$ref items.\n const resolvedItems =\n itemsRef && !('$ref' in item.items) ? { $ref: itemsRef } : item.items;\n\n const {\n value,\n enums,\n imports: resolvedImports,\n } = resolveMockValue({\n schema: {\n ...resolvedItems,\n name: item.name,\n 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 // Use global defaults for the missing bound only when they do not\n // invert the range; otherwise reuse the explicit schema bound so we\n // never invent values the user did not supply (and never produce\n // min > max). This also avoids relying on faker's internal default\n // upper bound when only `minItems` is specified, which can otherwise\n // produce very large arrays.\n const arrSchemaMin = item.minItems;\n const arrSchemaMax = item.maxItems;\n const arrGlobalMin = safeMockOptions.arrayMin;\n const arrGlobalMax = safeMockOptions.arrayMax;\n\n let arrMin: number | undefined;\n if (arrSchemaMin !== undefined) {\n arrMin = arrSchemaMin;\n } else if (arrSchemaMax === undefined) {\n arrMin = arrGlobalMin;\n } else if (arrGlobalMin === undefined || arrGlobalMin > arrSchemaMax) {\n arrMin = arrSchemaMax;\n } else {\n arrMin = arrGlobalMin;\n }\n\n let arrMax: number | undefined;\n if (arrSchemaMax !== undefined) {\n arrMax = arrSchemaMax;\n } else if (arrSchemaMin === undefined) {\n arrMax = arrGlobalMax;\n } else if (arrGlobalMax === undefined || arrGlobalMax < arrSchemaMin) {\n arrMax = arrSchemaMin;\n } else {\n arrMax = arrGlobalMax;\n }\n\n const arrParts: string[] = [];\n if (arrMin !== undefined) arrParts.push(`min: ${arrMin}`);\n if (arrMax !== undefined) arrParts.push(`max: ${arrMax}`);\n const arrLengthArg =\n arrParts.length > 0 ? `{${arrParts.join(', ')}}` : '';\n\n return {\n value:\n `Array.from({ length: faker.number.int(` +\n `${arrLengthArg}) ` +\n `}, (_, i) => i + 1).map(() => (${mapValue}))`,\n imports: resolvedImports,\n name: item.name,\n };\n }\n\n case 'string': {\n // faker.string.alpha's `length: { min, max }` form requires BOTH bounds.\n // When only one side is schema-specified, fall back to the global default\n // for the missing side only if it does not invert the range; otherwise\n // reuse the explicit bound so we never invent values the user did not\n // supply (and never produce min > max).\n const schemaMin = item.minLength;\n const schemaMax = item.maxLength;\n const globalMin = safeMockOptions.stringMin;\n const globalMax = safeMockOptions.stringMax;\n\n let strMin: number | undefined;\n if (schemaMin !== undefined) {\n strMin = schemaMin;\n } else if (schemaMax === undefined) {\n strMin = globalMin;\n } else if (globalMin === undefined || globalMin > schemaMax) {\n strMin = schemaMax;\n } else {\n strMin = globalMin;\n }\n\n let strMax: number | undefined;\n if (schemaMax !== undefined) {\n strMax = schemaMax;\n } else if (schemaMin === undefined) {\n strMax = globalMax;\n } else if (globalMax === undefined || globalMax < schemaMin) {\n strMax = schemaMin;\n } else {\n strMax = globalMax;\n }\n\n // faker.string.alpha's `length: { min, max }` requires both bounds, so\n // only emit a length argument when we have a complete pair. If only one\n // side could be resolved (e.g., no schema bound and only one global is\n // configured) we fall back to faker's own default length.\n const strLenParts: string[] = [];\n if (strMin !== undefined && strMax !== undefined) {\n strLenParts.push(`min: ${strMin}`, `max: ${strMax}`);\n }\n const length =\n strLenParts.length > 0 ? `{length: {${strLenParts.join(', ')}}}` : '';\n let value = `faker.string.alpha(${length})`;\n const stringImports: GeneratorImport[] = [];\n\n if (item.enum) {\n value = getEnum(\n item,\n stringImports,\n context,\n existingReferencedProperties,\n 'string',\n );\n } else if (item.pattern) {\n value = `faker.helpers.fromRegExp(${JSON.stringify(item.pattern)})`;\n } else if ('const' in item) {\n value = JSON.stringify((item as OpenApiSchemaObject).const);\n }\n\n return {\n value: getNullable(value, isNullable),\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\n// Returns the $ref string from array `items` — either direct ($ref on items\n// itself) or wrapped in a single-element allOf/oneOf/anyOf composition.\n// Multi-element compositions return undefined to preserve combine semantics.\nfunction extractItemsRef(items: MockSchema): string | undefined {\n if (isReference(items)) {\n return items.$ref;\n }\n for (const key of ['allOf', 'oneOf', 'anyOf'] as const) {\n const composed = items[key] as MockSchema[] | undefined;\n if (\n Array.isArray(composed) &&\n composed.length === 1 &&\n isReference(composed[0])\n ) {\n return composed[0].$ref;\n }\n }\n return;\n}\n\nfunction getItemType(item: MockSchemaObject) {\n if (Array.isArray(item.type) && item.type.includes('null')) {\n const typesWithoutNull = item.type.filter((x) => x !== 'null');\n const itemType =\n typesWithoutNull.length === 1 ? typesWithoutNull[0] : typesWithoutNull;\n\n return itemType;\n }\n\n if (item.type) return item.type;\n if (!item.enum) return;\n\n const uniqTypes = new Set(item.enum.map((value) => typeof value));\n if (uniqTypes.size > 1) return;\n\n const type = [...uniqTypes.values()].at(0);\n if (!type) return;\n return ['string', 'number'].includes(type) ? type : undefined;\n}\n\nfunction getEnum(\n item: MockSchemaObject,\n imports: GeneratorImport[],\n context: ContextSpec,\n existingReferencedProperties: string[],\n type?: 'string' | 'number' | 'boolean',\n) {\n if (!item.enum) return '';\n const joinedEnumValues = item.enum\n .filter((e) => e !== null) // TODO fix type, e can absolutely be null\n .map((e) =>\n type === 'string' || (type === undefined && isString(e))\n ? `'${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 isFunction,\n isReference,\n type MockOptions,\n type OpenApiSchemaObject,\n OutputMockType,\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\n/**\n * True when the active faker generator entry asks for consolidated schema\n * mock factories and the output is configured to host them (i.e. there is a\n * dedicated schemas directory we can import `index.faker` from). Used to\n * decide whether an operation factory should inline a `$ref`'d schema or\n * delegate to its `get<X>Mock` factory.\n */\nfunction shouldDelegateToSchemaFactories(context: ContextSpec): boolean {\n if (!context.output.schemas) return false;\n // The duplicate-type guard in `normalizeMocksOption` (see\n // `packages/orval/src/utils/options.ts`) ensures at most one faker entry\n // exists per output, so finding the first one that opted into schemas is\n // unambiguous today and remains correct if that guard ever loosens.\n const fakerEntry = context.output.mock.generators.find(\n (g) =>\n !isFunction(g) && g.type === OutputMockType.FAKER && g.schemas === true,\n );\n return !!fakerEntry;\n}\n\n/**\n * Predicate: this `$ref` points at a top-level `#/components/schemas/<Name>`\n * (vs. a parameter, response, or inline schema). Only those have a\n * corresponding `get<Name>Mock` factory in the consolidated faker file.\n */\nfunction isComponentsSchemaRef(refPaths: string[] | undefined): boolean {\n return (\n Array.isArray(refPaths) &&\n refPaths[0] === 'components' &&\n refPaths[1] === 'schemas'\n );\n}\n\n/**\n * Returns true when an operation- or tag-level mock override touches any\n * property declared on the referenced schema. In that case we must inline\n * the schema body so the override actually applies; the shared\n * `get<X>Mock` factory has no knowledge of operation-scoped overrides.\n *\n * Reuses `resolveMockOverride` so the same matching rules apply as for\n * regular property mocks — bare name, regex (`/.../`), and exact-path\n * (`#.foo.bar`). The parent's `path` (where the `$ref` appears in the\n * surrounding schema) gets composed into each synthetic property item so\n * exact-path overrides like `#.color.value` resolve correctly.\n */\nfunction hasOverrideTouchingSchema(\n schemaProperties: Record<string, unknown> | undefined,\n mockOptions: MockOptions | undefined,\n operationId: string,\n tags: string[],\n parentPath: string | undefined,\n): boolean {\n if (!schemaProperties) return false;\n const propertyNames = Object.keys(schemaProperties);\n if (propertyNames.length === 0) return false;\n\n const overrideBuckets: (Record<string, unknown> | undefined)[] = [\n mockOptions?.operations?.[operationId]?.properties,\n ];\n for (const tag of tags) {\n overrideBuckets.push(mockOptions?.tags?.[tag]?.properties);\n }\n\n return overrideBuckets.some((bucket) => {\n if (!bucket) return false;\n return propertyNames.some((propertyName) => {\n const synthetic = {\n name: propertyName,\n path: parentPath ? `${parentPath}.${propertyName}` : propertyName,\n } as OpenApiSchemaObject & { name: string; path?: string };\n return !!resolveMockOverride(bucket, synthetic);\n });\n });\n}\n\ninterface ResolveMockValueOptions {\n schema: MockSchema;\n operationId: string;\n mockOptions?: MockOptions;\n tags: string[];\n combine?: {\n separator: 'allOf' | 'oneOf' | 'anyOf';\n includedProperties: string[];\n };\n context: ContextSpec;\n imports: GeneratorImport[];\n // This is used to prevent recursion when combining schemas\n // When an element is added to the array, it means on this iteration, we've already seen this property\n existingReferencedProperties: string[];\n 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 // When a discriminator parent ($ref-loaded schema with both `discriminator`\n // and `oneOf`) is being expanded inside an `allOf` chain AND the chain\n // is rooted at one of that parent's mapping targets (i.e. the current\n // schema *is* a variant via `allOf: [parent, ...extras]`), the parent's\n // `oneOf` is descriptive of the union, not additive to this specific\n // variant. Re-expanding it inlines sibling factory calls into the derived\n // variant's mock body (#2155). Drop the `oneOf` side here; the parent\n // still contributes its own `properties` and other base attributes\n // through the remaining schema fields.\n //\n // The mapping-target check guards against cases like\n // `someField: allOf: [<discriminator parent>]` (e.g. #one-of-nested\n // `Example2.expiry`), where the surrounding schema is NOT a variant of\n // the parent and we still need the full union to randomize over.\n //\n // Symmetrically with the oneOf-side fix in `combineSchemasMock` (#3429),\n // also drop the discriminator key from the parent's `properties`: each\n // variant already carries a constrained discriminator value via\n // `resolveDiscriminators`, so leaving the parent's free-choice enum in\n // would just emit dead code (immediately shadowed by the variant's\n // constrained value through spread merge).\n if (\n combine?.separator === 'allOf' &&\n newSchema.discriminator &&\n newSchema.oneOf\n ) {\n const parentDiscriminator = newSchema.discriminator as {\n propertyName?: string;\n mapping?: Record<string, string>;\n };\n const mappingTargetNames = parentDiscriminator.mapping\n ? Object.values(parentDiscriminator.mapping).map((ref) =>\n pascal(ref.split('/').pop() ?? ''),\n )\n : [];\n const expandingAsVariant = existingReferencedProperties.some((refName) =>\n mappingTargetNames.includes(refName),\n );\n\n if (expandingAsVariant) {\n const mutableSchema = newSchema as Record<string, unknown>;\n delete mutableSchema.oneOf;\n const parentProperties = newSchema.properties as\n | Record<string, unknown>\n | undefined;\n if (\n parentDiscriminator.propertyName &&\n parentProperties &&\n parentDiscriminator.propertyName in parentProperties\n ) {\n const remainingProperties = Object.fromEntries(\n Object.entries(parentProperties).filter(\n ([key]) => key !== parentDiscriminator.propertyName,\n ),\n );\n if (Object.keys(remainingProperties).length === 0) {\n delete mutableSchema.properties;\n } else {\n mutableSchema.properties = remainingProperties;\n }\n const parentRequired = newSchema.required as string[] | undefined;\n if (Array.isArray(parentRequired)) {\n const filteredRequired = parentRequired.filter(\n (key) => key !== parentDiscriminator.propertyName,\n );\n if (filteredRequired.length === 0) {\n delete mutableSchema.required;\n } else {\n mutableSchema.required = filteredRequired;\n }\n }\n }\n }\n }\n\n const newSeparator = newSchema.allOf\n ? 'allOf'\n : newSchema.oneOf\n ? 'oneOf'\n : 'anyOf';\n\n // When schema-level faker factories are being emitted (`schemas: true`),\n // delegate to `get<X>Mock()` instead of inlining the body. The factory\n // already encodes the same fields, so this both deduplicates the output\n // and lets a single source of truth drive shared mocks.\n const canDelegate =\n shouldDelegateToSchemaFactories(context) &&\n isComponentsSchemaRef(refPaths) &&\n !hasOverrideTouchingSchema(\n schemaRef?.properties as Record<string, unknown> | undefined,\n mockOptions,\n operationId,\n tags,\n schemaReference.path,\n );\n\n if (canDelegate) {\n const factoryName = `get${pascal(name)}Mock`;\n imports.push({\n name: factoryName,\n values: true,\n schemaFactory: true,\n });\n // For object-like refs the historical inline output is `{ ...body }`\n // so the spread form keeps callers (combineSchemasMock, object\n // properties) working without other changes. For everything else\n // (scalars, arrays, nullables) emit the bare call.\n const isObjectLike =\n newSchema.type === 'object' ||\n !!newSchema.allOf ||\n !!newSchema.oneOf ||\n !!newSchema.anyOf;\n const callValue = isObjectLike\n ? `{ ...${factoryName}() }`\n : `${factoryName}()`;\n\n return {\n value: getNullable(callValue, Boolean(newSchema.nullable)),\n imports,\n name: newSchema.name,\n type: getType(newSchema),\n };\n }\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 getRefInfo,\n isReference,\n isSchema,\n type MockOptions,\n} from '@orval/core';\n\nimport type { MockDefinition, MockSchema, MockSchemaObject } from '../../types';\nimport { resolveMockValue } from '../resolvers';\n\nfunction getReferenceName(\n ref: string | undefined,\n context: ContextSpec,\n): string {\n if (!ref) return '';\n\n return getRefInfo(ref, context).name;\n}\n\ninterface CombineSchemasMockOptions {\n item: MockSchemaObject;\n separator: 'allOf' | 'oneOf' | 'anyOf';\n operationId: string;\n mockOptions?: MockOptions;\n tags: string[];\n combine?: {\n separator: 'allOf' | 'oneOf' | 'anyOf';\n includedProperties: string[];\n };\n context: ContextSpec;\n imports: GeneratorImport[];\n // This is used to prevent recursion when combining schemas\n // When an element is added to the array, it means on this iteration, we've already seen this property\n existingReferencedProperties: string[];\n 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 // When a oneOf schema declares a discriminator with a mapping AND the\n // discriminator property is also declared on the parent's `properties`,\n // skip that property here. Each variant already encodes a constrained value\n // for it via `resolveDiscriminators`; emitting the parent's free-choice enum\n // alongside the picked variant would override the constrained value and\n // guarantee a discriminator mismatch (#2155).\n const discriminator = item.discriminator as\n | { propertyName?: string; mapping?: Record<string, string> }\n | undefined;\n const itemProperties = item.properties as Record<string, unknown> | undefined;\n const discriminatorPropertyName =\n separator === 'oneOf' &&\n discriminator?.mapping &&\n discriminator.propertyName &&\n itemProperties &&\n discriminator.propertyName in itemProperties\n ? discriminator.propertyName\n : undefined;\n\n const itemEntriesForResolve = Object.entries(item).filter(\n ([key]) => key !== separator,\n );\n if (discriminatorPropertyName && itemProperties) {\n const propertiesIdx = itemEntriesForResolve.findIndex(\n ([key]) => key === 'properties',\n );\n if (propertiesIdx !== -1) {\n const filteredProperties = Object.fromEntries(\n Object.entries(itemProperties).filter(\n ([key]) => key !== discriminatorPropertyName,\n ),\n );\n if (Object.keys(filteredProperties).length === 0) {\n itemEntriesForResolve.splice(propertiesIdx, 1);\n } else {\n itemEntriesForResolve[propertiesIdx] = [\n 'properties',\n filteredProperties,\n ];\n }\n }\n // Keep `required` in sync with the filtered properties — leaving the\n // discriminator key in `required` would describe a schema whose required\n // field is missing from `properties`.\n const requiredIdx = itemEntriesForResolve.findIndex(\n ([key]) => key === 'required',\n );\n if (requiredIdx !== -1 && Array.isArray(itemRequired)) {\n const filteredRequired = itemRequired.filter(\n (key) => key !== discriminatorPropertyName,\n );\n if (filteredRequired.length === 0) {\n itemEntriesForResolve.splice(requiredIdx, 1);\n } else {\n itemEntriesForResolve[requiredIdx] = ['required', filteredRequired];\n }\n }\n }\n\n const hasResolvableProperties = itemEntriesForResolve.some(\n ([key]) => key === 'properties',\n );\n\n const itemResolvedValue =\n isRefAndNotExisting || hasResolvableProperties\n ? resolveMockValue({\n schema: Object.fromEntries(itemEntriesForResolve) as MockSchemaObject,\n combine: {\n separator: 'allOf',\n includedProperties: [],\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n })\n : undefined;\n\n includedProperties.push(...(itemResolvedValue?.includedProperties ?? []));\n combineImports.push(...(itemResolvedValue?.imports ?? []));\n let containsOnlyPrimitiveValues = true;\n\n const allRequiredFields: string[] = [];\n if (separator === 'allOf') {\n if (itemRequired) {\n allRequiredFields.push(...itemRequired);\n }\n for (const val of separatorItems) {\n if (isSchema(val) && val.required) {\n allRequiredFields.push(...(val.required as string[]));\n }\n }\n }\n\n let value = separator === 'allOf' ? '' : 'faker.helpers.arrayElement([';\n\n for (const val of separatorItems) {\n const refName = isReference(val) ? getReferenceName(val.$ref, context) : '';\n // For allOf: skip 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 // For oneOf/anyOf: skip variants that point back to an already-visited schema,\n // otherwise polymorphic recursion (e.g. Base.Parent → oneOf [Derived → allOf [Base]])\n // would infinitely re-expand.\n const shouldSkipRef =\n separator === 'allOf'\n ? refName &&\n (refName === item.name ||\n (existingReferencedProperties.includes(refName) && !item.isRef))\n : refName && existingReferencedProperties.includes(refName);\n\n if (shouldSkipRef) {\n if (separatorItems.length === 1) {\n value = 'undefined';\n }\n continue;\n }\n\n // the required fields in this schema need to be considered\n // in the sub schema under the allOf key\n const schema = (() => {\n if (separator !== 'allOf' || allRequiredFields.length === 0) {\n return {\n ...val,\n name: item.name,\n path: item.path ?? '#',\n };\n }\n\n const valWithRequired = val as MockSchema & { required?: string[] };\n const valRequired = valWithRequired.required;\n const combinedRequired = valRequired\n ? [...allRequiredFields, ...valRequired]\n : allRequiredFields;\n\n return {\n ...val,\n name: item.name,\n path: item.path ?? '#',\n required: [...new Set(combinedRequired)],\n };\n })();\n\n const resolvedValue = resolveMockValue({\n schema,\n combine: {\n separator,\n includedProperties:\n separator === 'oneOf'\n ? (itemResolvedValue?.includedProperties ?? [])\n : includedProperties,\n },\n mockOptions,\n operationId,\n tags,\n context,\n imports,\n existingReferencedProperties,\n splitMockImplementations,\n });\n\n combineImports.push(...resolvedValue.imports);\n includedProperties.push(...(resolvedValue.includedProperties ?? []));\n\n if (resolvedValue.value === '{}') {\n containsOnlyPrimitiveValues = false;\n continue;\n }\n\n if (separator === 'allOf') {\n if (resolvedValue.value.startsWith('{') || !resolvedValue.type) {\n containsOnlyPrimitiveValues = false;\n value += `...${resolvedValue.value},`;\n continue;\n }\n\n if (resolvedValue.type === 'object') {\n containsOnlyPrimitiveValues = false;\n value += resolvedValue.value.startsWith('faker')\n ? `...${resolvedValue.value},`\n : `...{${resolvedValue.value}},`;\n continue;\n }\n }\n\n value += `${resolvedValue.value},`;\n }\n // When every oneOf/anyOf variant was skipped (e.g. all $refs were already on\n // the resolution stack) the loop leaves `value` at its initial opener. Emit\n // `undefined` instead of closing it as `faker.helpers.arrayElement([])`,\n // which throws at runtime.\n const isEmptyArrayElement =\n separator !== 'allOf' && value === 'faker.helpers.arrayElement([';\n\n let finalValue =\n value === 'undefined' || isEmptyArrayElement\n ? 'undefined'\n : // containsOnlyPrimitiveValues isn't just true, it's being set to false inside the above reduce and the type system doesn't detect it\n `${separator === 'allOf' && !containsOnlyPrimitiveValues ? '{' : ''}${value}${separator === 'allOf' ? (containsOnlyPrimitiveValues ? '' : '}') : '])'}`;\n if (itemResolvedValue) {\n finalValue = finalValue.startsWith('...')\n ? `...{${finalValue}, ${itemResolvedValue.value}}`\n : `{...${finalValue}, ${itemResolvedValue.value}}`;\n }\n if (finalValue.endsWith(',')) {\n finalValue = finalValue.slice(0, Math.max(0, finalValue.length - 1));\n }\n\n return {\n value: finalValue,\n imports: combineImports,\n name: item.name,\n includedProperties,\n };\n}\n","import { camel, sanitize } from '@orval/core';\n\nconst hasParam = (path: string): boolean => /[^{]*{[\\w*_-]*}.*/.test(path);\n\nconst getRoutePath = (path: string): string => {\n const matches = /([^{]*){?([\\w*_-]*)}?(.*)/.exec(path);\n if (!matches?.length) return path; // impossible due to regexp grouping here, but for TS\n\n const prev = matches[1];\n const param = sanitize(camel(matches[2]), {\n es5keyword: true,\n underscore: true,\n dash: true,\n dot: true,\n });\n const next = hasParam(matches[3]) ? getRoutePath(matches[3]) : matches[3];\n\n return hasParam(path) ? `${prev}:${param}${next}` : `${prev}${param}${next}`;\n};\n\nexport const getRouteMSW = (route: string, baseUrl = '*') => {\n route = route.replaceAll(':', String.raw`\\\\:`);\n const splittedRoute = route.split('/');\n let resolvedRoute = baseUrl;\n\n for (const [index, path] of splittedRoute.entries()) {\n if (!path && !index) {\n continue;\n }\n\n if (!path.includes('{')) {\n resolvedRoute = `${resolvedRoute}/${path}`;\n continue;\n }\n\n resolvedRoute = `${resolvedRoute}/${getRoutePath(path)}`;\n }\n\n return resolvedRoute;\n};\n","import {\n type ContextSpec,\n generalJSTypesWithArray,\n type GeneratorImport,\n type GlobalMockOptions,\n isFunction,\n type MockOptions,\n type NormalizedOverrideOutput,\n type OpenApiDocument,\n resolveRef,\n type ResReqTypesValue,\n stringify,\n} from '@orval/core';\n\nimport { 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 escapeRegExp,\n generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorImport,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n isFunction,\n isMswMock,\n isObject,\n pascal,\n type ResReqTypesValue,\n} 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 locale = options?.locale;\n\n const fakerDependency: GeneratorDependency = {\n exports: [{ name: 'faker', values: true }],\n dependency: locale ? `@faker-js/faker/locale/${locale}` : '@faker-js/faker',\n };\n\n const hasDelay =\n options && isMswMock(options) ? options.delay !== false : true;\n\n const exports = [\n { name: 'http', values: true },\n { name: 'HttpResponse', values: true },\n { name: 'RequestHandlerOptions', values: false },\n ];\n\n if (hasDelay) {\n exports.push({ name: 'delay', values: true });\n }\n\n return [{ exports, dependency: 'msw' }, fakerDependency];\n}\n\nexport const generateMSWImports: GenerateMockImports = ({\n implementation,\n imports,\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n options,\n}) => {\n return generateDependencyImports(\n implementation,\n [...getMSWDependencies(options), ...imports],\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\nfunction generateDefinition(\n name: string,\n route: string,\n getResponseMockFunctionNameBase: string,\n handlerNameBase: string,\n { operationId, response, verb, tags }: GeneratorVerbOptions,\n { override, context, mock }: GeneratorOptions,\n returnType: string,\n status: string,\n responseImports: GeneratorImport[],\n responses: ResReqTypesValue[],\n contentTypes: string[],\n splitMockImplementations: string[],\n) {\n const oldSplitMockImplementations = [...splitMockImplementations];\n const { definitions, definition, imports } = getMockDefinition({\n operationId,\n tags,\n returnType,\n responses,\n imports: responseImports,\n override,\n context,\n mockOptions: isFunction(mock) ? undefined : mock,\n splitMockImplementations,\n });\n\n const mockData = getMockOptionsDataOverride(tags, operationId, override);\n\n let value = '';\n\n if (mockData) {\n value = mockData;\n } else if (definitions.length > 1) {\n value = `faker.helpers.arrayElement(${definition})`;\n } else if (definitions[0]) {\n value = definitions[0];\n }\n\n const isResponseOverridable = value.includes(overrideVarName);\n const isTextLikeContentType = (ct: string) =>\n ct.startsWith('text/') || ct === 'application/xml' || ct.endsWith('+xml');\n const isTypeExactlyString = (typeExpr: string) =>\n typeExpr.trim().replaceAll(/^\\(+|\\)+$/g, '') === 'string';\n const isUnionContainingString = (typeExpr: string) =>\n typeExpr\n .split('|')\n .map((part) => part.trim().replaceAll(/^\\(+|\\)+$/g, ''))\n .includes('string');\n const isBinaryLikeContentType = (ct: string) =>\n ct === 'application/octet-stream' ||\n ct === 'application/pdf' ||\n ct.startsWith('image/') ||\n ct.startsWith('audio/') ||\n ct.startsWith('video/') ||\n ct.startsWith('font/');\n\n const preferredContentType = isFunction(mock)\n ? undefined\n : (\n mock as { preferredContentType?: string } | undefined\n )?.preferredContentType?.toLowerCase();\n // match preferredContentType against `responses` (not the wider `contentTypes` which mixes success and error MIMEs).\n const preferredContentTypeMatch = preferredContentType\n ? responses.find(\n (r) => r.contentType.toLowerCase() === preferredContentType,\n )?.contentType\n : undefined;\n const contentTypesByPreference = preferredContentTypeMatch\n ? [preferredContentTypeMatch]\n : contentTypes;\n const responsesByPreference = preferredContentTypeMatch\n ? responses.filter((r) => r.contentType === preferredContentTypeMatch)\n : responses;\n\n const hasTextLikeContentType = contentTypes.some((ct) =>\n isTextLikeContentType(ct),\n );\n const isExactlyStringReturnType = isTypeExactlyString(returnType);\n\n // Keep text helpers for exact string success return types whenever a text-like\n // media type is available in the declared content types. This prevents a\n // preferredContentType that matches an error media type from forcing\n // HttpResponse.json() for text/plain success responses.\n const isTextResponse =\n (isExactlyStringReturnType && hasTextLikeContentType) ||\n contentTypesByPreference.some((ct) => isTextLikeContentType(ct));\n const isSchemaBinary = (r: ResReqTypesValue) =>\n r.originalSchema?.format === 'binary' ||\n (r.originalSchema?.contentMediaType === 'application/octet-stream' &&\n !r.originalSchema.contentEncoding);\n const isBinaryResponse =\n contentTypesByPreference.some((ct) => isBinaryLikeContentType(ct)) ||\n responsesByPreference.some((r) => isSchemaBinary(r));\n // Bare ref names of schema-binary responses (include alias for collision-renamed imports).\n const binaryRefNames = responsesByPreference\n .filter((r) => isSchemaBinary(r))\n .flatMap((r) =>\n r.imports.flatMap((imp) =>\n imp.alias ? [imp.name, imp.alias] : [imp.name],\n ),\n );\n const isReturnHttpResponse = value && value !== 'undefined';\n\n const getResponseMockFunctionName = `${getResponseMockFunctionNameBase}${pascal(\n name,\n )}`;\n const handlerName = `${handlerNameBase}${pascal(name)}`;\n\n const addedSplitMockImplementations = splitMockImplementations.slice(\n oldSplitMockImplementations.length,\n );\n splitMockImplementations.push(...addedSplitMockImplementations);\n const mockImplementations =\n addedSplitMockImplementations.length > 0\n ? `${addedSplitMockImplementations.join('\\n\\n')}\\n\\n`\n : '';\n\n const binaryTypeRewriteRegex = new RegExp(\n String.raw`\\b(?:${['Blob', ...binaryRefNames].map((n) => escapeRegExp(n)).join('|')})\\b`,\n 'g',\n );\n const mockReturnType = isBinaryResponse\n ? returnType.replaceAll(binaryTypeRewriteRegex, 'ArrayBuffer')\n : returnType;\n\n // Detect when the return type is a union containing void (e.g. \"Resource | void\"\n // from endpoints with both 200 JSON and 204 No Content responses). In this case\n // we need runtime branching so that void responses use `new HttpResponse(null)`\n // instead of `HttpResponse.json()` which does not accept void/undefined.\n const isVoidUnionType =\n mockReturnType !== 'void' &&\n mockReturnType.split('|').some((part) => part.trim() === 'void');\n const noContentStatusCode = isVoidUnionType\n ? (responses.find((r) => r.value === 'void')?.key ?? '204')\n : undefined;\n const nonVoidMockReturnType = isVoidUnionType\n ? mockReturnType\n .split('|')\n .filter((part) => part.trim() !== 'void')\n .join(' | ')\n .trim()\n : mockReturnType;\n\n const hasJsonContentType = contentTypesByPreference.some(\n (ct) => ct.includes('json') || ct.includes('+json'),\n );\n const hasStringReturnType =\n isTypeExactlyString(mockReturnType) ||\n isUnionContainingString(mockReturnType);\n const overrideResponseType = `Partial<Extract<${nonVoidMockReturnType}, object>>`;\n const shouldPreferJsonResponse = hasJsonContentType && !hasStringReturnType;\n\n // When the return type is a union containing both string and structured types\n // (e.g. `string | Pet`) AND both text-like and JSON content types are available,\n // we need runtime branching to pick the correct HttpResponse helper based on\n // the actual resolved value type. Without this, objects could be JSON.stringify'd\n // and served under a text-like Content-Type (e.g. xml/html/plain), which is\n // semantically incorrect for structured JSON data.\n const needsRuntimeContentTypeSwitch =\n isTextResponse &&\n hasJsonContentType &&\n hasStringReturnType &&\n mockReturnType !== 'string';\n\n const 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). Only emit it\n // when we actually generate a `*ResponseMock()` helper — otherwise the\n // prelude would reference a function that doesn't exist (issue #3270).\n let responsePrelude = '';\n if (isReturnHttpResponse) {\n if (isBinaryResponse) {\n responsePrelude = `const binaryBody = ${resolvedResponseExpr};`;\n } else if (isVoidUnionType || needsRuntimeContentTypeSwitch) {\n responsePrelude = `const resolvedBody = ${resolvedResponseExpr};`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n responsePrelude = `const resolvedBody = ${resolvedResponseExpr};\n const textBody = typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null);`;\n }\n }\n if (!isReturnHttpResponse) {\n responseBody = `new HttpResponse(null,\n { status: ${statusCode}\n })`;\n } else if (isBinaryResponse) {\n responseBody = `HttpResponse.arrayBuffer(\n binaryBody instanceof ArrayBuffer\n ? binaryBody\n : new ArrayBuffer(0),\n { status: ${statusCode},\n headers: { 'Content-Type': '${binaryContentType}' }\n })`;\n } else if (isVoidUnionType) {\n // Runtime branching for void union types (e.g. 200 JSON + 204 No Content).\n // When the resolved body is undefined, return an empty response with the\n // no-content status code; otherwise use the appropriate response helper.\n let nonVoidBody: string;\n if (needsRuntimeContentTypeSwitch) {\n nonVoidBody = `typeof resolvedBody === 'string'\n ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n nonVoidBody = `HttpResponse.${textHelper}(\n typeof resolvedBody === 'string' ? resolvedBody : JSON.stringify(resolvedBody ?? null),\n { status: ${statusCode} })`;\n } else {\n nonVoidBody = `HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n }\n responseBody = `resolvedBody === undefined\n ? new HttpResponse(null, { status: ${noContentStatusCode} })\n : ${nonVoidBody}`;\n } else if (needsRuntimeContentTypeSwitch) {\n // Runtime branching: when the resolved value is a string, use the\n // appropriate text helper; otherwise fall back to HttpResponse.json()\n // so objects are never JSON.stringify'd under a text/xml Content-Type.\n responseBody = `typeof resolvedBody === 'string'\n ? HttpResponse.${textHelper}(resolvedBody, { status: ${statusCode} })\n : HttpResponse.json(resolvedBody, { status: ${statusCode} })`;\n } else if (isTextResponse && !shouldPreferJsonResponse) {\n responseBody = `HttpResponse.${textHelper}(textBody,\n { status: ${statusCode}\n })`;\n } else {\n responseBody = `HttpResponse.json(${resolvedResponseExpr},\n { status: ${statusCode}\n })`;\n }\n\n const infoType = `Parameters<Parameters<typeof http.${verb}>[1]>[0]`;\n\n const handlerImplementation = `\nexport const ${handlerName} = (overrideResponse?: ${mockReturnType} | ((${infoParam}: ${infoType}) => Promise<${mockReturnType}> | ${mockReturnType}), options?: RequestHandlerOptions) => {\n return http.${verb}('${route}', async (${infoParam}: ${infoType}) => {${\n delay === false\n ? ''\n : `await delay(${isFunction(delay) ? `(${String(delay)})()` : String(delay)});`\n }\n ${isReturnHttpResponse ? '' : `if (typeof overrideResponse === 'function') {await overrideResponse(info); }`}\n ${responsePrelude}\n return ${responseBody}\n }, options)\n}\\n`;\n\n const includeResponseImports = [\n ...imports,\n ...response.imports.filter((r) => {\n // Only keep imports referenced in the mock. Aliased imports\n // (`Foo as __Foo`) reference the alias rather than the bare name, so\n // match against either. Mirrors `addDependency` in core/generators/imports.ts (#3269).\n const searchWords = [r.alias, r.name]\n .filter((p): p is string => Boolean(p?.length))\n .map((part) => escapeRegExp(part))\n .join('|');\n if (!searchWords) {\n return false;\n }\n const reg = new RegExp(String.raw`\\b(${searchWords})\\b`);\n return reg.test(handlerImplementation) || reg.test(mockImplementation);\n }),\n ];\n\n return {\n implementation: {\n function: mockImplementation,\n handlerName: handlerName,\n handler: handlerImplementation,\n },\n imports: includeResponseImports,\n };\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 overrideBaseUrl =\n override.mock && 'baseUrl' in override.mock\n ? (override.mock as { baseUrl?: string }).baseUrl\n : undefined;\n const mockBaseUrl = mock && isMswMock(mock) ? mock.baseUrl : undefined;\n const route = getRouteMSW(pathRoute, overrideBaseUrl ?? mockBaseUrl);\n\n 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,\n handler: handlerImplementations.join('\\n'),\n },\n imports: imports,\n };\n}\n","import {\n type ClientMockGeneratorBuilder,\n type ContextSpec,\n generateDependencyImports,\n type GenerateMockImports,\n type GeneratorDependency,\n type GeneratorImport,\n type GeneratorOptions,\n type GeneratorSchema,\n type GeneratorVerbOptions,\n type GlobalMockOptions,\n pascal,\n} from '@orval/core';\n\nimport { generateMSW } from '../msw';\nimport { getMockScalar } from './getters';\n\nfunction getFakerDependencies(\n options?: GlobalMockOptions,\n): GeneratorDependency[] {\n const locale = options?.locale;\n\n return [\n {\n exports: [{ name: 'faker', values: true }],\n dependency: locale\n ? `@faker-js/faker/locale/${locale}`\n : '@faker-js/faker',\n },\n ];\n}\n\n/**\n * Emits the import header for a faker-only mock file. Faker output never\n * imports from `msw`, so this only emits `import { faker } from '@faker-js/faker'`\n * (or the locale-scoped variant) plus any operation-specific imports.\n */\nexport const generateFakerImports: GenerateMockImports = ({\n implementation,\n imports,\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n options,\n}) => {\n return generateDependencyImports(\n implementation,\n [...getFakerDependencies(options), ...imports],\n projectName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\n/**\n * Generates the faker-only mock output for a single operation. This reuses\n * the response-factory portion of {@link generateMSW} and strips out the\n * handler and aggregator entries so callers can write a standalone\n * `<file>.faker.ts` with no `msw` dependency.\n */\nexport function generateFaker(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: GeneratorOptions,\n): ClientMockGeneratorBuilder {\n const result = generateMSW(generatorVerbOptions, generatorOptions);\n return {\n implementation: {\n function: result.implementation.function,\n handler: '',\n handlerName: '',\n },\n imports: result.imports,\n };\n}\n\nexport interface GenerateFakerForSchemasResult {\n implementation: string;\n imports: GeneratorImport[];\n}\n\n/**\n * Builds the contents of a consolidated faker mock file for every entry under\n * `components/schemas`. Each schema produces a `get<SchemaName>Mock(overrides)`\n * factory in the spirit of the existing per-operation `get<Op>ResponseMock`\n * helpers. Opt in via `mock.generators: [{ type: 'faker', schemas: true }]`.\n *\n * Returns the function bodies plus any `GeneratorImport` references the\n * factories need so the writer can hoist them into the file header.\n */\nexport function generateFakerForSchemas(\n schemas: GeneratorSchema[],\n context: ContextSpec,\n options: GlobalMockOptions,\n): GenerateFakerForSchemasResult {\n const factories: string[] = [];\n const allImports: GeneratorImport[] = [];\n // Shared across schemas so we emit each helper (e.g. an `allOf`-discriminator\n // sub-factory) once even when several schemas reference the same union arm.\n const splitMockImplementations: string[] = [];\n\n // Names of the factories we're about to emit in this file. When the\n // delegation logic in `resolveMockValue` produces a `getXMock()` call for\n // a `components/schemas` ref, it pushes a `{ schemaFactory: true }` import\n // — but if `X` is itself one of the schemas being generated here, the\n // factory lives in this very file and must not be imported.\n const localFactoryNames = new Set(\n schemas.filter((s) => !!s.schema).map((s) => `get${pascal(s.name)}Mock`),\n );\n\n const mockOptions = context.output.override.mock;\n\n for (const generatorSchema of schemas) {\n const { name, schema } = generatorSchema;\n if (!schema) continue;\n\n const factoryName = `get${pascal(name)}Mock`;\n const factoryImports: GeneratorImport[] = [];\n\n const result = getMockScalar({\n item: {\n ...(schema as Record<string, unknown>),\n name,\n } as Parameters<typeof getMockScalar>[0]['item'],\n imports: factoryImports,\n mockOptions,\n operationId: name,\n tags: [],\n context,\n existingReferencedProperties: [],\n splitMockImplementations,\n allowOverride: true,\n isRef: false,\n } as Parameters<typeof getMockScalar>[0]);\n\n allImports.push(...result.imports, ...factoryImports);\n\n // Match the behavior of operation-response factories: only declare the\n // `overrideResponse` parameter when the generated expression actually\n // references it (top-level object schemas). Array / scalar / enum\n // schemas don't splice an override, so we omit the parameter rather than\n // emit a `Partial<Pet[]>` signature TS can't satisfy.\n const typeName = pascal(name);\n const isOverridable = result.value.includes('overrideResponse');\n const param = isOverridable\n ? `overrideResponse: Partial<${typeName}> = {}`\n : '';\n const factory = `export const ${factoryName} = (${param}): ${typeName} => (${result.value});\\n`;\n\n factories.push(factory);\n\n // Track the schema type itself as an import so writers can reference it\n // from the generated factory file.\n allImports.push({\n name: pascal(name),\n values: false,\n });\n }\n\n // De-duplicate imports by name+alias so the header doesn't list the same\n // schema twice when multiple factories reference it. \"Any value wins\":\n // if the same name is pushed both as a type-only import and as a value\n // import (e.g. an enum used both in an `as Foo` cast and an\n // `Object.values(Foo)` call), we keep the value form. A plain\n // `import { Foo }` works in both annotation and runtime positions, so\n // emitting the value form avoids `TS1361: 'X' cannot be used as a value\n // because it was imported using 'import type'`.\n const mergedImports = new Map<string, GeneratorImport>();\n for (const imp of allImports) {\n // Drop self-references: `get<Schema>Mock` factories generated in this\n // very file (pushed when delegation in `resolveMockValue` produced a\n // local factory call). Without this we'd emit\n // `import { getPetMock } from '.'` next to its own `export const`.\n if (imp.schemaFactory && localFactoryNames.has(imp.name)) continue;\n\n const key = `${imp.name}::${imp.alias ?? ''}`;\n const existing = mergedImports.get(key);\n if (!existing) {\n mergedImports.set(key, imp);\n continue;\n }\n if (!existing.values && imp.values) {\n mergedImports.set(key, imp);\n }\n }\n const uniqueImports = [...mergedImports.values()];\n\n // Reference `options` so unused-parameter rules don't complain; future\n // schema-specific behavior (e.g. naming convention) will read from it.\n void options;\n\n // Helper factories from union/discriminator handling (`splitMockImplementations`)\n // are emitted before the public `get<Schema>Mock` factories so call sites\n // declared after them resolve cleanly without TS hoisting concerns.\n const implementation = [...splitMockImplementations, ...factories].join('\\n');\n\n return {\n implementation,\n imports: uniqueImports,\n };\n}\n","import type {\n FakerMockOptions,\n GenerateMockImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GlobalMockOptions,\n MswMockOptions,\n} from '@orval/core';\nimport { OutputMockType } from '@orval/core';\n\nimport { generateFaker, generateFakerImports } from './faker';\nimport { generateMSW, generateMSWImports } from './msw';\n\nexport const DEFAULT_MSW_OPTIONS: MswMockOptions = {\n type: OutputMockType.MSW,\n useExamples: false,\n};\n\nexport const DEFAULT_FAKER_OPTIONS: FakerMockOptions = {\n type: OutputMockType.FAKER,\n useExamples: false,\n schemas: false,\n operationResponses: true,\n};\n\n/**\n * Returns the default GlobalMockOptions for a given mock type. Used when\n * normalizing user-provided entries in `output.mock.generators` so callers\n * can omit the per-type defaults.\n */\nexport const getDefaultMockOptionsForType = (\n type: GlobalMockOptions['type'],\n): GlobalMockOptions => {\n switch (type) {\n case OutputMockType.FAKER: {\n return DEFAULT_FAKER_OPTIONS;\n }\n case OutputMockType.MSW: {\n return DEFAULT_MSW_OPTIONS;\n }\n }\n};\n\n/**\n * Dispatches mock-file imports generation to the appropriate generator based\n * on the `OutputMockType` discriminator on the mock options.\n */\nexport const generateMockImports: GenerateMockImports = (importOptions) => {\n switch (importOptions.options?.type) {\n case OutputMockType.FAKER: {\n return generateFakerImports(importOptions);\n }\n default: {\n return generateMSWImports(importOptions);\n }\n }\n};\n\n/**\n * Dispatches per-operation mock generation to the appropriate generator\n * based on the `OutputMockType` discriminator. Each entry in\n * `output.mock.generators` is dispatched here individually.\n */\nexport function generateMock(\n generatorVerbOptions: GeneratorVerbOptions,\n generatorOptions: Omit<GeneratorOptions, 'mock'> & {\n mock: GlobalMockOptions;\n },\n) {\n switch (generatorOptions.mock.type) {\n case OutputMockType.FAKER: {\n return generateFaker(generatorVerbOptions, generatorOptions);\n }\n default: {\n return generateMSW(generatorVerbOptions, generatorOptions);\n }\n }\n}\n\nexport type { GenerateFakerForSchemasResult } from './faker';\nexport {\n generateFaker,\n generateFakerForSchemas,\n generateFakerImports,\n} from './faker';\nexport { generateMSW, generateMSWImports } from './msw';\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/mock",
3
- "version": "8.12.3",
3
+ "version": "8.13.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,7 @@
35
35
  "nuke": "rimraf .turbo dist node_modules"
36
36
  },
37
37
  "dependencies": {
38
- "@orval/core": "8.12.3",
38
+ "@orval/core": "8.13.0",
39
39
  "remeda": "^2.33.6"
40
40
  },
41
41
  "devDependencies": {