orval 7.15.0 → 7.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/orval.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const require_generate = require('../generate-BRYifonC.js');
2
+ const require_generate = require('../generate-C0smSyx1.js');
3
3
  let __orval_core = require("@orval/core");
4
4
  __orval_core = require_generate.__toESM(__orval_core);
5
5
  let __commander_js_extra_typings = require("@commander-js/extra-typings");
@@ -29,8 +29,8 @@ let node_path = require("node:path");
29
29
  node_path = __toESM(node_path);
30
30
  let node_process = require("node:process");
31
31
  node_process = __toESM(node_process);
32
- let node_url = require("node:url");
33
- node_url = __toESM(node_url);
32
+ let jiti = require("jiti");
33
+ jiti = __toESM(jiti);
34
34
  let __apidevtools_swagger_parser = require("@apidevtools/swagger-parser");
35
35
  __apidevtools_swagger_parser = __toESM(__apidevtools_swagger_parser);
36
36
  let chalk = require("chalk");
@@ -435,7 +435,7 @@ const importSpecs = async (workspace, options) => {
435
435
  //#region package.json
436
436
  var name = "orval";
437
437
  var description = "A swagger client generator for typescript";
438
- var version = "7.15.0";
438
+ var version = "7.16.1";
439
439
  var license = "MIT";
440
440
  var files = ["dist", "!dist/**/*.d.ts.map"];
441
441
  var bin = "./dist/bin/orval.js";
@@ -517,7 +517,8 @@ var dependencies = {
517
517
  "execa": "^5.1.1",
518
518
  "find-up": "5.0.0",
519
519
  "fs-extra": "^11.3.2",
520
- "js-yaml": "4.1.0",
520
+ "jiti": "^2.6.1",
521
+ "js-yaml": "4.1.1",
521
522
  "lodash.uniq": "^4.5.0",
522
523
  "openapi3-ts": "4.5.0",
523
524
  "string-argv": "^0.3.2",
@@ -611,10 +612,10 @@ const getGithubAcessToken = async (githubTokenPath) => {
611
612
  return answers.githubToken;
612
613
  }
613
614
  };
614
- const getGithubOpenApi = async (url$1) => {
615
+ const getGithubOpenApi = async (url) => {
615
616
  const githubTokenPath = __orval_core.upath.join(__dirname, ".githubToken");
616
617
  const accessToken = await getGithubAcessToken(githubTokenPath);
617
- const [info] = url$1.split("github.com/").slice(-1);
618
+ const [info] = url.split("github.com/").slice(-1);
618
619
  const [owner, repo, , branch, ...paths] = info.split("/");
619
620
  const path$1 = paths.join("/");
620
621
  try {
@@ -1316,8 +1317,9 @@ const generateSpecs = async (config, workspace, projectName) => {
1316
1317
  };
1317
1318
  function findConfigFile(configFilePath) {
1318
1319
  if (configFilePath) {
1319
- if (!node_fs.default.existsSync(configFilePath)) throw new Error(`Config file ${configFilePath} does not exist`);
1320
- return configFilePath;
1320
+ const absolutePath = node_path.default.isAbsolute(configFilePath) ? configFilePath : node_path.default.resolve(node_process.default.cwd(), configFilePath);
1321
+ if (!node_fs.default.existsSync(absolutePath)) throw new Error(`Config file ${configFilePath} does not exist`);
1322
+ return absolutePath;
1321
1323
  }
1322
1324
  const root = node_process.default.cwd();
1323
1325
  for (const ext of [
@@ -1331,13 +1333,16 @@ function findConfigFile(configFilePath) {
1331
1333
  }
1332
1334
  throw new Error(`No config file found in ${root}`);
1333
1335
  }
1336
+ async function loadConfigFile(configFilePath) {
1337
+ const module$1 = await (0, jiti.createJiti)(require("url").pathToFileURL(__filename).href, { interopDefault: true }).import(configFilePath, { default: true });
1338
+ if (module$1 === void 0) throw new Error(`${configFilePath} doesn't have a default export`);
1339
+ return await Promise.resolve(module$1);
1340
+ }
1334
1341
  const generateConfig = async (configFile, options) => {
1335
1342
  const configFilePath = findConfigFile(configFile);
1336
1343
  let configExternal;
1337
1344
  try {
1338
- const importedModule = await import(node_url.default.pathToFileURL(configFilePath).href);
1339
- if (importedModule.default === void 0) throw new Error(`${configFilePath} doesn't have a default export`);
1340
- configExternal = importedModule.default;
1345
+ configExternal = await loadConfigFile(configFilePath);
1341
1346
  } catch (error) {
1342
1347
  const errorMsg = error instanceof Error ? error.message : "unknown error";
1343
1348
  throw new Error(`failed to load from ${configFilePath} => ${errorMsg}`);
@@ -1395,4 +1400,4 @@ Object.defineProperty(exports, 'startWatcher', {
1395
1400
  return startWatcher;
1396
1401
  }
1397
1402
  });
1398
- //# sourceMappingURL=generate-BRYifonC.js.map
1403
+ //# sourceMappingURL=generate-C0smSyx1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-C0smSyx1.js","names":["OutputClient","GENERATOR_CLIENT: GeneratorClients","generateClientImports: GeneratorClientImports","dependencies","generateClientHeader: GeneratorClientHeader","generateClientFooter: GeneratorClientFooter","implementation: string","generateClientTitle: GeneratorClientTitle","mock","generateExtraFiles","GetterPropType","acc","generateMockImports","context: ContextSpecs","name","upath","SwaggerParser","path","upath","fs","yaml","https","path","githubToken: string | null","fs","upath","error: any","fs","yaml","dependencies","version","fs","FormDataArrayHandling","mock: GlobalMockOptions | ClientMockBuilder | undefined","DEFAULT_MOCK_OPTIONS","globalQueryOptions: NormalizedQueryOptions","normalizedOptions: NormalizedOptions","NamingConvention","OutputClient","OutputHttpClient","RefComponentSuffix","PropertySortOrder","upath","path","query","zod","OutputMode","hono","pkg","description","version","path","type","name","upath","schemas","implementationPaths: string[]","path","fs","config: Partial<TypeDocOptions>","configPath: string | null","OutputMode","writeSplitMode","writeTagsMode","writeSplitTagsMode","writeSingleMode","ErrorWithTag","hasErrors: true | undefined","projectName","path","process","fs","module","configExternal: ConfigExternal","options"],"sources":["../src/client.ts","../src/api.ts","../src/import-open-api.ts","../src/import-specs.ts","../package.json","../src/utils/request.ts","../src/utils/github.ts","../src/utils/package-json.ts","../src/utils/tsconfig.ts","../src/utils/http-resolver.ts","../src/utils/options.ts","../src/utils/watcher.ts","../src/utils/execute-hook.ts","../src/write-specs.ts","../src/generate.ts"],"sourcesContent":["import angular from '@orval/angular';\nimport axios from '@orval/axios';\nimport {\n asyncReduce,\n type ClientFileBuilder,\n type ClientMockGeneratorBuilder,\n type ContextSpecs,\n generateDependencyImports,\n type GeneratorClientFooter,\n type GeneratorClientHeader,\n type GeneratorClientImports,\n type GeneratorClients,\n type GeneratorClientTitle,\n type GeneratorOperations,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GeneratorVerbsOptions,\n isFunction,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n pascal,\n} from '@orval/core';\nimport fetchClient from '@orval/fetch';\nimport hono from '@orval/hono';\nimport mcp from '@orval/mcp';\nimport * as mock from '@orval/mock';\nimport query from '@orval/query';\nimport swr from '@orval/swr';\nimport zod from '@orval/zod';\n\nconst DEFAULT_CLIENT = OutputClient.AXIOS;\n\nconst getGeneratorClient = (\n outputClient: OutputClient | OutputClientFunc,\n output: NormalizedOutputOptions,\n) => {\n const GENERATOR_CLIENT: GeneratorClients = {\n axios: axios({ type: 'axios' })(),\n 'axios-functions': axios({ type: 'axios-functions' })(),\n angular: angular()(),\n 'react-query': query({ output, type: 'react-query' })(),\n 'svelte-query': query({ output, type: 'svelte-query' })(),\n 'vue-query': query({ output, type: 'vue-query' })(),\n swr: swr()(),\n zod: zod()(),\n hono: hono()(),\n fetch: fetchClient()(),\n mcp: mcp()(),\n };\n\n const generator = isFunction(outputClient)\n ? outputClient(GENERATOR_CLIENT)\n : GENERATOR_CLIENT[outputClient];\n\n if (!generator) {\n throw new Error(`Oups... 🍻. Client not found: ${outputClient}`);\n }\n\n return generator;\n};\n\nexport const generateClientImports: GeneratorClientImports = ({\n client = DEFAULT_CLIENT,\n implementation,\n imports,\n specsName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n hasGlobalMutator,\n hasTagsMutator,\n hasParamsSerializerOptions,\n packageJson,\n output,\n}) => {\n const { dependencies } = getGeneratorClient(client, output);\n return generateDependencyImports(\n implementation,\n dependencies\n ? [\n ...dependencies(\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n output.httpClient,\n hasTagsMutator,\n output.override,\n ),\n ...imports,\n ]\n : imports,\n specsName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\nexport const generateClientHeader: GeneratorClientHeader = ({\n outputClient = DEFAULT_CLIENT,\n isRequestOptions,\n isGlobalMutator,\n isMutator,\n provideIn,\n hasAwaitedType,\n titles,\n output,\n verbOptions,\n tag,\n clientImplementation,\n}) => {\n const { header } = getGeneratorClient(outputClient, output);\n return {\n implementation: header\n ? header({\n title: titles.implementation,\n isRequestOptions,\n isGlobalMutator,\n isMutator,\n provideIn,\n hasAwaitedType,\n output,\n verbOptions,\n tag,\n clientImplementation,\n })\n : '',\n implementationMock: `export const ${titles.implementationMock} = () => [\\n`,\n };\n};\n\nexport const generateClientFooter: GeneratorClientFooter = ({\n outputClient = DEFAULT_CLIENT,\n operationNames,\n hasMutator,\n hasAwaitedType,\n titles,\n output,\n}) => {\n const { footer } = getGeneratorClient(outputClient, output);\n\n if (!footer) {\n return {\n implementation: '',\n implementationMock: `\\n]\\n`,\n };\n }\n\n let implementation: string;\n try {\n if (isFunction(outputClient)) {\n implementation = (footer as (operationNames: any) => string)(\n operationNames,\n );\n // being here means that the previous call worked\n console.warn(\n '[WARN] Passing an array of strings for operations names to the footer function is deprecated and will be removed in a future major release. Please pass them in an object instead: { operationNames: string[] }.',\n );\n } else {\n implementation = footer({\n operationNames,\n title: titles.implementation,\n hasMutator,\n hasAwaitedType,\n });\n }\n } catch {\n implementation = footer({\n operationNames,\n title: titles.implementation,\n hasMutator,\n hasAwaitedType,\n });\n }\n\n return {\n implementation,\n implementationMock: `]\\n`,\n };\n};\n\nexport const generateClientTitle: GeneratorClientTitle = ({\n outputClient = DEFAULT_CLIENT,\n title,\n customTitleFunc,\n output,\n}) => {\n const { title: generatorTitle } = getGeneratorClient(outputClient, output);\n\n if (!generatorTitle) {\n return {\n implementation: '',\n implementationMock: `get${pascal(title)}Mock`,\n };\n }\n\n if (customTitleFunc) {\n const customTitle = customTitleFunc(title);\n return {\n implementation: generatorTitle(customTitle),\n implementationMock: `get${pascal(customTitle)}Mock`,\n };\n }\n return {\n implementation: generatorTitle(title),\n implementationMock: `get${pascal(title)}Mock`,\n };\n};\n\nconst generateMock = (\n verbOption: GeneratorVerbOptions,\n options: GeneratorOptions,\n): ClientMockGeneratorBuilder => {\n if (!options.mock) {\n return {\n implementation: {\n function: '',\n handler: '',\n handlerName: '',\n },\n imports: [],\n };\n }\n\n if (isFunction(options.mock)) {\n return options.mock(verbOption, options);\n }\n\n return mock.generateMock(\n verbOption,\n options as typeof options & {\n mock: Exclude<(typeof options)['mock'], Function | undefined>;\n },\n );\n};\n\nexport const generateOperations = (\n outputClient: OutputClient | OutputClientFunc = DEFAULT_CLIENT,\n verbsOptions: GeneratorVerbsOptions,\n options: GeneratorOptions,\n output: NormalizedOutputOptions,\n): Promise<GeneratorOperations> => {\n return asyncReduce(\n verbsOptions,\n async (acc, verbOption) => {\n const { client: generatorClient } = getGeneratorClient(\n outputClient,\n output,\n );\n const client = await generatorClient(verbOption, options, outputClient);\n\n if (!client.implementation) {\n return acc;\n }\n\n const generatedMock = generateMock(verbOption, options);\n\n acc[verbOption.operationId] = {\n implementation: verbOption.doc + client.implementation,\n imports: client.imports,\n implementationMock: generatedMock.implementation,\n importsMock: generatedMock.imports,\n tags: verbOption.tags,\n mutator: verbOption.mutator,\n clientMutators: client.mutators,\n formData: verbOption.formData,\n formUrlEncoded: verbOption.formUrlEncoded,\n paramsSerializer: verbOption.paramsSerializer,\n operationName: verbOption.operationName,\n fetchReviver: verbOption.fetchReviver,\n };\n\n return acc;\n },\n {} as GeneratorOperations,\n );\n};\n\nexport const generateExtraFiles = (\n outputClient: OutputClient | OutputClientFunc = DEFAULT_CLIENT,\n verbsOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n): Promise<ClientFileBuilder[]> => {\n const { extraFiles: generateExtraFiles } = getGeneratorClient(\n outputClient,\n output,\n );\n\n if (!generateExtraFiles) {\n return Promise.resolve([]);\n }\n\n return generateExtraFiles(verbsOptions, output, context);\n};\n","import {\n asyncReduce,\n type ContextSpecs,\n generateVerbsOptions,\n type GeneratorApiBuilder,\n type GeneratorApiOperations,\n type GeneratorSchema,\n getFullRoute,\n getRoute,\n GetterPropType,\n isReference,\n type NormalizedInputOptions,\n type NormalizedOutputOptions,\n resolveRef,\n} from '@orval/core';\nimport { generateMockImports } from '@orval/mock';\nimport type { PathItemObject } from 'openapi3-ts/oas30';\n\nimport {\n generateClientFooter,\n generateClientHeader,\n generateClientImports,\n generateClientTitle,\n generateExtraFiles,\n generateOperations,\n} from './client';\n\nexport const getApiBuilder = async ({\n input,\n output,\n context,\n}: {\n input: NormalizedInputOptions;\n output: NormalizedOutputOptions;\n context: ContextSpecs;\n}): Promise<GeneratorApiBuilder> => {\n const api = await asyncReduce(\n Object.entries(context.specs[context.specKey].paths ?? {}),\n async (acc, [pathRoute, verbs]: [string, PathItemObject]) => {\n const route = getRoute(pathRoute);\n\n let resolvedVerbs = verbs;\n let resolvedContext = context;\n\n if (isReference(verbs)) {\n const { schema, imports } = resolveRef<PathItemObject>(verbs, context);\n\n resolvedVerbs = schema;\n\n resolvedContext = {\n ...context,\n ...(imports.length > 0\n ? {\n specKey: imports[0].specKey,\n }\n : {}),\n };\n }\n\n let verbsOptions = await generateVerbsOptions({\n verbs: resolvedVerbs,\n input,\n output,\n route,\n pathRoute,\n context: resolvedContext,\n });\n\n // GitHub #564 check if we want to exclude deprecated operations\n if (output.override.useDeprecatedOperations === false) {\n verbsOptions = verbsOptions.filter((verb) => {\n return !verb.deprecated;\n });\n }\n\n const schemas = verbsOptions.reduce<GeneratorSchema[]>(\n (acc, { queryParams, headers, body, response, props }) => {\n if (props) {\n acc.push(\n ...props.flatMap((param) =>\n param.type === GetterPropType.NAMED_PATH_PARAMS\n ? param.schema\n : [],\n ),\n );\n }\n if (queryParams) {\n acc.push(queryParams.schema, ...queryParams.deps);\n }\n if (headers) {\n acc.push(headers.schema, ...headers.deps);\n }\n\n acc.push(...body.schemas, ...response.schemas);\n\n return acc;\n },\n [],\n );\n\n const fullRoute = getFullRoute(\n route,\n verbs.servers ?? context.specs[context.specKey].servers,\n output.baseUrl,\n );\n if (!output.target) {\n throw new Error('Output does not have a target');\n }\n const pathOperations = await generateOperations(\n output.client,\n verbsOptions,\n {\n route: fullRoute,\n pathRoute,\n override: output.override,\n context: resolvedContext,\n mock: output.mock,\n output: output.target,\n },\n output,\n );\n\n for (const verbOption of verbsOptions) {\n acc.verbOptions[verbOption.operationId] = verbOption;\n }\n acc.schemas.push(...schemas);\n acc.operations = { ...acc.operations, ...pathOperations };\n\n return acc;\n },\n {\n operations: {},\n verbOptions: {},\n schemas: [],\n } as GeneratorApiOperations,\n );\n\n const extraFiles = await generateExtraFiles(\n output.client,\n api.verbOptions,\n output,\n context,\n );\n\n return {\n operations: api.operations,\n schemas: api.schemas,\n verbOptions: api.verbOptions,\n title: generateClientTitle,\n header: generateClientHeader,\n footer: generateClientFooter,\n imports: generateClientImports,\n importsMock: generateMockImports,\n extraFiles,\n };\n};\n","import {\n asyncReduce,\n type ContextSpecs,\n dynamicImport,\n generateComponentDefinition,\n generateParameterDefinition,\n generateSchemasDefinition,\n type GeneratorSchema,\n ibmOpenapiValidator,\n type ImportOpenApi,\n type InputOptions,\n isObject,\n isReference,\n isSchema,\n type NormalizedOutputOptions,\n openApiConverter,\n upath,\n type WriteSpecsBuilder,\n} from '@orval/core';\nimport type { JSONSchema6, JSONSchema7 } from 'json-schema';\nimport type { OpenAPIObject, SchemasObject } from 'openapi3-ts/oas30';\n\nimport { getApiBuilder } from './api';\n\nexport const importOpenApi = async ({\n data,\n input,\n output,\n target,\n workspace,\n}: ImportOpenApi): Promise<WriteSpecsBuilder> => {\n const specs = await generateInputSpecs({ specs: data, input, workspace });\n\n const schemas = getApiSchemas({ input, output, target, workspace, specs });\n\n const api = await getApiBuilder({\n input,\n output,\n context: {\n specKey: target,\n target,\n workspace,\n specs,\n output,\n },\n });\n\n return {\n ...api,\n schemas: {\n ...schemas,\n [target]: [...(schemas[target] ?? []), ...api.schemas],\n },\n target,\n info: specs[target].info,\n };\n};\n\nconst generateInputSpecs = async ({\n specs,\n input,\n workspace,\n}: {\n specs: JSONSchema6 | JSONSchema7 | Record<string, OpenAPIObject | unknown>;\n input: InputOptions;\n workspace: string;\n}): Promise<Record<string, OpenAPIObject>> => {\n const transformerFn = input.override?.transformer\n ? await dynamicImport(input.override.transformer, workspace)\n : undefined;\n\n return asyncReduce(\n Object.entries(specs),\n async (acc, [specKey, value]) => {\n const schema = await openApiConverter(\n value,\n input.converterOptions,\n specKey,\n );\n\n const transfomedSchema = transformerFn ? transformerFn(schema) : schema;\n\n if (input.validation) {\n await ibmOpenapiValidator(transfomedSchema, input.validation);\n }\n\n acc[specKey] = transfomedSchema;\n\n return acc;\n },\n {} as Record<string, OpenAPIObject>,\n );\n};\n\nconst getApiSchemas = ({\n input,\n output,\n target,\n workspace,\n specs,\n}: {\n input: InputOptions;\n output: NormalizedOutputOptions;\n workspace: string;\n target: string;\n specs: Record<string, OpenAPIObject>;\n}) => {\n return Object.entries(specs).reduce<Record<string, GeneratorSchema[]>>(\n (acc, [specKey, spec]) => {\n const context: ContextSpecs = {\n specKey,\n target,\n workspace,\n specs,\n output,\n };\n\n const parsedSchemas = spec.openapi\n ? (spec.components?.schemas as SchemasObject)\n : getAllSchemas(spec, specKey);\n\n const schemaDefinition = generateSchemasDefinition(\n parsedSchemas,\n context,\n output.override.components.schemas.suffix,\n input.filters,\n );\n\n const responseDefinition = generateComponentDefinition(\n spec.components?.responses,\n context,\n output.override.components.responses.suffix,\n );\n\n const bodyDefinition = generateComponentDefinition(\n spec.components?.requestBodies,\n context,\n output.override.components.requestBodies.suffix,\n );\n\n const parameters = generateParameterDefinition(\n spec.components?.parameters,\n context,\n output.override.components.parameters.suffix,\n );\n\n const schemas = [\n ...schemaDefinition,\n ...responseDefinition,\n ...bodyDefinition,\n ...parameters,\n ];\n\n if (schemas.length === 0) {\n return acc;\n }\n\n acc[specKey] = schemas;\n\n return acc;\n },\n {},\n );\n};\n\nconst getAllSchemas = (spec: object, specKey?: string): SchemasObject => {\n const keysToOmit = new Set([\n 'openapi',\n 'info',\n 'servers',\n 'paths',\n 'components',\n 'security',\n 'tags',\n 'externalDocs',\n ]);\n\n const cleanedSpec = Object.fromEntries(\n Object.entries(spec).filter(([key]) => !keysToOmit.has(key)),\n );\n\n if (specKey && isSchema(cleanedSpec)) {\n const name = upath.getSchemaFileName(specKey);\n\n const additionalKeysToOmit = new Set([\n 'type',\n 'properties',\n 'allOf',\n 'oneOf',\n 'anyOf',\n 'items',\n ]);\n\n return {\n [name]: cleanedSpec as SchemasObject,\n ...getAllSchemas(\n Object.fromEntries(\n Object.entries(cleanedSpec).filter(\n ([key]) => !additionalKeysToOmit.has(key),\n ),\n ),\n ),\n };\n }\n\n const schemas = Object.entries(cleanedSpec).reduce<SchemasObject>(\n (acc, [key, value]) => {\n if (!isObject(value)) {\n return acc;\n }\n\n if (!isSchema(value) && !isReference(value)) {\n return { ...acc, ...getAllSchemas(value) };\n }\n\n acc[key] = value;\n\n return acc;\n },\n {},\n );\n\n return {\n ...schemas,\n ...((spec as OpenAPIObject)?.components?.schemas as SchemasObject),\n };\n};\n","import SwaggerParser from '@apidevtools/swagger-parser';\nimport {\n isString,\n isUrl,\n log,\n type NormalizedOptions,\n type SwaggerParserOptions,\n upath,\n type WriteSpecsBuilder,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nimport { importOpenApi } from './import-open-api';\n\nconst resolveSpecs = async (\n path: string,\n { validate, ...options }: SwaggerParserOptions,\n _isUrl: boolean,\n isOnlySchema: boolean,\n) => {\n try {\n if (validate) {\n try {\n await SwaggerParser.validate(path, options);\n } catch (error) {\n if (error instanceof Error && error.name === 'ParserError') {\n throw error;\n }\n\n if (!isOnlySchema) {\n log(`⚠️ ${chalk.yellow(error)}`);\n }\n }\n }\n\n const data = (await SwaggerParser.resolve(path, options)).values();\n\n if (_isUrl) {\n return data;\n }\n\n // normalizing slashes after SwaggerParser\n return Object.fromEntries(\n Object.entries(data)\n .sort()\n .map(([key, value]) => [isUrl(key) ? key : upath.resolve(key), value]),\n );\n } catch {\n const file = await fs.readFile(path, 'utf8');\n\n return {\n [path]: yaml.load(file),\n };\n }\n};\n\nexport const importSpecs = async (\n workspace: string,\n options: NormalizedOptions,\n): Promise<WriteSpecsBuilder> => {\n const { input, output } = options;\n\n if (!isString(input.target)) {\n return importOpenApi({\n data: { [workspace]: input.target },\n input,\n output,\n target: workspace,\n workspace,\n });\n }\n\n const isPathUrl = isUrl(input.target);\n\n const data = await resolveSpecs(\n input.target,\n input.parserOptions,\n isPathUrl,\n !output.target,\n );\n\n return importOpenApi({\n data,\n input,\n output,\n target: input.target,\n workspace,\n });\n};\n","{\n \"name\": \"orval\",\n \"description\": \"A swagger client generator for typescript\",\n \"version\": \"7.16.1\",\n \"license\": \"MIT\",\n \"files\": [\n \"dist\",\n \"!dist/**/*.d.ts.map\"\n ],\n \"bin\": \"./dist/bin/orval.js\",\n \"type\": \"commonjs\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"engines\": {\n \"node\": \">=22.18.0\"\n },\n \"keywords\": [\n \"rest\",\n \"client\",\n \"swagger\",\n \"open-api\",\n \"fetch\",\n \"data fetching\",\n \"code-generation\",\n \"angular\",\n \"react\",\n \"react-query\",\n \"svelte\",\n \"svelte-query\",\n \"vue\",\n \"vue-query\",\n \"msw\",\n \"mock\",\n \"axios\",\n \"vue-query\",\n \"vue\",\n \"swr\",\n \"zod\",\n \"hono\"\n ],\n \"author\": {\n \"name\": \"Victor Bury\",\n \"email\": \"victor@anymaniax.com\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/orval-labs/orval.git\"\n },\n \"scripts\": {\n \"build\": \"tsdown --config-loader unconfig\",\n \"dev\": \"tsdown --config-loader unconfig --watch src --onSuccess 'yarn generate-api'\",\n \"lint\": \"eslint .\",\n \"generate-api\": \"orval --config ../../samples/react-query/basic/orval.config.ts\",\n \"test\": \"tsc --noEmit && vitest\",\n \"clean\": \"rimraf .turbo dist\",\n \"nuke\": \"rimraf .turbo dist node_modules\"\n },\n \"devDependencies\": {\n \"@types/fs-extra\": \"^11.0.4\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/lodash.uniq\": \"^4.5.9\",\n \"eslint\": \"^9.38.0\",\n \"openapi-types\": \"^12.1.3\",\n \"rimraf\": \"^6.0.1\",\n \"tsdown\": \"^0.15.8\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^3.2.4\"\n },\n \"dependencies\": {\n \"@apidevtools/swagger-parser\": \"^12.1.0\",\n \"@commander-js/extra-typings\": \"^14.0.0\",\n \"@orval/angular\": \"workspace:*\",\n \"@orval/axios\": \"workspace:*\",\n \"@orval/core\": \"workspace:*\",\n \"@orval/fetch\": \"workspace:*\",\n \"@orval/hono\": \"workspace:*\",\n \"@orval/mcp\": \"workspace:*\",\n \"@orval/mock\": \"workspace:*\",\n \"@orval/query\": \"workspace:*\",\n \"@orval/swr\": \"workspace:*\",\n \"@orval/zod\": \"workspace:*\",\n \"chalk\": \"^4.1.2\",\n \"chokidar\": \"^4.0.3\",\n \"commander\": \"^14.0.1\",\n \"enquirer\": \"^2.4.1\",\n \"execa\": \"^5.1.1\",\n \"find-up\": \"5.0.0\",\n \"fs-extra\": \"^11.3.2\",\n \"jiti\": \"^2.6.1\",\n \"js-yaml\": \"4.1.1\",\n \"lodash.uniq\": \"^4.5.0\",\n \"openapi3-ts\": \"4.5.0\",\n \"string-argv\": \"^0.3.2\",\n \"tsconfck\": \"^2.1.2\",\n \"typedoc\": \"^0.28.14\",\n \"typedoc-plugin-coverage\": \"^4.0.2\",\n \"typedoc-plugin-markdown\": \"^4.9.0\"\n }\n}\n","import http from 'node:http';\nimport https from 'node:https';\n\nexport type Response<T = Record<string, unknown>> = {\n status: http.IncomingMessage['statusCode'];\n headers: http.IncomingMessage['headers'];\n body: T;\n};\n\nexport const request = <T>(\n urlOptions: string | https.RequestOptions | URL,\n data?: string,\n): Promise<Response<T>> => {\n return new Promise((resolve, reject) => {\n const req = https.request(urlOptions, (res) => {\n let body = '';\n res.on('data', (chunk) => (body += chunk.toString()));\n res.on('error', reject);\n res.on('end', () => {\n const response = {\n status: res.statusCode,\n headers: res.headers,\n body: JSON.parse(body),\n };\n if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {\n resolve(response);\n } else {\n reject(response);\n }\n });\n });\n req.on('error', reject);\n if (data) {\n req.write(data, 'binary');\n }\n req.end();\n });\n};\n","import https from 'node:https';\n\nimport SwaggerParser from '@apidevtools/swagger-parser';\nimport { upath } from '@orval/core';\nimport { prompt } from 'enquirer';\nimport fs from 'fs-extra';\n\nimport { request } from './request';\n\nexport const getGithubSpecReq = ({\n accessToken,\n repo,\n owner,\n branch,\n path,\n}: {\n accessToken: string;\n repo: string;\n owner: string;\n branch: string;\n path: string;\n}): [https.RequestOptions, string] => {\n const payload = JSON.stringify({\n query: `query {\n repository(name: \"${repo}\", owner: \"${owner}\") {\n object(expression: \"${branch}:${path}\") {\n ... on Blob {\n text\n }\n }\n }\n }`,\n });\n\n return [\n {\n method: 'POST',\n hostname: 'api.github.com',\n path: '/graphql',\n headers: {\n 'content-type': 'application/json',\n 'user-agent': 'orval-importer',\n authorization: `bearer ${accessToken}`,\n 'Content-Length': payload.length,\n },\n },\n payload,\n ];\n};\n\nlet githubToken: string | null = null;\n\nexport const getGithubAcessToken = async (githubTokenPath: string) => {\n if (githubToken) {\n return githubToken;\n }\n\n if (await fs.pathExists(githubTokenPath)) {\n return fs.readFile(githubTokenPath, 'utf8');\n } else {\n const answers = await prompt<{\n githubToken: string;\n saveToken: boolean;\n }>([\n {\n type: 'input',\n name: 'githubToken',\n message:\n 'Please provide a GitHub token with `repo` rules checked (https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)',\n },\n {\n type: 'confirm',\n name: 'saveToken',\n message:\n 'Would you like to store your token for the next time? (stored in your node_modules)',\n },\n ]);\n\n githubToken = answers.githubToken;\n\n if (answers.saveToken) {\n await fs.outputFile(githubTokenPath, answers.githubToken);\n }\n return answers.githubToken;\n }\n};\n\nexport const getGithubOpenApi = async (url: string): Promise<string> => {\n const githubTokenPath = upath.join(__dirname, '.githubToken');\n const accessToken = await getGithubAcessToken(githubTokenPath);\n const [info] = url.split('github.com/').slice(-1);\n\n const [owner, repo, , branch, ...paths] = info.split('/');\n const path = paths.join('/');\n\n try {\n const { body } = await request<{\n data?: { repository: any };\n errors?: { type: string }[];\n }>(...getGithubSpecReq({ accessToken, repo, owner, branch, path }));\n if (body.errors?.length) {\n const isErrorRemoveLink = body.errors?.some(\n (error) => error?.type === 'NOT_FOUND',\n );\n\n if (isErrorRemoveLink) {\n const answers = await prompt<{ removeToken: boolean }>([\n {\n type: 'confirm',\n name: 'removeToken',\n message:\n \"Your token doesn't have the correct permissions, should we remove it?\",\n },\n ]);\n if (answers.removeToken) {\n await fs.unlink(githubTokenPath);\n }\n }\n }\n\n return body.data?.repository?.object.text;\n } catch (error: any) {\n if (!error.body) {\n throw new Error(`Oups... 🍻. ${error}`);\n }\n\n if (error.body.message === 'Bad credentials') {\n const answers = await prompt<{ removeToken: boolean }>([\n {\n type: 'confirm',\n name: 'removeToken',\n message:\n \"Your token doesn't have the correct permissions, should we remove it?\",\n },\n ]);\n if (answers.removeToken) {\n await fs.unlink(githubTokenPath);\n }\n }\n throw new Error(error.body.message || `Oups... 🍻. ${error}`);\n }\n};\n\nexport const githubResolver = {\n order: 199,\n canRead(file: SwaggerParser.FileInfo) {\n return file.url.includes('github.com');\n },\n\n read(file: SwaggerParser.FileInfo) {\n return getGithubOpenApi(file.url);\n },\n};\n","import { dynamicImport, isString, log, type PackageJson } from '@orval/core';\nimport chalk from 'chalk';\nimport findUp from 'find-up';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nimport { normalizePath } from './options';\n\nexport const loadPackageJson = async (\n packageJson?: string,\n workspace = process.cwd(),\n): Promise<PackageJson | undefined> => {\n if (!packageJson) {\n const pkgPath = await findUp(['package.json'], { cwd: workspace });\n if (pkgPath) {\n const pkg = await dynamicImport<unknown>(pkgPath, workspace);\n\n if (isPackageJson(pkg)) {\n return await maybeReplaceCatalog(pkg, workspace);\n } else {\n throw new Error('Invalid package.json file');\n }\n }\n return;\n }\n\n const normalizedPath = normalizePath(packageJson, workspace);\n if (fs.existsSync(normalizedPath)) {\n const pkg = await dynamicImport<unknown>(normalizedPath);\n\n if (isPackageJson(pkg)) {\n return await maybeReplaceCatalog(pkg, workspace);\n } else {\n throw new Error(`Invalid package.json file: ${normalizedPath}`);\n }\n }\n return;\n};\n\nconst isPackageJson = (obj: any): obj is PackageJson =>\n typeof obj === 'object' && obj !== null;\n\nconst maybeReplaceCatalog = async (\n pkg: PackageJson,\n workspace: string,\n): Promise<PackageJson> => {\n if (\n ![\n ...Object.entries(pkg.dependencies ?? {}),\n ...Object.entries(pkg.devDependencies ?? {}),\n ...Object.entries(pkg.peerDependencies ?? {}),\n ].some(([, value]) => isString(value) && value.startsWith('catalog:'))\n ) {\n return pkg;\n }\n\n const filePath = await findUp('pnpm-workspace.yaml', { cwd: workspace });\n if (!filePath) {\n log(\n `⚠️ ${chalk.yellow('package.json contains pnpm catalog: in dependencies, but no pnpm-workspace.yaml was found.')}`,\n );\n return pkg;\n }\n const file = await fs.readFile(filePath, 'utf8');\n\n const pnpmWorkspaceFile = yaml.load(file) as Record<string, any>;\n performSubstitution(pkg.dependencies, pnpmWorkspaceFile);\n performSubstitution(pkg.devDependencies, pnpmWorkspaceFile);\n performSubstitution(pkg.peerDependencies, pnpmWorkspaceFile);\n\n return pkg;\n};\n\nconst performSubstitution = (\n dependencies: Record<string, string> | undefined,\n pnpmWorkspaceFile: Record<string, any>,\n) => {\n if (!dependencies) return;\n for (const [packageName, version] of Object.entries(dependencies)) {\n if (version === 'catalog:' || version === 'catalog:default') {\n if (!pnpmWorkspaceFile.catalog) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, catalog: substitution for the package '${packageName}' failed as there were no default catalog.`)}`,\n );\n continue;\n }\n const sub = pnpmWorkspaceFile.catalog[packageName];\n if (!sub) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, catalog: substitution for the package '${packageName}' failed as there were no matching package in the default catalog.`)}`,\n );\n continue;\n }\n dependencies[packageName] = sub;\n } else if (version.startsWith('catalog:')) {\n const catalogName = version.slice('catalog:'.length);\n const catalog = pnpmWorkspaceFile.catalogs?.[catalogName];\n if (!catalog) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, '${version}' substitution for the package '${packageName}' failed as there were no matching catalog named '${catalogName}'. (available named catalogs are: ${Object.keys(pnpmWorkspaceFile.catalogs ?? {}).join(', ')})`)}`,\n );\n continue;\n }\n const sub = catalog[packageName];\n if (!sub) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, '${version}' substitution for the package '${packageName}' failed as there were no package in the catalog named '${catalogName}'. (packages in the catalog are: ${Object.keys(catalog).join(', ')})`)}`,\n );\n continue;\n }\n dependencies[packageName] = sub;\n }\n }\n};\n","import { isObject, isString, isUndefined, type Tsconfig } from '@orval/core';\nimport findUp from 'find-up';\nimport fs from 'fs-extra';\nimport { parse } from 'tsconfck';\n\nimport { normalizePath } from './options';\n\nexport const loadTsconfig = async (\n tsconfig?: Tsconfig | string,\n workspace = process.cwd(),\n): Promise<Tsconfig | undefined> => {\n if (isUndefined(tsconfig)) {\n const configPath = await findUp(['tsconfig.json', 'jsconfig.json'], {\n cwd: workspace,\n });\n if (configPath) {\n const config = await parse(configPath);\n return config.tsconfig;\n }\n return;\n }\n\n if (isString(tsconfig)) {\n const normalizedPath = normalizePath(tsconfig, workspace);\n if (fs.existsSync(normalizedPath)) {\n const config = await parse(normalizedPath);\n\n const tsconfig =\n config.referenced?.find(\n ({ tsconfigFile }) => tsconfigFile === normalizedPath,\n )?.tsconfig || config.tsconfig;\n\n return tsconfig;\n }\n return;\n }\n\n if (isObject(tsconfig)) {\n return tsconfig;\n }\n return;\n};\n","export const httpResolver = {\n safeUrlResolver: false, // this is merged with the default http resolver in json-schema-ref-parser\n};\n","import {\n type ClientMockBuilder,\n type ConfigExternal,\n createLogger,\n FormDataArrayHandling,\n type GlobalMockOptions,\n type GlobalOptions,\n type HonoOptions,\n type Hook,\n type HookFunction,\n type HookOption,\n type HooksOptions,\n isBoolean,\n isFunction,\n isObject,\n isString,\n isUndefined,\n isUrl,\n type JsDocOptions,\n mergeDeep,\n type Mutator,\n NamingConvention,\n type NormalizedHonoOptions,\n type NormalizedHookOptions,\n type NormalizedJsDocOptions,\n type NormalizedMutator,\n type NormalizedOperationOptions,\n type NormalizedOptions,\n type NormalizedOverrideOutput,\n type NormalizedQueryOptions,\n type OperationOptions,\n type OptionsExport,\n OutputClient,\n OutputHttpClient,\n OutputMode,\n type OverrideOutput,\n PropertySortOrder,\n type QueryOptions,\n RefComponentSuffix,\n type SwaggerParserOptions,\n upath,\n} from '@orval/core';\nimport { DEFAULT_MOCK_OPTIONS } from '@orval/mock';\nimport chalk from 'chalk';\n\nimport pkg from '../../package.json';\nimport { githubResolver } from './github';\nimport { loadPackageJson } from './package-json';\nimport { loadTsconfig } from './tsconfig';\nimport { httpResolver } from './http-resolver';\n\n/**\n * Type helper to make it easier to use orval.config.ts\n * accepts a direct {@link ConfigExternal} object.\n */\nexport function defineConfig(options: ConfigExternal): ConfigExternal {\n return options;\n}\n\nconst createFormData = (\n workspace: string,\n formData: OverrideOutput['formData'],\n): NormalizedOverrideOutput['formData'] => {\n const defaultArrayHandling = FormDataArrayHandling.SERIALIZE;\n if (formData === undefined)\n return { disabled: false, arrayHandling: defaultArrayHandling };\n if (isBoolean(formData))\n return { disabled: !formData, arrayHandling: defaultArrayHandling };\n if (isString(formData))\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData),\n arrayHandling: defaultArrayHandling,\n };\n if ('mutator' in formData || 'arrayHandling' in formData)\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData.mutator),\n arrayHandling: formData.arrayHandling ?? defaultArrayHandling,\n };\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData),\n arrayHandling: defaultArrayHandling,\n };\n};\n\nexport const normalizeOptions = async (\n optionsExport: OptionsExport,\n workspace = process.cwd(),\n globalOptions: GlobalOptions = {},\n) => {\n const options = await (isFunction(optionsExport)\n ? optionsExport()\n : optionsExport);\n\n if (!options.input) {\n throw new Error(chalk.red(`Config require an input`));\n }\n\n if (!options.output) {\n throw new Error(chalk.red(`Config require an output`));\n }\n\n const inputOptions = isString(options.input)\n ? { target: options.input }\n : options.input;\n\n const outputOptions = isString(options.output)\n ? { target: options.output }\n : options.output;\n\n const outputWorkspace = normalizePath(\n outputOptions.workspace || '',\n workspace,\n );\n\n const { clean, prettier, client, httpClient, mode, biome } = globalOptions;\n\n const tsconfig = await loadTsconfig(\n outputOptions.tsconfig || globalOptions.tsconfig,\n workspace,\n );\n\n const packageJson = await loadPackageJson(\n outputOptions.packageJson || globalOptions.packageJson,\n workspace,\n );\n\n const mockOption = outputOptions.mock ?? globalOptions.mock;\n let mock: GlobalMockOptions | ClientMockBuilder | undefined;\n if (typeof mockOption === 'boolean' && mockOption) {\n mock = DEFAULT_MOCK_OPTIONS;\n } else if (isFunction(mockOption)) {\n mock = mockOption;\n } else if (mockOption) {\n mock = {\n ...DEFAULT_MOCK_OPTIONS,\n ...mockOption,\n };\n } else {\n mock = undefined;\n }\n\n const defaultFileExtension = '.ts';\n\n const globalQueryOptions: NormalizedQueryOptions = {\n useQuery: true,\n useMutation: true,\n signal: true,\n shouldExportMutatorHooks: true,\n shouldExportHttpClient: true,\n shouldExportQueryKey: true,\n shouldSplitQueryKey: false,\n ...normalizeQueryOptions(outputOptions.override?.query, workspace),\n };\n\n const normalizedOptions: NormalizedOptions = {\n input: {\n target: globalOptions.input\n ? normalizePathOrUrl(globalOptions.input, process.cwd())\n : normalizePathOrUrl(inputOptions.target, workspace),\n validation: inputOptions.validation || false,\n override: {\n transformer: normalizePath(\n inputOptions.override?.transformer,\n workspace,\n ),\n },\n converterOptions: inputOptions.converterOptions ?? {},\n parserOptions: mergeDeep(\n parserDefaultOptions,\n inputOptions.parserOptions ?? {},\n ),\n filters: inputOptions.filters,\n },\n output: {\n target: globalOptions.output\n ? normalizePath(globalOptions.output, process.cwd())\n : normalizePath(outputOptions.target, outputWorkspace),\n schemas: normalizePath(outputOptions.schemas, outputWorkspace),\n namingConvention:\n outputOptions.namingConvention || NamingConvention.CAMEL_CASE,\n fileExtension: outputOptions.fileExtension || defaultFileExtension,\n workspace: outputOptions.workspace ? outputWorkspace : undefined,\n client: outputOptions.client ?? client ?? OutputClient.AXIOS_FUNCTIONS,\n httpClient:\n outputOptions.httpClient ?? httpClient ?? OutputHttpClient.AXIOS,\n mode: normalizeOutputMode(outputOptions.mode ?? mode),\n mock,\n clean: outputOptions.clean ?? clean ?? false,\n docs: outputOptions.docs ?? false,\n prettier: outputOptions.prettier ?? prettier ?? false,\n biome: outputOptions.biome ?? biome ?? false,\n tsconfig,\n packageJson,\n headers: outputOptions.headers ?? false,\n indexFiles: outputOptions.indexFiles ?? true,\n baseUrl: outputOptions.baseUrl,\n unionAddMissingProperties:\n outputOptions.unionAddMissingProperties ?? false,\n override: {\n ...outputOptions.override,\n mock: {\n arrayMin: outputOptions.override?.mock?.arrayMin ?? 1,\n arrayMax: outputOptions.override?.mock?.arrayMax ?? 10,\n stringMin: outputOptions.override?.mock?.stringMin ?? 10,\n stringMax: outputOptions.override?.mock?.stringMax ?? 20,\n fractionDigits: outputOptions.override?.mock?.fractionDigits ?? 2,\n ...outputOptions.override?.mock,\n },\n operations: normalizeOperationsAndTags(\n outputOptions.override?.operations ?? {},\n outputWorkspace,\n {\n query: globalQueryOptions,\n },\n ),\n tags: normalizeOperationsAndTags(\n outputOptions.override?.tags ?? {},\n outputWorkspace,\n {\n query: globalQueryOptions,\n },\n ),\n mutator: normalizeMutator(\n outputWorkspace,\n outputOptions.override?.mutator,\n ),\n formData: createFormData(\n outputWorkspace,\n outputOptions.override?.formData,\n ),\n formUrlEncoded:\n (isBoolean(outputOptions.override?.formUrlEncoded)\n ? outputOptions.override?.formUrlEncoded\n : normalizeMutator(\n outputWorkspace,\n outputOptions.override?.formUrlEncoded,\n )) ?? true,\n paramsSerializer: normalizeMutator(\n outputWorkspace,\n outputOptions.override?.paramsSerializer,\n ),\n header:\n outputOptions.override?.header === false\n ? false\n : isFunction(outputOptions.override?.header)\n ? outputOptions.override?.header!\n : getDefaultFilesHeader,\n requestOptions: outputOptions.override?.requestOptions ?? true,\n namingConvention: outputOptions.override?.namingConvention ?? {},\n components: {\n schemas: {\n suffix: RefComponentSuffix.schemas,\n itemSuffix:\n outputOptions.override?.components?.schemas?.itemSuffix ?? 'Item',\n ...outputOptions.override?.components?.schemas,\n },\n responses: {\n suffix: RefComponentSuffix.responses,\n ...outputOptions.override?.components?.responses,\n },\n parameters: {\n suffix: RefComponentSuffix.parameters,\n ...outputOptions.override?.components?.parameters,\n },\n requestBodies: {\n suffix: RefComponentSuffix.requestBodies,\n ...outputOptions.override?.components?.requestBodies,\n },\n },\n hono: normalizeHonoOptions(outputOptions.override?.hono, workspace),\n jsDoc: normalizeJSDocOptions(outputOptions.override?.jsDoc),\n query: globalQueryOptions,\n zod: {\n strict: {\n param: outputOptions.override?.zod?.strict?.param ?? false,\n query: outputOptions.override?.zod?.strict?.query ?? false,\n header: outputOptions.override?.zod?.strict?.header ?? false,\n body: outputOptions.override?.zod?.strict?.body ?? false,\n response: outputOptions.override?.zod?.strict?.response ?? false,\n },\n generate: {\n param: outputOptions.override?.zod?.generate?.param ?? true,\n query: outputOptions.override?.zod?.generate?.query ?? true,\n header: outputOptions.override?.zod?.generate?.header ?? true,\n body: outputOptions.override?.zod?.generate?.body ?? true,\n response: outputOptions.override?.zod?.generate?.response ?? true,\n },\n coerce: {\n param: outputOptions.override?.zod?.coerce?.param ?? false,\n query: outputOptions.override?.zod?.coerce?.query ?? false,\n header: outputOptions.override?.zod?.coerce?.header ?? false,\n body: outputOptions.override?.zod?.coerce?.body ?? false,\n response: outputOptions.override?.zod?.coerce?.response ?? false,\n },\n preprocess: {\n ...(outputOptions.override?.zod?.preprocess?.param\n ? {\n param: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.param,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.query\n ? {\n query: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.query,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.header\n ? {\n header: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.header,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.body\n ? {\n body: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.body,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.response\n ? {\n response: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.response,\n ),\n }\n : {}),\n },\n generateEachHttpStatus:\n outputOptions.override?.zod?.generateEachHttpStatus ?? false,\n dateTimeOptions: outputOptions.override?.zod?.dateTimeOptions ?? {},\n timeOptions: outputOptions.override?.zod?.timeOptions ?? {},\n },\n swr: {\n ...outputOptions.override?.swr,\n },\n angular: {\n provideIn: outputOptions.override?.angular?.provideIn ?? 'root',\n },\n fetch: {\n includeHttpResponseReturnType:\n outputOptions.override?.fetch?.includeHttpResponseReturnType ??\n true,\n forceSuccessResponse:\n outputOptions.override?.fetch?.forceSuccessResponse ?? false,\n explode: outputOptions.override?.fetch?.explode ?? true,\n ...outputOptions.override?.fetch,\n },\n useDates: outputOptions.override?.useDates || false,\n useDeprecatedOperations:\n outputOptions.override?.useDeprecatedOperations ?? true,\n enumGenerationType:\n (outputOptions.override?.useNativeEnums ?? false)\n ? 'enum'\n : (outputOptions.override?.enumGenerationType ?? 'const'),\n suppressReadonlyModifier:\n outputOptions.override?.suppressReadonlyModifier || false,\n },\n allParamsOptional: outputOptions.allParamsOptional ?? false,\n urlEncodeParameters: outputOptions.urlEncodeParameters ?? false,\n optionsParamRequired: outputOptions.optionsParamRequired ?? false,\n propertySortOrder:\n outputOptions.propertySortOrder ?? PropertySortOrder.SPECIFICATION,\n },\n hooks: options.hooks ? normalizeHooks(options.hooks) : {},\n };\n\n if (!normalizedOptions.input.target) {\n throw new Error(chalk.red(`Config require an input target`));\n }\n\n if (!normalizedOptions.output.target && !normalizedOptions.output.schemas) {\n throw new Error(chalk.red(`Config require an output target or schemas`));\n }\n\n return normalizedOptions;\n};\n\nconst parserDefaultOptions = {\n validate: true,\n resolve: { github: githubResolver, http: httpResolver },\n} as SwaggerParserOptions;\n\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nconst normalizePathOrUrl = <T>(path: T, workspace: string) => {\n if (isString(path) && !isUrl(path)) {\n return normalizePath(path, workspace);\n }\n\n return path;\n};\n\nexport const normalizePath = <T>(path: T, workspace: string) => {\n if (!isString(path)) {\n return path;\n }\n return upath.resolve(workspace, path);\n};\n\nconst normalizeOperationsAndTags = (\n operationsOrTags: Record<string, OperationOptions>,\n workspace: string,\n global: {\n query: NormalizedQueryOptions;\n },\n): Record<string, NormalizedOperationOptions> => {\n return Object.fromEntries(\n Object.entries(operationsOrTags).map(\n ([\n key,\n {\n transformer,\n mutator,\n formData,\n formUrlEncoded,\n paramsSerializer,\n query,\n zod,\n ...rest\n },\n ]) => {\n return [\n key,\n {\n ...rest,\n ...(query\n ? {\n query: normalizeQueryOptions(query, workspace, global.query),\n }\n : {}),\n ...(zod\n ? {\n zod: {\n strict: {\n param: zod.strict?.param ?? false,\n query: zod.strict?.query ?? false,\n header: zod.strict?.header ?? false,\n body: zod.strict?.body ?? false,\n response: zod.strict?.response ?? false,\n },\n generate: {\n param: zod.generate?.param ?? true,\n query: zod.generate?.query ?? true,\n header: zod.generate?.header ?? true,\n body: zod.generate?.body ?? true,\n response: zod.generate?.response ?? true,\n },\n coerce: {\n param: zod.coerce?.param ?? false,\n query: zod.coerce?.query ?? false,\n header: zod.coerce?.header ?? false,\n body: zod.coerce?.body ?? false,\n response: zod.coerce?.response ?? false,\n },\n preprocess: {\n ...(zod.preprocess?.param\n ? {\n param: normalizeMutator(\n workspace,\n zod.preprocess.param,\n ),\n }\n : {}),\n ...(zod.preprocess?.query\n ? {\n query: normalizeMutator(\n workspace,\n zod.preprocess.query,\n ),\n }\n : {}),\n ...(zod.preprocess?.header\n ? {\n header: normalizeMutator(\n workspace,\n zod.preprocess.header,\n ),\n }\n : {}),\n ...(zod.preprocess?.body\n ? {\n body: normalizeMutator(\n workspace,\n zod.preprocess.body,\n ),\n }\n : {}),\n ...(zod.preprocess?.response\n ? {\n response: normalizeMutator(\n workspace,\n zod.preprocess.response,\n ),\n }\n : {}),\n },\n generateEachHttpStatus:\n zod?.generateEachHttpStatus ?? false,\n dateTimeOptions: zod?.dateTimeOptions ?? {},\n timeOptions: zod?.timeOptions ?? {},\n },\n }\n : {}),\n ...(transformer\n ? { transformer: normalizePath(transformer, workspace) }\n : {}),\n ...(mutator\n ? { mutator: normalizeMutator(workspace, mutator) }\n : {}),\n ...createFormData(workspace, formData),\n ...(formUrlEncoded\n ? {\n formUrlEncoded: isBoolean(formUrlEncoded)\n ? formUrlEncoded\n : normalizeMutator(workspace, formUrlEncoded),\n }\n : {}),\n ...(paramsSerializer\n ? {\n paramsSerializer: normalizeMutator(\n workspace,\n paramsSerializer,\n ),\n }\n : {}),\n },\n ];\n },\n ),\n );\n};\n\nconst normalizeOutputMode = (mode?: OutputMode): OutputMode => {\n if (!mode) {\n return OutputMode.SINGLE;\n }\n\n if (!Object.values(OutputMode).includes(mode)) {\n createLogger().warn(chalk.yellow(`Unknown the provided mode => ${mode}`));\n return OutputMode.SINGLE;\n }\n\n return mode;\n};\n\nconst normalizeHooks = (hooks: HooksOptions): NormalizedHookOptions => {\n const keys = Object.keys(hooks) as unknown as Hook[];\n\n return keys.reduce<NormalizedHookOptions>((acc, key: Hook) => {\n if (isString(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as string[],\n };\n } else if (Array.isArray(hooks[key])) {\n return {\n ...acc,\n [key]: hooks[key] as string[],\n };\n } else if (isFunction(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as HookFunction[],\n };\n } else if (isObject(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as HookOption[],\n };\n }\n\n return acc;\n }, {});\n};\n\nconst normalizeHonoOptions = (\n hono: HonoOptions = {},\n workspace: string,\n): NormalizedHonoOptions => {\n return {\n ...(hono.handlers\n ? { handlers: upath.resolve(workspace, hono.handlers) }\n : {}),\n compositeRoute: hono.compositeRoute ?? '',\n validator: hono.validator ?? true,\n validatorOutputPath: hono.validatorOutputPath\n ? upath.resolve(workspace, hono.validatorOutputPath)\n : '',\n };\n};\n\nconst normalizeJSDocOptions = (\n jsdoc: JsDocOptions = {},\n): NormalizedJsDocOptions => {\n return {\n ...jsdoc,\n };\n};\n\nconst normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n globalOptions: NormalizedQueryOptions = {},\n): NormalizedQueryOptions => {\n if (queryOptions.options) {\n console.warn(\n '[WARN] Using query options is deprecated and will be removed in a future major release. Please use queryOptions or mutationOptions instead.',\n );\n }\n\n return {\n ...(isUndefined(queryOptions.usePrefetch)\n ? {}\n : { usePrefetch: queryOptions.usePrefetch }),\n ...(isUndefined(queryOptions.useInvalidate)\n ? {}\n : { useInvalidate: queryOptions.useInvalidate }),\n ...(isUndefined(queryOptions.useQuery)\n ? {}\n : { useQuery: queryOptions.useQuery }),\n ...(isUndefined(queryOptions.useSuspenseQuery)\n ? {}\n : { useSuspenseQuery: queryOptions.useSuspenseQuery }),\n ...(isUndefined(queryOptions.useMutation)\n ? {}\n : { useMutation: queryOptions.useMutation }),\n ...(isUndefined(queryOptions.useInfinite)\n ? {}\n : { useInfinite: queryOptions.useInfinite }),\n ...(isUndefined(queryOptions.useSuspenseInfiniteQuery)\n ? {}\n : { useSuspenseInfiniteQuery: queryOptions.useSuspenseInfiniteQuery }),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(globalOptions.queryKey\n ? {\n queryKey: globalOptions.queryKey,\n }\n : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(globalOptions.queryOptions\n ? {\n queryOptions: globalOptions.queryOptions,\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(globalOptions.mutationOptions\n ? {\n mutationOptions: globalOptions.mutationOptions,\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(isUndefined(globalOptions.shouldExportQueryKey)\n ? {}\n : {\n shouldExportQueryKey: globalOptions.shouldExportQueryKey,\n }),\n ...(isUndefined(queryOptions.shouldExportQueryKey)\n ? {}\n : { shouldExportQueryKey: queryOptions.shouldExportQueryKey }),\n ...(isUndefined(globalOptions.shouldExportHttpClient)\n ? {}\n : {\n shouldExportHttpClient: globalOptions.shouldExportHttpClient,\n }),\n ...(isUndefined(queryOptions.shouldExportHttpClient)\n ? {}\n : { shouldExportHttpClient: queryOptions.shouldExportHttpClient }),\n ...(isUndefined(globalOptions.shouldExportMutatorHooks)\n ? {}\n : {\n shouldExportMutatorHooks: globalOptions.shouldExportMutatorHooks,\n }),\n ...(isUndefined(queryOptions.shouldExportMutatorHooks)\n ? {}\n : { shouldExportMutatorHooks: queryOptions.shouldExportMutatorHooks }),\n ...(isUndefined(globalOptions.shouldSplitQueryKey)\n ? {}\n : {\n shouldSplitQueryKey: globalOptions.shouldSplitQueryKey,\n }),\n ...(isUndefined(queryOptions.shouldSplitQueryKey)\n ? {}\n : { shouldSplitQueryKey: queryOptions.shouldSplitQueryKey }),\n ...(isUndefined(globalOptions.signal)\n ? {}\n : {\n signal: globalOptions.signal,\n }),\n ...(isUndefined(globalOptions.useOperationIdAsQueryKey)\n ? {}\n : {\n useOperationIdAsQueryKey: globalOptions.useOperationIdAsQueryKey,\n }),\n ...(isUndefined(queryOptions.useOperationIdAsQueryKey)\n ? {}\n : { useOperationIdAsQueryKey: queryOptions.useOperationIdAsQueryKey }),\n ...(isUndefined(globalOptions.signal)\n ? {}\n : {\n signal: globalOptions.signal,\n }),\n ...(isUndefined(queryOptions.signal)\n ? {}\n : { signal: queryOptions.signal }),\n ...(isUndefined(globalOptions.version)\n ? {}\n : {\n version: globalOptions.version,\n }),\n ...(isUndefined(queryOptions.version)\n ? {}\n : { version: queryOptions.version }),\n };\n};\n\nexport const getDefaultFilesHeader = ({\n title,\n description,\n version,\n}: {\n title?: string;\n description?: string;\n version?: string;\n} = {}) => [\n `Generated by ${pkg.name} v${pkg.version} 🍺`,\n `Do not edit manually.`,\n ...(title ? [title] : []),\n ...(description ? [description] : []),\n ...(version ? [`OpenAPI spec version: ${version}`] : []),\n];\n","import { log, logError } from '@orval/core';\n\nexport const startWatcher = async (\n watchOptions: boolean | string | (string | boolean)[],\n watchFn: () => Promise<any>,\n defaultTarget: string | string[] = '.',\n) => {\n if (!watchOptions) return;\n const { watch } = await import('chokidar');\n\n const ignored = ['**/{.git,node_modules}/**'];\n\n const watchPaths =\n typeof watchOptions === 'boolean'\n ? defaultTarget\n : Array.isArray(watchOptions)\n ? watchOptions.filter(\n (path): path is string => typeof path === 'string',\n )\n : watchOptions;\n\n log(\n `Watching for changes in ${\n Array.isArray(watchPaths)\n ? watchPaths.map((v) => '\"' + v + '\"').join(' | ')\n : '\"' + watchPaths + '\"'\n }`,\n );\n\n const watcher = watch(watchPaths, {\n ignorePermissionErrors: true,\n ignored,\n });\n watcher.on('all', async (type, file) => {\n log(`Change detected: ${type} ${file}`);\n\n try {\n await watchFn();\n } catch (error) {\n logError(error);\n }\n });\n};\n","import {\n type Hook,\n type HookOption,\n isFunction,\n isObject,\n isString,\n log,\n logError,\n type NormalizedHookCommand,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport { parseArgsStringToArgv } from 'string-argv';\n\nexport const executeHook = async (\n name: Hook,\n commands: NormalizedHookCommand = [],\n args: string[] = [],\n) => {\n log(chalk.white(`Running ${name} hook...`));\n\n for (const command of commands) {\n try {\n if (isString(command)) {\n await executeCommand(command, args);\n } else if (isFunction(command)) {\n await command(args);\n } else if (isObject(command)) {\n await executeObjectCommand(command as HookOption, args);\n }\n } catch (error) {\n logError(error, `Failed to run ${name} hook`);\n }\n }\n};\n\nasync function executeCommand(command: string, args: string[]) {\n const [cmd, ..._args] = [...parseArgsStringToArgv(command), ...args];\n\n await execa(cmd, _args);\n}\n\nasync function executeObjectCommand(command: HookOption, args: string[]) {\n if (command.injectGeneratedDirsAndFiles === false) {\n args = [];\n }\n\n if (isString(command.command)) {\n await executeCommand(command.command, args);\n } else if (isFunction(command.command)) {\n await command.command();\n }\n}\n","import {\n createSuccessMessage,\n getFileInfo,\n getMockFileExtensionByTypeName,\n isRootKey,\n jsDoc,\n log,\n type NormalizedOptions,\n OutputMode,\n upath,\n writeSchemas,\n writeSingleMode,\n type WriteSpecsBuilder,\n writeSplitMode,\n writeSplitTagsMode,\n writeTagsMode,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport execa, { type ExecaError } from 'execa';\nimport fs from 'fs-extra';\nimport uniq from 'lodash.uniq';\nimport type { InfoObject } from 'openapi3-ts/oas30';\nimport type { TypeDocOptions } from 'typedoc';\n\nimport { executeHook } from './utils';\n\nconst getHeader = (\n option: false | ((info: InfoObject) => string | string[]),\n info: InfoObject,\n): string => {\n if (!option) {\n return '';\n }\n\n const header = option(info);\n\n return Array.isArray(header) ? jsDoc({ description: header }) : header;\n};\n\nexport const writeSpecs = async (\n builder: WriteSpecsBuilder,\n workspace: string,\n options: NormalizedOptions,\n projectName?: string,\n) => {\n const { info = { title: '', version: 0 }, schemas, target } = builder;\n const { output } = options;\n const projectTitle = projectName || info.title;\n\n const specsName = Object.keys(schemas).reduce<\n Record<keyof typeof schemas, string>\n >((acc, specKey) => {\n const basePath = upath.getSpecName(specKey, target);\n const name = basePath.slice(1).split('/').join('-');\n\n acc[specKey] = name;\n\n return acc;\n }, {});\n\n const header = getHeader(output.override.header, info as InfoObject);\n\n if (output.schemas) {\n const rootSchemaPath = output.schemas;\n\n const fileExtension = ['tags', 'tags-split', 'split'].includes(output.mode)\n ? '.ts'\n : (output.fileExtension ?? '.ts');\n\n await Promise.all(\n Object.entries(schemas).map(([specKey, schemas]) => {\n const schemaPath = isRootKey(specKey, target)\n ? rootSchemaPath\n : upath.join(rootSchemaPath, specsName[specKey]);\n\n return writeSchemas({\n schemaPath,\n schemas,\n target,\n namingConvention: output.namingConvention,\n fileExtension,\n specsName,\n specKey,\n isRootKey: isRootKey(specKey, target),\n header,\n indexFiles: output.indexFiles,\n });\n }),\n );\n }\n\n let implementationPaths: string[] = [];\n\n if (output.target) {\n const writeMode = getWriteMode(output.mode);\n implementationPaths = await writeMode({\n builder,\n workspace,\n output,\n specsName,\n header,\n needSchema: !output.schemas && output.client !== 'zod',\n });\n }\n\n if (output.workspace) {\n const workspacePath = output.workspace;\n const imports = implementationPaths\n .filter(\n (path) =>\n !output.mock ||\n !path.endsWith(`.${getMockFileExtensionByTypeName(output.mock)}.ts`),\n )\n .map((path) =>\n upath.relativeSafe(\n workspacePath,\n getFileInfo(path).pathWithoutExtension,\n ),\n );\n\n if (output.schemas) {\n imports.push(\n upath.relativeSafe(workspacePath, getFileInfo(output.schemas).dirname),\n );\n }\n\n if (output.indexFiles) {\n const indexFile = upath.join(workspacePath, '/index.ts');\n\n if (await fs.pathExists(indexFile)) {\n const data = await fs.readFile(indexFile, 'utf8');\n const importsNotDeclared = imports.filter((imp) => !data.includes(imp));\n await fs.appendFile(\n indexFile,\n uniq(importsNotDeclared)\n .map((imp) => `export * from '${imp}';\\n`)\n .join(''),\n );\n } else {\n await fs.outputFile(\n indexFile,\n uniq(imports)\n .map((imp) => `export * from '${imp}';`)\n .join('\\n') + '\\n',\n );\n }\n\n implementationPaths = [indexFile, ...implementationPaths];\n }\n }\n\n if (builder.extraFiles.length > 0) {\n await Promise.all(\n builder.extraFiles.map(async (file) =>\n fs.outputFile(file.path, file.content),\n ),\n );\n\n implementationPaths = [\n ...implementationPaths,\n ...builder.extraFiles.map((file) => file.path),\n ];\n }\n\n const paths = [\n ...(output.schemas ? [getFileInfo(output.schemas).dirname] : []),\n ...implementationPaths,\n ];\n\n if (options.hooks.afterAllFilesWrite) {\n await executeHook(\n 'afterAllFilesWrite',\n options.hooks.afterAllFilesWrite,\n paths,\n );\n }\n\n if (output.prettier) {\n try {\n await execa('prettier', ['--write', ...paths]);\n } catch {\n log(\n chalk.yellow(\n `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}Globally installed prettier not found`,\n ),\n );\n }\n }\n\n if (output.biome) {\n try {\n await execa('biome', ['check', '--write', ...paths]);\n } catch (error) {\n const errorExeca = error as ExecaError;\n const message =\n errorExeca.exitCode === 1\n ? errorExeca.stdout + errorExeca.stderr\n : `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}biome not found`;\n\n log(chalk.yellow(message));\n }\n }\n\n if (output.docs) {\n try {\n let config: Partial<TypeDocOptions> = {};\n let configPath: string | null = null;\n if (typeof output.docs === 'object') {\n ({ configPath = null, ...config } = output.docs);\n if (configPath) {\n config.options = configPath;\n }\n }\n\n const getTypedocApplication = async () => {\n const { Application } = await import('typedoc');\n return Application;\n };\n\n const Application = await getTypedocApplication();\n const app = await Application.bootstrapWithPlugins({\n entryPoints: paths,\n theme: 'markdown',\n // Set the custom config location if it has been provided.\n ...config,\n plugin: ['typedoc-plugin-markdown', ...(config.plugin ?? [])],\n });\n // Set defaults if the have not been provided by the external config.\n if (!app.options.isSet('readme')) {\n app.options.setValue('readme', 'none');\n }\n if (!app.options.isSet('logLevel')) {\n app.options.setValue('logLevel', 'None');\n }\n const project = await app.convert();\n if (project) {\n await app.generateDocs(project, app.options.getValue('out') as string);\n } else {\n throw new Error('TypeDoc not initialized');\n }\n } catch (error) {\n const message =\n error instanceof Error\n ? error.message\n : `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}Unable to generate docs`;\n\n log(chalk.yellow(message));\n }\n }\n\n createSuccessMessage(projectTitle);\n};\n\nconst getWriteMode = (mode: OutputMode) => {\n switch (mode) {\n case OutputMode.SPLIT: {\n return writeSplitMode;\n }\n case OutputMode.TAGS: {\n return writeTagsMode;\n }\n case OutputMode.TAGS_SPLIT: {\n return writeSplitTagsMode;\n }\n case OutputMode.SINGLE:\n default: {\n return writeSingleMode;\n }\n }\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport {\n asyncReduce,\n type ConfigExternal,\n ErrorWithTag,\n getFileInfo,\n type GlobalOptions,\n isFunction,\n isString,\n log,\n logError,\n type NormalizedConfig,\n type NormalizedOptions,\n removeFilesAndEmptyFolders,\n} from '@orval/core';\nimport { createJiti } from 'jiti';\n\nimport { importSpecs } from './import-specs';\nimport { normalizeOptions } from './utils/options';\nimport { startWatcher } from './utils/watcher';\nimport { writeSpecs } from './write-specs';\n\nexport const generateSpec = async (\n workspace: string,\n options: NormalizedOptions,\n projectName?: string,\n) => {\n if (options.output.clean) {\n const extraPatterns = Array.isArray(options.output.clean)\n ? options.output.clean\n : [];\n\n if (options.output.target) {\n await removeFilesAndEmptyFolders(\n ['**/*', '!**/*.d.ts', ...extraPatterns],\n getFileInfo(options.output.target).dirname,\n );\n }\n if (options.output.schemas) {\n await removeFilesAndEmptyFolders(\n ['**/*', '!**/*.d.ts', ...extraPatterns],\n getFileInfo(options.output.schemas).dirname,\n );\n }\n log(`${projectName ? `${projectName}: ` : ''}Cleaning output folder`);\n }\n\n const writeSpecBuilder = await importSpecs(workspace, options);\n await writeSpecs(writeSpecBuilder, workspace, options, projectName);\n};\n\nexport const generateSpecs = async (\n config: NormalizedConfig,\n workspace: string,\n projectName?: string,\n) => {\n if (projectName) {\n const options = config[projectName];\n\n if (options) {\n try {\n await generateSpec(workspace, options, projectName);\n } catch (error) {\n const errorMsg =\n error instanceof Error ? error.message : 'unknown error';\n throw new ErrorWithTag(errorMsg, projectName, { cause: error });\n }\n } else {\n throw new Error('Project not found');\n }\n return;\n }\n\n let hasErrors: true | undefined;\n for (const [projectName, options] of Object.entries(config)) {\n if (!options) {\n hasErrors = true;\n logError('No options found', projectName);\n continue;\n }\n try {\n await generateSpec(workspace, options, projectName);\n } catch (error) {\n hasErrors = true;\n logError(error, projectName);\n }\n }\n\n if (hasErrors)\n throw new Error('One or more project failed, see above for details');\n};\n\nfunction findConfigFile(configFilePath?: string) {\n if (configFilePath) {\n const absolutePath = path.isAbsolute(configFilePath)\n ? configFilePath\n : path.resolve(process.cwd(), configFilePath);\n\n if (!fs.existsSync(absolutePath))\n throw new Error(`Config file ${configFilePath} does not exist`);\n\n return absolutePath;\n }\n\n const root = process.cwd();\n const exts = ['.ts', '.js', '.mjs', '.cjs'];\n for (const ext of exts) {\n const fullPath = path.resolve(root, `orval.config${ext}`);\n if (fs.existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n throw new Error(`No config file found in ${root}`);\n}\n\nasync function loadConfigFile(configFilePath: string): Promise<ConfigExternal> {\n const jiti = createJiti(import.meta.url, {\n interopDefault: true,\n });\n\n const module = await jiti.import(configFilePath, { default: true });\n\n if (module === undefined) {\n throw new Error(`${configFilePath} doesn't have a default export`);\n }\n\n return await Promise.resolve(module as ConfigExternal);\n}\n\nexport const generateConfig = async (\n configFile?: string,\n options?: GlobalOptions,\n) => {\n const configFilePath = findConfigFile(configFile);\n let configExternal: ConfigExternal;\n try {\n configExternal = await loadConfigFile(configFilePath);\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'unknown error';\n throw new Error(`failed to load from ${configFilePath} => ${errorMsg}`);\n }\n\n const workspace = path.dirname(configFilePath);\n\n const config = await (isFunction(configExternal)\n ? configExternal()\n : configExternal);\n\n const normalizedConfig = await asyncReduce(\n Object.entries(config),\n async (acc, [key, value]) => {\n acc[key] = await normalizeOptions(value, workspace, options);\n\n return acc;\n },\n {} as NormalizedConfig,\n );\n\n const fileToWatch = Object.entries(normalizedConfig)\n .filter(\n ([project]) =>\n options?.projectName === undefined || project === options.projectName,\n )\n .map(([, options]) => options?.input.target)\n .filter((target) => isString(target)) as string[];\n\n await (options?.watch && fileToWatch.length > 0\n ? startWatcher(\n options.watch,\n () => generateSpecs(normalizedConfig, workspace, options.projectName),\n fileToWatch,\n )\n : generateSpecs(normalizedConfig, workspace, options?.projectName));\n};\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, '__esModule', { value: true });
2
- const require_generate = require('./generate-BRYifonC.js');
2
+ const require_generate = require('./generate-C0smSyx1.js');
3
3
  let __orval_core = require("@orval/core");
4
4
  __orval_core = require_generate.__toESM(__orval_core);
5
5
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "orval",
3
3
  "description": "A swagger client generator for typescript",
4
- "version": "7.15.0",
4
+ "version": "7.16.1",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist",
@@ -73,16 +73,16 @@
73
73
  "dependencies": {
74
74
  "@apidevtools/swagger-parser": "^12.1.0",
75
75
  "@commander-js/extra-typings": "^14.0.0",
76
- "@orval/angular": "7.15.0",
77
- "@orval/axios": "7.15.0",
78
- "@orval/core": "7.15.0",
79
- "@orval/fetch": "7.15.0",
80
- "@orval/hono": "7.15.0",
81
- "@orval/mcp": "7.15.0",
82
- "@orval/mock": "7.15.0",
83
- "@orval/query": "7.15.0",
84
- "@orval/swr": "7.15.0",
85
- "@orval/zod": "7.15.0",
76
+ "@orval/angular": "7.16.1",
77
+ "@orval/axios": "7.16.1",
78
+ "@orval/core": "7.16.1",
79
+ "@orval/fetch": "7.16.1",
80
+ "@orval/hono": "7.16.1",
81
+ "@orval/mcp": "7.16.1",
82
+ "@orval/mock": "7.16.1",
83
+ "@orval/query": "7.16.1",
84
+ "@orval/swr": "7.16.1",
85
+ "@orval/zod": "7.16.1",
86
86
  "chalk": "^4.1.2",
87
87
  "chokidar": "^4.0.3",
88
88
  "commander": "^14.0.1",
@@ -90,7 +90,8 @@
90
90
  "execa": "^5.1.1",
91
91
  "find-up": "5.0.0",
92
92
  "fs-extra": "^11.3.2",
93
- "js-yaml": "4.1.0",
93
+ "jiti": "^2.6.1",
94
+ "js-yaml": "4.1.1",
94
95
  "lodash.uniq": "^4.5.0",
95
96
  "openapi3-ts": "4.5.0",
96
97
  "string-argv": "^0.3.2",
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-BRYifonC.js","names":["OutputClient","GENERATOR_CLIENT: GeneratorClients","generateClientImports: GeneratorClientImports","dependencies","generateClientHeader: GeneratorClientHeader","generateClientFooter: GeneratorClientFooter","implementation: string","generateClientTitle: GeneratorClientTitle","mock","generateExtraFiles","GetterPropType","acc","generateMockImports","context: ContextSpecs","name","upath","SwaggerParser","path","upath","fs","yaml","https","path","githubToken: string | null","fs","upath","url","error: any","fs","yaml","dependencies","version","fs","FormDataArrayHandling","mock: GlobalMockOptions | ClientMockBuilder | undefined","DEFAULT_MOCK_OPTIONS","globalQueryOptions: NormalizedQueryOptions","normalizedOptions: NormalizedOptions","NamingConvention","OutputClient","OutputHttpClient","RefComponentSuffix","PropertySortOrder","upath","path","query","zod","OutputMode","hono","pkg","description","version","path","type","name","upath","schemas","implementationPaths: string[]","path","fs","config: Partial<TypeDocOptions>","configPath: string | null","OutputMode","writeSplitMode","writeTagsMode","writeSplitTagsMode","writeSingleMode","ErrorWithTag","hasErrors: true | undefined","projectName","fs","process","path","configExternal: ConfigExternal","url","options"],"sources":["../src/client.ts","../src/api.ts","../src/import-open-api.ts","../src/import-specs.ts","../package.json","../src/utils/request.ts","../src/utils/github.ts","../src/utils/package-json.ts","../src/utils/tsconfig.ts","../src/utils/http-resolver.ts","../src/utils/options.ts","../src/utils/watcher.ts","../src/utils/execute-hook.ts","../src/write-specs.ts","../src/generate.ts"],"sourcesContent":["import angular from '@orval/angular';\nimport axios from '@orval/axios';\nimport {\n asyncReduce,\n type ClientFileBuilder,\n type ClientMockGeneratorBuilder,\n type ContextSpecs,\n generateDependencyImports,\n type GeneratorClientFooter,\n type GeneratorClientHeader,\n type GeneratorClientImports,\n type GeneratorClients,\n type GeneratorClientTitle,\n type GeneratorOperations,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GeneratorVerbsOptions,\n isFunction,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n pascal,\n} from '@orval/core';\nimport fetchClient from '@orval/fetch';\nimport hono from '@orval/hono';\nimport mcp from '@orval/mcp';\nimport * as mock from '@orval/mock';\nimport query from '@orval/query';\nimport swr from '@orval/swr';\nimport zod from '@orval/zod';\n\nconst DEFAULT_CLIENT = OutputClient.AXIOS;\n\nconst getGeneratorClient = (\n outputClient: OutputClient | OutputClientFunc,\n output: NormalizedOutputOptions,\n) => {\n const GENERATOR_CLIENT: GeneratorClients = {\n axios: axios({ type: 'axios' })(),\n 'axios-functions': axios({ type: 'axios-functions' })(),\n angular: angular()(),\n 'react-query': query({ output, type: 'react-query' })(),\n 'svelte-query': query({ output, type: 'svelte-query' })(),\n 'vue-query': query({ output, type: 'vue-query' })(),\n swr: swr()(),\n zod: zod()(),\n hono: hono()(),\n fetch: fetchClient()(),\n mcp: mcp()(),\n };\n\n const generator = isFunction(outputClient)\n ? outputClient(GENERATOR_CLIENT)\n : GENERATOR_CLIENT[outputClient];\n\n if (!generator) {\n throw new Error(`Oups... 🍻. Client not found: ${outputClient}`);\n }\n\n return generator;\n};\n\nexport const generateClientImports: GeneratorClientImports = ({\n client = DEFAULT_CLIENT,\n implementation,\n imports,\n specsName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n hasGlobalMutator,\n hasTagsMutator,\n hasParamsSerializerOptions,\n packageJson,\n output,\n}) => {\n const { dependencies } = getGeneratorClient(client, output);\n return generateDependencyImports(\n implementation,\n dependencies\n ? [\n ...dependencies(\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n output.httpClient,\n hasTagsMutator,\n output.override,\n ),\n ...imports,\n ]\n : imports,\n specsName,\n hasSchemaDir,\n isAllowSyntheticDefaultImports,\n );\n};\n\nexport const generateClientHeader: GeneratorClientHeader = ({\n outputClient = DEFAULT_CLIENT,\n isRequestOptions,\n isGlobalMutator,\n isMutator,\n provideIn,\n hasAwaitedType,\n titles,\n output,\n verbOptions,\n tag,\n clientImplementation,\n}) => {\n const { header } = getGeneratorClient(outputClient, output);\n return {\n implementation: header\n ? header({\n title: titles.implementation,\n isRequestOptions,\n isGlobalMutator,\n isMutator,\n provideIn,\n hasAwaitedType,\n output,\n verbOptions,\n tag,\n clientImplementation,\n })\n : '',\n implementationMock: `export const ${titles.implementationMock} = () => [\\n`,\n };\n};\n\nexport const generateClientFooter: GeneratorClientFooter = ({\n outputClient = DEFAULT_CLIENT,\n operationNames,\n hasMutator,\n hasAwaitedType,\n titles,\n output,\n}) => {\n const { footer } = getGeneratorClient(outputClient, output);\n\n if (!footer) {\n return {\n implementation: '',\n implementationMock: `\\n]\\n`,\n };\n }\n\n let implementation: string;\n try {\n if (isFunction(outputClient)) {\n implementation = (footer as (operationNames: any) => string)(\n operationNames,\n );\n // being here means that the previous call worked\n console.warn(\n '[WARN] Passing an array of strings for operations names to the footer function is deprecated and will be removed in a future major release. Please pass them in an object instead: { operationNames: string[] }.',\n );\n } else {\n implementation = footer({\n operationNames,\n title: titles.implementation,\n hasMutator,\n hasAwaitedType,\n });\n }\n } catch {\n implementation = footer({\n operationNames,\n title: titles.implementation,\n hasMutator,\n hasAwaitedType,\n });\n }\n\n return {\n implementation,\n implementationMock: `]\\n`,\n };\n};\n\nexport const generateClientTitle: GeneratorClientTitle = ({\n outputClient = DEFAULT_CLIENT,\n title,\n customTitleFunc,\n output,\n}) => {\n const { title: generatorTitle } = getGeneratorClient(outputClient, output);\n\n if (!generatorTitle) {\n return {\n implementation: '',\n implementationMock: `get${pascal(title)}Mock`,\n };\n }\n\n if (customTitleFunc) {\n const customTitle = customTitleFunc(title);\n return {\n implementation: generatorTitle(customTitle),\n implementationMock: `get${pascal(customTitle)}Mock`,\n };\n }\n return {\n implementation: generatorTitle(title),\n implementationMock: `get${pascal(title)}Mock`,\n };\n};\n\nconst generateMock = (\n verbOption: GeneratorVerbOptions,\n options: GeneratorOptions,\n): ClientMockGeneratorBuilder => {\n if (!options.mock) {\n return {\n implementation: {\n function: '',\n handler: '',\n handlerName: '',\n },\n imports: [],\n };\n }\n\n if (isFunction(options.mock)) {\n return options.mock(verbOption, options);\n }\n\n return mock.generateMock(\n verbOption,\n options as typeof options & {\n mock: Exclude<(typeof options)['mock'], Function | undefined>;\n },\n );\n};\n\nexport const generateOperations = (\n outputClient: OutputClient | OutputClientFunc = DEFAULT_CLIENT,\n verbsOptions: GeneratorVerbsOptions,\n options: GeneratorOptions,\n output: NormalizedOutputOptions,\n): Promise<GeneratorOperations> => {\n return asyncReduce(\n verbsOptions,\n async (acc, verbOption) => {\n const { client: generatorClient } = getGeneratorClient(\n outputClient,\n output,\n );\n const client = await generatorClient(verbOption, options, outputClient);\n\n if (!client.implementation) {\n return acc;\n }\n\n const generatedMock = generateMock(verbOption, options);\n\n acc[verbOption.operationId] = {\n implementation: verbOption.doc + client.implementation,\n imports: client.imports,\n implementationMock: generatedMock.implementation,\n importsMock: generatedMock.imports,\n tags: verbOption.tags,\n mutator: verbOption.mutator,\n clientMutators: client.mutators,\n formData: verbOption.formData,\n formUrlEncoded: verbOption.formUrlEncoded,\n paramsSerializer: verbOption.paramsSerializer,\n operationName: verbOption.operationName,\n fetchReviver: verbOption.fetchReviver,\n };\n\n return acc;\n },\n {} as GeneratorOperations,\n );\n};\n\nexport const generateExtraFiles = (\n outputClient: OutputClient | OutputClientFunc = DEFAULT_CLIENT,\n verbsOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n): Promise<ClientFileBuilder[]> => {\n const { extraFiles: generateExtraFiles } = getGeneratorClient(\n outputClient,\n output,\n );\n\n if (!generateExtraFiles) {\n return Promise.resolve([]);\n }\n\n return generateExtraFiles(verbsOptions, output, context);\n};\n","import {\n asyncReduce,\n type ContextSpecs,\n generateVerbsOptions,\n type GeneratorApiBuilder,\n type GeneratorApiOperations,\n type GeneratorSchema,\n getFullRoute,\n getRoute,\n GetterPropType,\n isReference,\n type NormalizedInputOptions,\n type NormalizedOutputOptions,\n resolveRef,\n} from '@orval/core';\nimport { generateMockImports } from '@orval/mock';\nimport type { PathItemObject } from 'openapi3-ts/oas30';\n\nimport {\n generateClientFooter,\n generateClientHeader,\n generateClientImports,\n generateClientTitle,\n generateExtraFiles,\n generateOperations,\n} from './client';\n\nexport const getApiBuilder = async ({\n input,\n output,\n context,\n}: {\n input: NormalizedInputOptions;\n output: NormalizedOutputOptions;\n context: ContextSpecs;\n}): Promise<GeneratorApiBuilder> => {\n const api = await asyncReduce(\n Object.entries(context.specs[context.specKey].paths ?? {}),\n async (acc, [pathRoute, verbs]: [string, PathItemObject]) => {\n const route = getRoute(pathRoute);\n\n let resolvedVerbs = verbs;\n let resolvedContext = context;\n\n if (isReference(verbs)) {\n const { schema, imports } = resolveRef<PathItemObject>(verbs, context);\n\n resolvedVerbs = schema;\n\n resolvedContext = {\n ...context,\n ...(imports.length > 0\n ? {\n specKey: imports[0].specKey,\n }\n : {}),\n };\n }\n\n let verbsOptions = await generateVerbsOptions({\n verbs: resolvedVerbs,\n input,\n output,\n route,\n pathRoute,\n context: resolvedContext,\n });\n\n // GitHub #564 check if we want to exclude deprecated operations\n if (output.override.useDeprecatedOperations === false) {\n verbsOptions = verbsOptions.filter((verb) => {\n return !verb.deprecated;\n });\n }\n\n const schemas = verbsOptions.reduce<GeneratorSchema[]>(\n (acc, { queryParams, headers, body, response, props }) => {\n if (props) {\n acc.push(\n ...props.flatMap((param) =>\n param.type === GetterPropType.NAMED_PATH_PARAMS\n ? param.schema\n : [],\n ),\n );\n }\n if (queryParams) {\n acc.push(queryParams.schema, ...queryParams.deps);\n }\n if (headers) {\n acc.push(headers.schema, ...headers.deps);\n }\n\n acc.push(...body.schemas, ...response.schemas);\n\n return acc;\n },\n [],\n );\n\n const fullRoute = getFullRoute(\n route,\n verbs.servers ?? context.specs[context.specKey].servers,\n output.baseUrl,\n );\n if (!output.target) {\n throw new Error('Output does not have a target');\n }\n const pathOperations = await generateOperations(\n output.client,\n verbsOptions,\n {\n route: fullRoute,\n pathRoute,\n override: output.override,\n context: resolvedContext,\n mock: output.mock,\n output: output.target,\n },\n output,\n );\n\n for (const verbOption of verbsOptions) {\n acc.verbOptions[verbOption.operationId] = verbOption;\n }\n acc.schemas.push(...schemas);\n acc.operations = { ...acc.operations, ...pathOperations };\n\n return acc;\n },\n {\n operations: {},\n verbOptions: {},\n schemas: [],\n } as GeneratorApiOperations,\n );\n\n const extraFiles = await generateExtraFiles(\n output.client,\n api.verbOptions,\n output,\n context,\n );\n\n return {\n operations: api.operations,\n schemas: api.schemas,\n verbOptions: api.verbOptions,\n title: generateClientTitle,\n header: generateClientHeader,\n footer: generateClientFooter,\n imports: generateClientImports,\n importsMock: generateMockImports,\n extraFiles,\n };\n};\n","import {\n asyncReduce,\n type ContextSpecs,\n dynamicImport,\n generateComponentDefinition,\n generateParameterDefinition,\n generateSchemasDefinition,\n type GeneratorSchema,\n ibmOpenapiValidator,\n type ImportOpenApi,\n type InputOptions,\n isObject,\n isReference,\n isSchema,\n type NormalizedOutputOptions,\n openApiConverter,\n upath,\n type WriteSpecsBuilder,\n} from '@orval/core';\nimport type { JSONSchema6, JSONSchema7 } from 'json-schema';\nimport type { OpenAPIObject, SchemasObject } from 'openapi3-ts/oas30';\n\nimport { getApiBuilder } from './api';\n\nexport const importOpenApi = async ({\n data,\n input,\n output,\n target,\n workspace,\n}: ImportOpenApi): Promise<WriteSpecsBuilder> => {\n const specs = await generateInputSpecs({ specs: data, input, workspace });\n\n const schemas = getApiSchemas({ input, output, target, workspace, specs });\n\n const api = await getApiBuilder({\n input,\n output,\n context: {\n specKey: target,\n target,\n workspace,\n specs,\n output,\n },\n });\n\n return {\n ...api,\n schemas: {\n ...schemas,\n [target]: [...(schemas[target] ?? []), ...api.schemas],\n },\n target,\n info: specs[target].info,\n };\n};\n\nconst generateInputSpecs = async ({\n specs,\n input,\n workspace,\n}: {\n specs: JSONSchema6 | JSONSchema7 | Record<string, OpenAPIObject | unknown>;\n input: InputOptions;\n workspace: string;\n}): Promise<Record<string, OpenAPIObject>> => {\n const transformerFn = input.override?.transformer\n ? await dynamicImport(input.override.transformer, workspace)\n : undefined;\n\n return asyncReduce(\n Object.entries(specs),\n async (acc, [specKey, value]) => {\n const schema = await openApiConverter(\n value,\n input.converterOptions,\n specKey,\n );\n\n const transfomedSchema = transformerFn ? transformerFn(schema) : schema;\n\n if (input.validation) {\n await ibmOpenapiValidator(transfomedSchema, input.validation);\n }\n\n acc[specKey] = transfomedSchema;\n\n return acc;\n },\n {} as Record<string, OpenAPIObject>,\n );\n};\n\nconst getApiSchemas = ({\n input,\n output,\n target,\n workspace,\n specs,\n}: {\n input: InputOptions;\n output: NormalizedOutputOptions;\n workspace: string;\n target: string;\n specs: Record<string, OpenAPIObject>;\n}) => {\n return Object.entries(specs).reduce<Record<string, GeneratorSchema[]>>(\n (acc, [specKey, spec]) => {\n const context: ContextSpecs = {\n specKey,\n target,\n workspace,\n specs,\n output,\n };\n\n const parsedSchemas = spec.openapi\n ? (spec.components?.schemas as SchemasObject)\n : getAllSchemas(spec, specKey);\n\n const schemaDefinition = generateSchemasDefinition(\n parsedSchemas,\n context,\n output.override.components.schemas.suffix,\n input.filters,\n );\n\n const responseDefinition = generateComponentDefinition(\n spec.components?.responses,\n context,\n output.override.components.responses.suffix,\n );\n\n const bodyDefinition = generateComponentDefinition(\n spec.components?.requestBodies,\n context,\n output.override.components.requestBodies.suffix,\n );\n\n const parameters = generateParameterDefinition(\n spec.components?.parameters,\n context,\n output.override.components.parameters.suffix,\n );\n\n const schemas = [\n ...schemaDefinition,\n ...responseDefinition,\n ...bodyDefinition,\n ...parameters,\n ];\n\n if (schemas.length === 0) {\n return acc;\n }\n\n acc[specKey] = schemas;\n\n return acc;\n },\n {},\n );\n};\n\nconst getAllSchemas = (spec: object, specKey?: string): SchemasObject => {\n const keysToOmit = new Set([\n 'openapi',\n 'info',\n 'servers',\n 'paths',\n 'components',\n 'security',\n 'tags',\n 'externalDocs',\n ]);\n\n const cleanedSpec = Object.fromEntries(\n Object.entries(spec).filter(([key]) => !keysToOmit.has(key)),\n );\n\n if (specKey && isSchema(cleanedSpec)) {\n const name = upath.getSchemaFileName(specKey);\n\n const additionalKeysToOmit = new Set([\n 'type',\n 'properties',\n 'allOf',\n 'oneOf',\n 'anyOf',\n 'items',\n ]);\n\n return {\n [name]: cleanedSpec as SchemasObject,\n ...getAllSchemas(\n Object.fromEntries(\n Object.entries(cleanedSpec).filter(\n ([key]) => !additionalKeysToOmit.has(key),\n ),\n ),\n ),\n };\n }\n\n const schemas = Object.entries(cleanedSpec).reduce<SchemasObject>(\n (acc, [key, value]) => {\n if (!isObject(value)) {\n return acc;\n }\n\n if (!isSchema(value) && !isReference(value)) {\n return { ...acc, ...getAllSchemas(value) };\n }\n\n acc[key] = value;\n\n return acc;\n },\n {},\n );\n\n return {\n ...schemas,\n ...((spec as OpenAPIObject)?.components?.schemas as SchemasObject),\n };\n};\n","import SwaggerParser from '@apidevtools/swagger-parser';\nimport {\n isString,\n isUrl,\n log,\n type NormalizedOptions,\n type SwaggerParserOptions,\n upath,\n type WriteSpecsBuilder,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nimport { importOpenApi } from './import-open-api';\n\nconst resolveSpecs = async (\n path: string,\n { validate, ...options }: SwaggerParserOptions,\n _isUrl: boolean,\n isOnlySchema: boolean,\n) => {\n try {\n if (validate) {\n try {\n await SwaggerParser.validate(path, options);\n } catch (error) {\n if (error instanceof Error && error.name === 'ParserError') {\n throw error;\n }\n\n if (!isOnlySchema) {\n log(`⚠️ ${chalk.yellow(error)}`);\n }\n }\n }\n\n const data = (await SwaggerParser.resolve(path, options)).values();\n\n if (_isUrl) {\n return data;\n }\n\n // normalizing slashes after SwaggerParser\n return Object.fromEntries(\n Object.entries(data)\n .sort()\n .map(([key, value]) => [isUrl(key) ? key : upath.resolve(key), value]),\n );\n } catch {\n const file = await fs.readFile(path, 'utf8');\n\n return {\n [path]: yaml.load(file),\n };\n }\n};\n\nexport const importSpecs = async (\n workspace: string,\n options: NormalizedOptions,\n): Promise<WriteSpecsBuilder> => {\n const { input, output } = options;\n\n if (!isString(input.target)) {\n return importOpenApi({\n data: { [workspace]: input.target },\n input,\n output,\n target: workspace,\n workspace,\n });\n }\n\n const isPathUrl = isUrl(input.target);\n\n const data = await resolveSpecs(\n input.target,\n input.parserOptions,\n isPathUrl,\n !output.target,\n );\n\n return importOpenApi({\n data,\n input,\n output,\n target: input.target,\n workspace,\n });\n};\n","{\n \"name\": \"orval\",\n \"description\": \"A swagger client generator for typescript\",\n \"version\": \"7.15.0\",\n \"license\": \"MIT\",\n \"files\": [\n \"dist\",\n \"!dist/**/*.d.ts.map\"\n ],\n \"bin\": \"./dist/bin/orval.js\",\n \"type\": \"commonjs\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"engines\": {\n \"node\": \">=22.18.0\"\n },\n \"keywords\": [\n \"rest\",\n \"client\",\n \"swagger\",\n \"open-api\",\n \"fetch\",\n \"data fetching\",\n \"code-generation\",\n \"angular\",\n \"react\",\n \"react-query\",\n \"svelte\",\n \"svelte-query\",\n \"vue\",\n \"vue-query\",\n \"msw\",\n \"mock\",\n \"axios\",\n \"vue-query\",\n \"vue\",\n \"swr\",\n \"zod\",\n \"hono\"\n ],\n \"author\": {\n \"name\": \"Victor Bury\",\n \"email\": \"victor@anymaniax.com\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/orval-labs/orval.git\"\n },\n \"scripts\": {\n \"build\": \"tsdown --config-loader unconfig\",\n \"dev\": \"tsdown --config-loader unconfig --watch src --onSuccess 'yarn generate-api'\",\n \"lint\": \"eslint .\",\n \"generate-api\": \"orval --config ../../samples/react-query/basic/orval.config.ts\",\n \"test\": \"tsc --noEmit && vitest\",\n \"clean\": \"rimraf .turbo dist\",\n \"nuke\": \"rimraf .turbo dist node_modules\"\n },\n \"devDependencies\": {\n \"@types/fs-extra\": \"^11.0.4\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/lodash.uniq\": \"^4.5.9\",\n \"eslint\": \"^9.38.0\",\n \"openapi-types\": \"^12.1.3\",\n \"rimraf\": \"^6.0.1\",\n \"tsdown\": \"^0.15.8\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^3.2.4\"\n },\n \"dependencies\": {\n \"@apidevtools/swagger-parser\": \"^12.1.0\",\n \"@commander-js/extra-typings\": \"^14.0.0\",\n \"@orval/angular\": \"workspace:*\",\n \"@orval/axios\": \"workspace:*\",\n \"@orval/core\": \"workspace:*\",\n \"@orval/fetch\": \"workspace:*\",\n \"@orval/hono\": \"workspace:*\",\n \"@orval/mcp\": \"workspace:*\",\n \"@orval/mock\": \"workspace:*\",\n \"@orval/query\": \"workspace:*\",\n \"@orval/swr\": \"workspace:*\",\n \"@orval/zod\": \"workspace:*\",\n \"chalk\": \"^4.1.2\",\n \"chokidar\": \"^4.0.3\",\n \"commander\": \"^14.0.1\",\n \"enquirer\": \"^2.4.1\",\n \"execa\": \"^5.1.1\",\n \"find-up\": \"5.0.0\",\n \"fs-extra\": \"^11.3.2\",\n \"js-yaml\": \"4.1.0\",\n \"lodash.uniq\": \"^4.5.0\",\n \"openapi3-ts\": \"4.5.0\",\n \"string-argv\": \"^0.3.2\",\n \"tsconfck\": \"^2.1.2\",\n \"typedoc\": \"^0.28.14\",\n \"typedoc-plugin-coverage\": \"^4.0.2\",\n \"typedoc-plugin-markdown\": \"^4.9.0\"\n }\n}\n","import http from 'node:http';\nimport https from 'node:https';\n\nexport type Response<T = Record<string, unknown>> = {\n status: http.IncomingMessage['statusCode'];\n headers: http.IncomingMessage['headers'];\n body: T;\n};\n\nexport const request = <T>(\n urlOptions: string | https.RequestOptions | URL,\n data?: string,\n): Promise<Response<T>> => {\n return new Promise((resolve, reject) => {\n const req = https.request(urlOptions, (res) => {\n let body = '';\n res.on('data', (chunk) => (body += chunk.toString()));\n res.on('error', reject);\n res.on('end', () => {\n const response = {\n status: res.statusCode,\n headers: res.headers,\n body: JSON.parse(body),\n };\n if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {\n resolve(response);\n } else {\n reject(response);\n }\n });\n });\n req.on('error', reject);\n if (data) {\n req.write(data, 'binary');\n }\n req.end();\n });\n};\n","import https from 'node:https';\n\nimport SwaggerParser from '@apidevtools/swagger-parser';\nimport { upath } from '@orval/core';\nimport { prompt } from 'enquirer';\nimport fs from 'fs-extra';\n\nimport { request } from './request';\n\nexport const getGithubSpecReq = ({\n accessToken,\n repo,\n owner,\n branch,\n path,\n}: {\n accessToken: string;\n repo: string;\n owner: string;\n branch: string;\n path: string;\n}): [https.RequestOptions, string] => {\n const payload = JSON.stringify({\n query: `query {\n repository(name: \"${repo}\", owner: \"${owner}\") {\n object(expression: \"${branch}:${path}\") {\n ... on Blob {\n text\n }\n }\n }\n }`,\n });\n\n return [\n {\n method: 'POST',\n hostname: 'api.github.com',\n path: '/graphql',\n headers: {\n 'content-type': 'application/json',\n 'user-agent': 'orval-importer',\n authorization: `bearer ${accessToken}`,\n 'Content-Length': payload.length,\n },\n },\n payload,\n ];\n};\n\nlet githubToken: string | null = null;\n\nexport const getGithubAcessToken = async (githubTokenPath: string) => {\n if (githubToken) {\n return githubToken;\n }\n\n if (await fs.pathExists(githubTokenPath)) {\n return fs.readFile(githubTokenPath, 'utf8');\n } else {\n const answers = await prompt<{\n githubToken: string;\n saveToken: boolean;\n }>([\n {\n type: 'input',\n name: 'githubToken',\n message:\n 'Please provide a GitHub token with `repo` rules checked (https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)',\n },\n {\n type: 'confirm',\n name: 'saveToken',\n message:\n 'Would you like to store your token for the next time? (stored in your node_modules)',\n },\n ]);\n\n githubToken = answers.githubToken;\n\n if (answers.saveToken) {\n await fs.outputFile(githubTokenPath, answers.githubToken);\n }\n return answers.githubToken;\n }\n};\n\nexport const getGithubOpenApi = async (url: string): Promise<string> => {\n const githubTokenPath = upath.join(__dirname, '.githubToken');\n const accessToken = await getGithubAcessToken(githubTokenPath);\n const [info] = url.split('github.com/').slice(-1);\n\n const [owner, repo, , branch, ...paths] = info.split('/');\n const path = paths.join('/');\n\n try {\n const { body } = await request<{\n data?: { repository: any };\n errors?: { type: string }[];\n }>(...getGithubSpecReq({ accessToken, repo, owner, branch, path }));\n if (body.errors?.length) {\n const isErrorRemoveLink = body.errors?.some(\n (error) => error?.type === 'NOT_FOUND',\n );\n\n if (isErrorRemoveLink) {\n const answers = await prompt<{ removeToken: boolean }>([\n {\n type: 'confirm',\n name: 'removeToken',\n message:\n \"Your token doesn't have the correct permissions, should we remove it?\",\n },\n ]);\n if (answers.removeToken) {\n await fs.unlink(githubTokenPath);\n }\n }\n }\n\n return body.data?.repository?.object.text;\n } catch (error: any) {\n if (!error.body) {\n throw new Error(`Oups... 🍻. ${error}`);\n }\n\n if (error.body.message === 'Bad credentials') {\n const answers = await prompt<{ removeToken: boolean }>([\n {\n type: 'confirm',\n name: 'removeToken',\n message:\n \"Your token doesn't have the correct permissions, should we remove it?\",\n },\n ]);\n if (answers.removeToken) {\n await fs.unlink(githubTokenPath);\n }\n }\n throw new Error(error.body.message || `Oups... 🍻. ${error}`);\n }\n};\n\nexport const githubResolver = {\n order: 199,\n canRead(file: SwaggerParser.FileInfo) {\n return file.url.includes('github.com');\n },\n\n read(file: SwaggerParser.FileInfo) {\n return getGithubOpenApi(file.url);\n },\n};\n","import { dynamicImport, isString, log, type PackageJson } from '@orval/core';\nimport chalk from 'chalk';\nimport findUp from 'find-up';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nimport { normalizePath } from './options';\n\nexport const loadPackageJson = async (\n packageJson?: string,\n workspace = process.cwd(),\n): Promise<PackageJson | undefined> => {\n if (!packageJson) {\n const pkgPath = await findUp(['package.json'], { cwd: workspace });\n if (pkgPath) {\n const pkg = await dynamicImport<unknown>(pkgPath, workspace);\n\n if (isPackageJson(pkg)) {\n return await maybeReplaceCatalog(pkg, workspace);\n } else {\n throw new Error('Invalid package.json file');\n }\n }\n return;\n }\n\n const normalizedPath = normalizePath(packageJson, workspace);\n if (fs.existsSync(normalizedPath)) {\n const pkg = await dynamicImport<unknown>(normalizedPath);\n\n if (isPackageJson(pkg)) {\n return await maybeReplaceCatalog(pkg, workspace);\n } else {\n throw new Error(`Invalid package.json file: ${normalizedPath}`);\n }\n }\n return;\n};\n\nconst isPackageJson = (obj: any): obj is PackageJson =>\n typeof obj === 'object' && obj !== null;\n\nconst maybeReplaceCatalog = async (\n pkg: PackageJson,\n workspace: string,\n): Promise<PackageJson> => {\n if (\n ![\n ...Object.entries(pkg.dependencies ?? {}),\n ...Object.entries(pkg.devDependencies ?? {}),\n ...Object.entries(pkg.peerDependencies ?? {}),\n ].some(([, value]) => isString(value) && value.startsWith('catalog:'))\n ) {\n return pkg;\n }\n\n const filePath = await findUp('pnpm-workspace.yaml', { cwd: workspace });\n if (!filePath) {\n log(\n `⚠️ ${chalk.yellow('package.json contains pnpm catalog: in dependencies, but no pnpm-workspace.yaml was found.')}`,\n );\n return pkg;\n }\n const file = await fs.readFile(filePath, 'utf8');\n\n const pnpmWorkspaceFile = yaml.load(file) as Record<string, any>;\n performSubstitution(pkg.dependencies, pnpmWorkspaceFile);\n performSubstitution(pkg.devDependencies, pnpmWorkspaceFile);\n performSubstitution(pkg.peerDependencies, pnpmWorkspaceFile);\n\n return pkg;\n};\n\nconst performSubstitution = (\n dependencies: Record<string, string> | undefined,\n pnpmWorkspaceFile: Record<string, any>,\n) => {\n if (!dependencies) return;\n for (const [packageName, version] of Object.entries(dependencies)) {\n if (version === 'catalog:' || version === 'catalog:default') {\n if (!pnpmWorkspaceFile.catalog) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, catalog: substitution for the package '${packageName}' failed as there were no default catalog.`)}`,\n );\n continue;\n }\n const sub = pnpmWorkspaceFile.catalog[packageName];\n if (!sub) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, catalog: substitution for the package '${packageName}' failed as there were no matching package in the default catalog.`)}`,\n );\n continue;\n }\n dependencies[packageName] = sub;\n } else if (version.startsWith('catalog:')) {\n const catalogName = version.slice('catalog:'.length);\n const catalog = pnpmWorkspaceFile.catalogs?.[catalogName];\n if (!catalog) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, '${version}' substitution for the package '${packageName}' failed as there were no matching catalog named '${catalogName}'. (available named catalogs are: ${Object.keys(pnpmWorkspaceFile.catalogs ?? {}).join(', ')})`)}`,\n );\n continue;\n }\n const sub = catalog[packageName];\n if (!sub) {\n log(\n `⚠️ ${chalk.yellow(`when reading from pnpm-workspace.yaml, '${version}' substitution for the package '${packageName}' failed as there were no package in the catalog named '${catalogName}'. (packages in the catalog are: ${Object.keys(catalog).join(', ')})`)}`,\n );\n continue;\n }\n dependencies[packageName] = sub;\n }\n }\n};\n","import { isObject, isString, isUndefined, type Tsconfig } from '@orval/core';\nimport findUp from 'find-up';\nimport fs from 'fs-extra';\nimport { parse } from 'tsconfck';\n\nimport { normalizePath } from './options';\n\nexport const loadTsconfig = async (\n tsconfig?: Tsconfig | string,\n workspace = process.cwd(),\n): Promise<Tsconfig | undefined> => {\n if (isUndefined(tsconfig)) {\n const configPath = await findUp(['tsconfig.json', 'jsconfig.json'], {\n cwd: workspace,\n });\n if (configPath) {\n const config = await parse(configPath);\n return config.tsconfig;\n }\n return;\n }\n\n if (isString(tsconfig)) {\n const normalizedPath = normalizePath(tsconfig, workspace);\n if (fs.existsSync(normalizedPath)) {\n const config = await parse(normalizedPath);\n\n const tsconfig =\n config.referenced?.find(\n ({ tsconfigFile }) => tsconfigFile === normalizedPath,\n )?.tsconfig || config.tsconfig;\n\n return tsconfig;\n }\n return;\n }\n\n if (isObject(tsconfig)) {\n return tsconfig;\n }\n return;\n};\n","export const httpResolver = {\n safeUrlResolver: false, // this is merged with the default http resolver in json-schema-ref-parser\n};\n","import {\n type ClientMockBuilder,\n type ConfigExternal,\n createLogger,\n FormDataArrayHandling,\n type GlobalMockOptions,\n type GlobalOptions,\n type HonoOptions,\n type Hook,\n type HookFunction,\n type HookOption,\n type HooksOptions,\n isBoolean,\n isFunction,\n isObject,\n isString,\n isUndefined,\n isUrl,\n type JsDocOptions,\n mergeDeep,\n type Mutator,\n NamingConvention,\n type NormalizedHonoOptions,\n type NormalizedHookOptions,\n type NormalizedJsDocOptions,\n type NormalizedMutator,\n type NormalizedOperationOptions,\n type NormalizedOptions,\n type NormalizedOverrideOutput,\n type NormalizedQueryOptions,\n type OperationOptions,\n type OptionsExport,\n OutputClient,\n OutputHttpClient,\n OutputMode,\n type OverrideOutput,\n PropertySortOrder,\n type QueryOptions,\n RefComponentSuffix,\n type SwaggerParserOptions,\n upath,\n} from '@orval/core';\nimport { DEFAULT_MOCK_OPTIONS } from '@orval/mock';\nimport chalk from 'chalk';\n\nimport pkg from '../../package.json';\nimport { githubResolver } from './github';\nimport { loadPackageJson } from './package-json';\nimport { loadTsconfig } from './tsconfig';\nimport { httpResolver } from './http-resolver';\n\n/**\n * Type helper to make it easier to use orval.config.ts\n * accepts a direct {@link ConfigExternal} object.\n */\nexport function defineConfig(options: ConfigExternal): ConfigExternal {\n return options;\n}\n\nconst createFormData = (\n workspace: string,\n formData: OverrideOutput['formData'],\n): NormalizedOverrideOutput['formData'] => {\n const defaultArrayHandling = FormDataArrayHandling.SERIALIZE;\n if (formData === undefined)\n return { disabled: false, arrayHandling: defaultArrayHandling };\n if (isBoolean(formData))\n return { disabled: !formData, arrayHandling: defaultArrayHandling };\n if (isString(formData))\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData),\n arrayHandling: defaultArrayHandling,\n };\n if ('mutator' in formData || 'arrayHandling' in formData)\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData.mutator),\n arrayHandling: formData.arrayHandling ?? defaultArrayHandling,\n };\n return {\n disabled: false,\n mutator: normalizeMutator(workspace, formData),\n arrayHandling: defaultArrayHandling,\n };\n};\n\nexport const normalizeOptions = async (\n optionsExport: OptionsExport,\n workspace = process.cwd(),\n globalOptions: GlobalOptions = {},\n) => {\n const options = await (isFunction(optionsExport)\n ? optionsExport()\n : optionsExport);\n\n if (!options.input) {\n throw new Error(chalk.red(`Config require an input`));\n }\n\n if (!options.output) {\n throw new Error(chalk.red(`Config require an output`));\n }\n\n const inputOptions = isString(options.input)\n ? { target: options.input }\n : options.input;\n\n const outputOptions = isString(options.output)\n ? { target: options.output }\n : options.output;\n\n const outputWorkspace = normalizePath(\n outputOptions.workspace || '',\n workspace,\n );\n\n const { clean, prettier, client, httpClient, mode, biome } = globalOptions;\n\n const tsconfig = await loadTsconfig(\n outputOptions.tsconfig || globalOptions.tsconfig,\n workspace,\n );\n\n const packageJson = await loadPackageJson(\n outputOptions.packageJson || globalOptions.packageJson,\n workspace,\n );\n\n const mockOption = outputOptions.mock ?? globalOptions.mock;\n let mock: GlobalMockOptions | ClientMockBuilder | undefined;\n if (typeof mockOption === 'boolean' && mockOption) {\n mock = DEFAULT_MOCK_OPTIONS;\n } else if (isFunction(mockOption)) {\n mock = mockOption;\n } else if (mockOption) {\n mock = {\n ...DEFAULT_MOCK_OPTIONS,\n ...mockOption,\n };\n } else {\n mock = undefined;\n }\n\n const defaultFileExtension = '.ts';\n\n const globalQueryOptions: NormalizedQueryOptions = {\n useQuery: true,\n useMutation: true,\n signal: true,\n shouldExportMutatorHooks: true,\n shouldExportHttpClient: true,\n shouldExportQueryKey: true,\n shouldSplitQueryKey: false,\n ...normalizeQueryOptions(outputOptions.override?.query, workspace),\n };\n\n const normalizedOptions: NormalizedOptions = {\n input: {\n target: globalOptions.input\n ? normalizePathOrUrl(globalOptions.input, process.cwd())\n : normalizePathOrUrl(inputOptions.target, workspace),\n validation: inputOptions.validation || false,\n override: {\n transformer: normalizePath(\n inputOptions.override?.transformer,\n workspace,\n ),\n },\n converterOptions: inputOptions.converterOptions ?? {},\n parserOptions: mergeDeep(\n parserDefaultOptions,\n inputOptions.parserOptions ?? {},\n ),\n filters: inputOptions.filters,\n },\n output: {\n target: globalOptions.output\n ? normalizePath(globalOptions.output, process.cwd())\n : normalizePath(outputOptions.target, outputWorkspace),\n schemas: normalizePath(outputOptions.schemas, outputWorkspace),\n namingConvention:\n outputOptions.namingConvention || NamingConvention.CAMEL_CASE,\n fileExtension: outputOptions.fileExtension || defaultFileExtension,\n workspace: outputOptions.workspace ? outputWorkspace : undefined,\n client: outputOptions.client ?? client ?? OutputClient.AXIOS_FUNCTIONS,\n httpClient:\n outputOptions.httpClient ?? httpClient ?? OutputHttpClient.AXIOS,\n mode: normalizeOutputMode(outputOptions.mode ?? mode),\n mock,\n clean: outputOptions.clean ?? clean ?? false,\n docs: outputOptions.docs ?? false,\n prettier: outputOptions.prettier ?? prettier ?? false,\n biome: outputOptions.biome ?? biome ?? false,\n tsconfig,\n packageJson,\n headers: outputOptions.headers ?? false,\n indexFiles: outputOptions.indexFiles ?? true,\n baseUrl: outputOptions.baseUrl,\n unionAddMissingProperties:\n outputOptions.unionAddMissingProperties ?? false,\n override: {\n ...outputOptions.override,\n mock: {\n arrayMin: outputOptions.override?.mock?.arrayMin ?? 1,\n arrayMax: outputOptions.override?.mock?.arrayMax ?? 10,\n stringMin: outputOptions.override?.mock?.stringMin ?? 10,\n stringMax: outputOptions.override?.mock?.stringMax ?? 20,\n fractionDigits: outputOptions.override?.mock?.fractionDigits ?? 2,\n ...outputOptions.override?.mock,\n },\n operations: normalizeOperationsAndTags(\n outputOptions.override?.operations ?? {},\n outputWorkspace,\n {\n query: globalQueryOptions,\n },\n ),\n tags: normalizeOperationsAndTags(\n outputOptions.override?.tags ?? {},\n outputWorkspace,\n {\n query: globalQueryOptions,\n },\n ),\n mutator: normalizeMutator(\n outputWorkspace,\n outputOptions.override?.mutator,\n ),\n formData: createFormData(\n outputWorkspace,\n outputOptions.override?.formData,\n ),\n formUrlEncoded:\n (isBoolean(outputOptions.override?.formUrlEncoded)\n ? outputOptions.override?.formUrlEncoded\n : normalizeMutator(\n outputWorkspace,\n outputOptions.override?.formUrlEncoded,\n )) ?? true,\n paramsSerializer: normalizeMutator(\n outputWorkspace,\n outputOptions.override?.paramsSerializer,\n ),\n header:\n outputOptions.override?.header === false\n ? false\n : isFunction(outputOptions.override?.header)\n ? outputOptions.override?.header!\n : getDefaultFilesHeader,\n requestOptions: outputOptions.override?.requestOptions ?? true,\n namingConvention: outputOptions.override?.namingConvention ?? {},\n components: {\n schemas: {\n suffix: RefComponentSuffix.schemas,\n itemSuffix:\n outputOptions.override?.components?.schemas?.itemSuffix ?? 'Item',\n ...outputOptions.override?.components?.schemas,\n },\n responses: {\n suffix: RefComponentSuffix.responses,\n ...outputOptions.override?.components?.responses,\n },\n parameters: {\n suffix: RefComponentSuffix.parameters,\n ...outputOptions.override?.components?.parameters,\n },\n requestBodies: {\n suffix: RefComponentSuffix.requestBodies,\n ...outputOptions.override?.components?.requestBodies,\n },\n },\n hono: normalizeHonoOptions(outputOptions.override?.hono, workspace),\n jsDoc: normalizeJSDocOptions(outputOptions.override?.jsDoc),\n query: globalQueryOptions,\n zod: {\n strict: {\n param: outputOptions.override?.zod?.strict?.param ?? false,\n query: outputOptions.override?.zod?.strict?.query ?? false,\n header: outputOptions.override?.zod?.strict?.header ?? false,\n body: outputOptions.override?.zod?.strict?.body ?? false,\n response: outputOptions.override?.zod?.strict?.response ?? false,\n },\n generate: {\n param: outputOptions.override?.zod?.generate?.param ?? true,\n query: outputOptions.override?.zod?.generate?.query ?? true,\n header: outputOptions.override?.zod?.generate?.header ?? true,\n body: outputOptions.override?.zod?.generate?.body ?? true,\n response: outputOptions.override?.zod?.generate?.response ?? true,\n },\n coerce: {\n param: outputOptions.override?.zod?.coerce?.param ?? false,\n query: outputOptions.override?.zod?.coerce?.query ?? false,\n header: outputOptions.override?.zod?.coerce?.header ?? false,\n body: outputOptions.override?.zod?.coerce?.body ?? false,\n response: outputOptions.override?.zod?.coerce?.response ?? false,\n },\n preprocess: {\n ...(outputOptions.override?.zod?.preprocess?.param\n ? {\n param: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.param,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.query\n ? {\n query: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.query,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.header\n ? {\n header: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.header,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.body\n ? {\n body: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.body,\n ),\n }\n : {}),\n ...(outputOptions.override?.zod?.preprocess?.response\n ? {\n response: normalizeMutator(\n workspace,\n outputOptions.override.zod.preprocess.response,\n ),\n }\n : {}),\n },\n generateEachHttpStatus:\n outputOptions.override?.zod?.generateEachHttpStatus ?? false,\n dateTimeOptions: outputOptions.override?.zod?.dateTimeOptions ?? {},\n timeOptions: outputOptions.override?.zod?.timeOptions ?? {},\n },\n swr: {\n ...outputOptions.override?.swr,\n },\n angular: {\n provideIn: outputOptions.override?.angular?.provideIn ?? 'root',\n },\n fetch: {\n includeHttpResponseReturnType:\n outputOptions.override?.fetch?.includeHttpResponseReturnType ??\n true,\n forceSuccessResponse:\n outputOptions.override?.fetch?.forceSuccessResponse ?? false,\n explode: outputOptions.override?.fetch?.explode ?? true,\n ...outputOptions.override?.fetch,\n },\n useDates: outputOptions.override?.useDates || false,\n useDeprecatedOperations:\n outputOptions.override?.useDeprecatedOperations ?? true,\n enumGenerationType:\n (outputOptions.override?.useNativeEnums ?? false)\n ? 'enum'\n : (outputOptions.override?.enumGenerationType ?? 'const'),\n suppressReadonlyModifier:\n outputOptions.override?.suppressReadonlyModifier || false,\n },\n allParamsOptional: outputOptions.allParamsOptional ?? false,\n urlEncodeParameters: outputOptions.urlEncodeParameters ?? false,\n optionsParamRequired: outputOptions.optionsParamRequired ?? false,\n propertySortOrder:\n outputOptions.propertySortOrder ?? PropertySortOrder.SPECIFICATION,\n },\n hooks: options.hooks ? normalizeHooks(options.hooks) : {},\n };\n\n if (!normalizedOptions.input.target) {\n throw new Error(chalk.red(`Config require an input target`));\n }\n\n if (!normalizedOptions.output.target && !normalizedOptions.output.schemas) {\n throw new Error(chalk.red(`Config require an output target or schemas`));\n }\n\n return normalizedOptions;\n};\n\nconst parserDefaultOptions = {\n validate: true,\n resolve: { github: githubResolver, http: httpResolver },\n} as SwaggerParserOptions;\n\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nconst normalizePathOrUrl = <T>(path: T, workspace: string) => {\n if (isString(path) && !isUrl(path)) {\n return normalizePath(path, workspace);\n }\n\n return path;\n};\n\nexport const normalizePath = <T>(path: T, workspace: string) => {\n if (!isString(path)) {\n return path;\n }\n return upath.resolve(workspace, path);\n};\n\nconst normalizeOperationsAndTags = (\n operationsOrTags: Record<string, OperationOptions>,\n workspace: string,\n global: {\n query: NormalizedQueryOptions;\n },\n): Record<string, NormalizedOperationOptions> => {\n return Object.fromEntries(\n Object.entries(operationsOrTags).map(\n ([\n key,\n {\n transformer,\n mutator,\n formData,\n formUrlEncoded,\n paramsSerializer,\n query,\n zod,\n ...rest\n },\n ]) => {\n return [\n key,\n {\n ...rest,\n ...(query\n ? {\n query: normalizeQueryOptions(query, workspace, global.query),\n }\n : {}),\n ...(zod\n ? {\n zod: {\n strict: {\n param: zod.strict?.param ?? false,\n query: zod.strict?.query ?? false,\n header: zod.strict?.header ?? false,\n body: zod.strict?.body ?? false,\n response: zod.strict?.response ?? false,\n },\n generate: {\n param: zod.generate?.param ?? true,\n query: zod.generate?.query ?? true,\n header: zod.generate?.header ?? true,\n body: zod.generate?.body ?? true,\n response: zod.generate?.response ?? true,\n },\n coerce: {\n param: zod.coerce?.param ?? false,\n query: zod.coerce?.query ?? false,\n header: zod.coerce?.header ?? false,\n body: zod.coerce?.body ?? false,\n response: zod.coerce?.response ?? false,\n },\n preprocess: {\n ...(zod.preprocess?.param\n ? {\n param: normalizeMutator(\n workspace,\n zod.preprocess.param,\n ),\n }\n : {}),\n ...(zod.preprocess?.query\n ? {\n query: normalizeMutator(\n workspace,\n zod.preprocess.query,\n ),\n }\n : {}),\n ...(zod.preprocess?.header\n ? {\n header: normalizeMutator(\n workspace,\n zod.preprocess.header,\n ),\n }\n : {}),\n ...(zod.preprocess?.body\n ? {\n body: normalizeMutator(\n workspace,\n zod.preprocess.body,\n ),\n }\n : {}),\n ...(zod.preprocess?.response\n ? {\n response: normalizeMutator(\n workspace,\n zod.preprocess.response,\n ),\n }\n : {}),\n },\n generateEachHttpStatus:\n zod?.generateEachHttpStatus ?? false,\n dateTimeOptions: zod?.dateTimeOptions ?? {},\n timeOptions: zod?.timeOptions ?? {},\n },\n }\n : {}),\n ...(transformer\n ? { transformer: normalizePath(transformer, workspace) }\n : {}),\n ...(mutator\n ? { mutator: normalizeMutator(workspace, mutator) }\n : {}),\n ...createFormData(workspace, formData),\n ...(formUrlEncoded\n ? {\n formUrlEncoded: isBoolean(formUrlEncoded)\n ? formUrlEncoded\n : normalizeMutator(workspace, formUrlEncoded),\n }\n : {}),\n ...(paramsSerializer\n ? {\n paramsSerializer: normalizeMutator(\n workspace,\n paramsSerializer,\n ),\n }\n : {}),\n },\n ];\n },\n ),\n );\n};\n\nconst normalizeOutputMode = (mode?: OutputMode): OutputMode => {\n if (!mode) {\n return OutputMode.SINGLE;\n }\n\n if (!Object.values(OutputMode).includes(mode)) {\n createLogger().warn(chalk.yellow(`Unknown the provided mode => ${mode}`));\n return OutputMode.SINGLE;\n }\n\n return mode;\n};\n\nconst normalizeHooks = (hooks: HooksOptions): NormalizedHookOptions => {\n const keys = Object.keys(hooks) as unknown as Hook[];\n\n return keys.reduce<NormalizedHookOptions>((acc, key: Hook) => {\n if (isString(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as string[],\n };\n } else if (Array.isArray(hooks[key])) {\n return {\n ...acc,\n [key]: hooks[key] as string[],\n };\n } else if (isFunction(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as HookFunction[],\n };\n } else if (isObject(hooks[key])) {\n return {\n ...acc,\n [key]: [hooks[key]] as HookOption[],\n };\n }\n\n return acc;\n }, {});\n};\n\nconst normalizeHonoOptions = (\n hono: HonoOptions = {},\n workspace: string,\n): NormalizedHonoOptions => {\n return {\n ...(hono.handlers\n ? { handlers: upath.resolve(workspace, hono.handlers) }\n : {}),\n compositeRoute: hono.compositeRoute ?? '',\n validator: hono.validator ?? true,\n validatorOutputPath: hono.validatorOutputPath\n ? upath.resolve(workspace, hono.validatorOutputPath)\n : '',\n };\n};\n\nconst normalizeJSDocOptions = (\n jsdoc: JsDocOptions = {},\n): NormalizedJsDocOptions => {\n return {\n ...jsdoc,\n };\n};\n\nconst normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n globalOptions: NormalizedQueryOptions = {},\n): NormalizedQueryOptions => {\n if (queryOptions.options) {\n console.warn(\n '[WARN] Using query options is deprecated and will be removed in a future major release. Please use queryOptions or mutationOptions instead.',\n );\n }\n\n return {\n ...(isUndefined(queryOptions.usePrefetch)\n ? {}\n : { usePrefetch: queryOptions.usePrefetch }),\n ...(isUndefined(queryOptions.useInvalidate)\n ? {}\n : { useInvalidate: queryOptions.useInvalidate }),\n ...(isUndefined(queryOptions.useQuery)\n ? {}\n : { useQuery: queryOptions.useQuery }),\n ...(isUndefined(queryOptions.useSuspenseQuery)\n ? {}\n : { useSuspenseQuery: queryOptions.useSuspenseQuery }),\n ...(isUndefined(queryOptions.useMutation)\n ? {}\n : { useMutation: queryOptions.useMutation }),\n ...(isUndefined(queryOptions.useInfinite)\n ? {}\n : { useInfinite: queryOptions.useInfinite }),\n ...(isUndefined(queryOptions.useSuspenseInfiniteQuery)\n ? {}\n : { useSuspenseInfiniteQuery: queryOptions.useSuspenseInfiniteQuery }),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(globalOptions.queryKey\n ? {\n queryKey: globalOptions.queryKey,\n }\n : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(globalOptions.queryOptions\n ? {\n queryOptions: globalOptions.queryOptions,\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(globalOptions.mutationOptions\n ? {\n mutationOptions: globalOptions.mutationOptions,\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(isUndefined(globalOptions.shouldExportQueryKey)\n ? {}\n : {\n shouldExportQueryKey: globalOptions.shouldExportQueryKey,\n }),\n ...(isUndefined(queryOptions.shouldExportQueryKey)\n ? {}\n : { shouldExportQueryKey: queryOptions.shouldExportQueryKey }),\n ...(isUndefined(globalOptions.shouldExportHttpClient)\n ? {}\n : {\n shouldExportHttpClient: globalOptions.shouldExportHttpClient,\n }),\n ...(isUndefined(queryOptions.shouldExportHttpClient)\n ? {}\n : { shouldExportHttpClient: queryOptions.shouldExportHttpClient }),\n ...(isUndefined(globalOptions.shouldExportMutatorHooks)\n ? {}\n : {\n shouldExportMutatorHooks: globalOptions.shouldExportMutatorHooks,\n }),\n ...(isUndefined(queryOptions.shouldExportMutatorHooks)\n ? {}\n : { shouldExportMutatorHooks: queryOptions.shouldExportMutatorHooks }),\n ...(isUndefined(globalOptions.shouldSplitQueryKey)\n ? {}\n : {\n shouldSplitQueryKey: globalOptions.shouldSplitQueryKey,\n }),\n ...(isUndefined(queryOptions.shouldSplitQueryKey)\n ? {}\n : { shouldSplitQueryKey: queryOptions.shouldSplitQueryKey }),\n ...(isUndefined(globalOptions.signal)\n ? {}\n : {\n signal: globalOptions.signal,\n }),\n ...(isUndefined(globalOptions.useOperationIdAsQueryKey)\n ? {}\n : {\n useOperationIdAsQueryKey: globalOptions.useOperationIdAsQueryKey,\n }),\n ...(isUndefined(queryOptions.useOperationIdAsQueryKey)\n ? {}\n : { useOperationIdAsQueryKey: queryOptions.useOperationIdAsQueryKey }),\n ...(isUndefined(globalOptions.signal)\n ? {}\n : {\n signal: globalOptions.signal,\n }),\n ...(isUndefined(queryOptions.signal)\n ? {}\n : { signal: queryOptions.signal }),\n ...(isUndefined(globalOptions.version)\n ? {}\n : {\n version: globalOptions.version,\n }),\n ...(isUndefined(queryOptions.version)\n ? {}\n : { version: queryOptions.version }),\n };\n};\n\nexport const getDefaultFilesHeader = ({\n title,\n description,\n version,\n}: {\n title?: string;\n description?: string;\n version?: string;\n} = {}) => [\n `Generated by ${pkg.name} v${pkg.version} 🍺`,\n `Do not edit manually.`,\n ...(title ? [title] : []),\n ...(description ? [description] : []),\n ...(version ? [`OpenAPI spec version: ${version}`] : []),\n];\n","import { log, logError } from '@orval/core';\n\nexport const startWatcher = async (\n watchOptions: boolean | string | (string | boolean)[],\n watchFn: () => Promise<any>,\n defaultTarget: string | string[] = '.',\n) => {\n if (!watchOptions) return;\n const { watch } = await import('chokidar');\n\n const ignored = ['**/{.git,node_modules}/**'];\n\n const watchPaths =\n typeof watchOptions === 'boolean'\n ? defaultTarget\n : Array.isArray(watchOptions)\n ? watchOptions.filter(\n (path): path is string => typeof path === 'string',\n )\n : watchOptions;\n\n log(\n `Watching for changes in ${\n Array.isArray(watchPaths)\n ? watchPaths.map((v) => '\"' + v + '\"').join(' | ')\n : '\"' + watchPaths + '\"'\n }`,\n );\n\n const watcher = watch(watchPaths, {\n ignorePermissionErrors: true,\n ignored,\n });\n watcher.on('all', async (type, file) => {\n log(`Change detected: ${type} ${file}`);\n\n try {\n await watchFn();\n } catch (error) {\n logError(error);\n }\n });\n};\n","import {\n type Hook,\n type HookOption,\n isFunction,\n isObject,\n isString,\n log,\n logError,\n type NormalizedHookCommand,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport { parseArgsStringToArgv } from 'string-argv';\n\nexport const executeHook = async (\n name: Hook,\n commands: NormalizedHookCommand = [],\n args: string[] = [],\n) => {\n log(chalk.white(`Running ${name} hook...`));\n\n for (const command of commands) {\n try {\n if (isString(command)) {\n await executeCommand(command, args);\n } else if (isFunction(command)) {\n await command(args);\n } else if (isObject(command)) {\n await executeObjectCommand(command as HookOption, args);\n }\n } catch (error) {\n logError(error, `Failed to run ${name} hook`);\n }\n }\n};\n\nasync function executeCommand(command: string, args: string[]) {\n const [cmd, ..._args] = [...parseArgsStringToArgv(command), ...args];\n\n await execa(cmd, _args);\n}\n\nasync function executeObjectCommand(command: HookOption, args: string[]) {\n if (command.injectGeneratedDirsAndFiles === false) {\n args = [];\n }\n\n if (isString(command.command)) {\n await executeCommand(command.command, args);\n } else if (isFunction(command.command)) {\n await command.command();\n }\n}\n","import {\n createSuccessMessage,\n getFileInfo,\n getMockFileExtensionByTypeName,\n isRootKey,\n jsDoc,\n log,\n type NormalizedOptions,\n OutputMode,\n upath,\n writeSchemas,\n writeSingleMode,\n type WriteSpecsBuilder,\n writeSplitMode,\n writeSplitTagsMode,\n writeTagsMode,\n} from '@orval/core';\nimport chalk from 'chalk';\nimport execa, { type ExecaError } from 'execa';\nimport fs from 'fs-extra';\nimport uniq from 'lodash.uniq';\nimport type { InfoObject } from 'openapi3-ts/oas30';\nimport type { TypeDocOptions } from 'typedoc';\n\nimport { executeHook } from './utils';\n\nconst getHeader = (\n option: false | ((info: InfoObject) => string | string[]),\n info: InfoObject,\n): string => {\n if (!option) {\n return '';\n }\n\n const header = option(info);\n\n return Array.isArray(header) ? jsDoc({ description: header }) : header;\n};\n\nexport const writeSpecs = async (\n builder: WriteSpecsBuilder,\n workspace: string,\n options: NormalizedOptions,\n projectName?: string,\n) => {\n const { info = { title: '', version: 0 }, schemas, target } = builder;\n const { output } = options;\n const projectTitle = projectName || info.title;\n\n const specsName = Object.keys(schemas).reduce<\n Record<keyof typeof schemas, string>\n >((acc, specKey) => {\n const basePath = upath.getSpecName(specKey, target);\n const name = basePath.slice(1).split('/').join('-');\n\n acc[specKey] = name;\n\n return acc;\n }, {});\n\n const header = getHeader(output.override.header, info as InfoObject);\n\n if (output.schemas) {\n const rootSchemaPath = output.schemas;\n\n const fileExtension = ['tags', 'tags-split', 'split'].includes(output.mode)\n ? '.ts'\n : (output.fileExtension ?? '.ts');\n\n await Promise.all(\n Object.entries(schemas).map(([specKey, schemas]) => {\n const schemaPath = isRootKey(specKey, target)\n ? rootSchemaPath\n : upath.join(rootSchemaPath, specsName[specKey]);\n\n return writeSchemas({\n schemaPath,\n schemas,\n target,\n namingConvention: output.namingConvention,\n fileExtension,\n specsName,\n specKey,\n isRootKey: isRootKey(specKey, target),\n header,\n indexFiles: output.indexFiles,\n });\n }),\n );\n }\n\n let implementationPaths: string[] = [];\n\n if (output.target) {\n const writeMode = getWriteMode(output.mode);\n implementationPaths = await writeMode({\n builder,\n workspace,\n output,\n specsName,\n header,\n needSchema: !output.schemas && output.client !== 'zod',\n });\n }\n\n if (output.workspace) {\n const workspacePath = output.workspace;\n const imports = implementationPaths\n .filter(\n (path) =>\n !output.mock ||\n !path.endsWith(`.${getMockFileExtensionByTypeName(output.mock)}.ts`),\n )\n .map((path) =>\n upath.relativeSafe(\n workspacePath,\n getFileInfo(path).pathWithoutExtension,\n ),\n );\n\n if (output.schemas) {\n imports.push(\n upath.relativeSafe(workspacePath, getFileInfo(output.schemas).dirname),\n );\n }\n\n if (output.indexFiles) {\n const indexFile = upath.join(workspacePath, '/index.ts');\n\n if (await fs.pathExists(indexFile)) {\n const data = await fs.readFile(indexFile, 'utf8');\n const importsNotDeclared = imports.filter((imp) => !data.includes(imp));\n await fs.appendFile(\n indexFile,\n uniq(importsNotDeclared)\n .map((imp) => `export * from '${imp}';\\n`)\n .join(''),\n );\n } else {\n await fs.outputFile(\n indexFile,\n uniq(imports)\n .map((imp) => `export * from '${imp}';`)\n .join('\\n') + '\\n',\n );\n }\n\n implementationPaths = [indexFile, ...implementationPaths];\n }\n }\n\n if (builder.extraFiles.length > 0) {\n await Promise.all(\n builder.extraFiles.map(async (file) =>\n fs.outputFile(file.path, file.content),\n ),\n );\n\n implementationPaths = [\n ...implementationPaths,\n ...builder.extraFiles.map((file) => file.path),\n ];\n }\n\n const paths = [\n ...(output.schemas ? [getFileInfo(output.schemas).dirname] : []),\n ...implementationPaths,\n ];\n\n if (options.hooks.afterAllFilesWrite) {\n await executeHook(\n 'afterAllFilesWrite',\n options.hooks.afterAllFilesWrite,\n paths,\n );\n }\n\n if (output.prettier) {\n try {\n await execa('prettier', ['--write', ...paths]);\n } catch {\n log(\n chalk.yellow(\n `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}Globally installed prettier not found`,\n ),\n );\n }\n }\n\n if (output.biome) {\n try {\n await execa('biome', ['check', '--write', ...paths]);\n } catch (error) {\n const errorExeca = error as ExecaError;\n const message =\n errorExeca.exitCode === 1\n ? errorExeca.stdout + errorExeca.stderr\n : `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}biome not found`;\n\n log(chalk.yellow(message));\n }\n }\n\n if (output.docs) {\n try {\n let config: Partial<TypeDocOptions> = {};\n let configPath: string | null = null;\n if (typeof output.docs === 'object') {\n ({ configPath = null, ...config } = output.docs);\n if (configPath) {\n config.options = configPath;\n }\n }\n\n const getTypedocApplication = async () => {\n const { Application } = await import('typedoc');\n return Application;\n };\n\n const Application = await getTypedocApplication();\n const app = await Application.bootstrapWithPlugins({\n entryPoints: paths,\n theme: 'markdown',\n // Set the custom config location if it has been provided.\n ...config,\n plugin: ['typedoc-plugin-markdown', ...(config.plugin ?? [])],\n });\n // Set defaults if the have not been provided by the external config.\n if (!app.options.isSet('readme')) {\n app.options.setValue('readme', 'none');\n }\n if (!app.options.isSet('logLevel')) {\n app.options.setValue('logLevel', 'None');\n }\n const project = await app.convert();\n if (project) {\n await app.generateDocs(project, app.options.getValue('out') as string);\n } else {\n throw new Error('TypeDoc not initialized');\n }\n } catch (error) {\n const message =\n error instanceof Error\n ? error.message\n : `⚠️ ${projectTitle ? `${projectTitle} - ` : ''}Unable to generate docs`;\n\n log(chalk.yellow(message));\n }\n }\n\n createSuccessMessage(projectTitle);\n};\n\nconst getWriteMode = (mode: OutputMode) => {\n switch (mode) {\n case OutputMode.SPLIT: {\n return writeSplitMode;\n }\n case OutputMode.TAGS: {\n return writeTagsMode;\n }\n case OutputMode.TAGS_SPLIT: {\n return writeSplitTagsMode;\n }\n case OutputMode.SINGLE:\n default: {\n return writeSingleMode;\n }\n }\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\nimport url from 'node:url';\n\nimport {\n asyncReduce,\n type ConfigExternal,\n ErrorWithTag,\n getFileInfo,\n type GlobalOptions,\n isFunction,\n isString,\n log,\n logError,\n type NormalizedConfig,\n type NormalizedOptions,\n removeFilesAndEmptyFolders,\n} from '@orval/core';\n\nimport { importSpecs } from './import-specs';\nimport { normalizeOptions } from './utils/options';\nimport { startWatcher } from './utils/watcher';\nimport { writeSpecs } from './write-specs';\n\nexport const generateSpec = async (\n workspace: string,\n options: NormalizedOptions,\n projectName?: string,\n) => {\n if (options.output.clean) {\n const extraPatterns = Array.isArray(options.output.clean)\n ? options.output.clean\n : [];\n\n if (options.output.target) {\n await removeFilesAndEmptyFolders(\n ['**/*', '!**/*.d.ts', ...extraPatterns],\n getFileInfo(options.output.target).dirname,\n );\n }\n if (options.output.schemas) {\n await removeFilesAndEmptyFolders(\n ['**/*', '!**/*.d.ts', ...extraPatterns],\n getFileInfo(options.output.schemas).dirname,\n );\n }\n log(`${projectName ? `${projectName}: ` : ''}Cleaning output folder`);\n }\n\n const writeSpecBuilder = await importSpecs(workspace, options);\n await writeSpecs(writeSpecBuilder, workspace, options, projectName);\n};\n\nexport const generateSpecs = async (\n config: NormalizedConfig,\n workspace: string,\n projectName?: string,\n) => {\n if (projectName) {\n const options = config[projectName];\n\n if (options) {\n try {\n await generateSpec(workspace, options, projectName);\n } catch (error) {\n const errorMsg =\n error instanceof Error ? error.message : 'unknown error';\n throw new ErrorWithTag(errorMsg, projectName, { cause: error });\n }\n } else {\n throw new Error('Project not found');\n }\n return;\n }\n\n let hasErrors: true | undefined;\n for (const [projectName, options] of Object.entries(config)) {\n if (!options) {\n hasErrors = true;\n logError('No options found', projectName);\n continue;\n }\n try {\n await generateSpec(workspace, options, projectName);\n } catch (error) {\n hasErrors = true;\n logError(error, projectName);\n }\n }\n\n if (hasErrors)\n throw new Error('One or more project failed, see above for details');\n};\n\nfunction findConfigFile(configFilePath?: string) {\n if (configFilePath) {\n if (!fs.existsSync(configFilePath))\n throw new Error(`Config file ${configFilePath} does not exist`);\n\n return configFilePath;\n }\n\n const root = process.cwd();\n const exts = ['.ts', '.js', '.mjs', '.cjs'];\n for (const ext of exts) {\n const fullPath = path.resolve(root, `orval.config${ext}`);\n if (fs.existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n throw new Error(`No config file found in ${root}`);\n}\n\nexport const generateConfig = async (\n configFile?: string,\n options?: GlobalOptions,\n) => {\n const configFilePath = findConfigFile(configFile);\n let configExternal: ConfigExternal;\n try {\n const importPath = url.pathToFileURL(configFilePath).href;\n const importedModule = (await import(importPath)) as {\n default?: ConfigExternal;\n };\n if (importedModule.default === undefined) {\n throw new Error(`${configFilePath} doesn't have a default export`);\n }\n configExternal = importedModule.default;\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'unknown error';\n throw new Error(`failed to load from ${configFilePath} => ${errorMsg}`);\n }\n\n const workspace = path.dirname(configFilePath);\n\n const config = await (isFunction(configExternal)\n ? configExternal()\n : configExternal);\n\n const normalizedConfig = await asyncReduce(\n Object.entries(config),\n async (acc, [key, value]) => {\n acc[key] = await normalizeOptions(value, workspace, options);\n\n return acc;\n },\n {} as NormalizedConfig,\n );\n\n const fileToWatch = Object.entries(normalizedConfig)\n .filter(\n ([project]) =>\n options?.projectName === undefined || project === options.projectName,\n )\n .map(([, options]) => options?.input.target)\n .filter((target) => isString(target)) as string[];\n\n await (options?.watch && fileToWatch.length > 0\n ? startWatcher(\n options.watch,\n () => generateSpecs(normalizedConfig, workspace, options.projectName),\n fileToWatch,\n )\n : generateSpecs(normalizedConfig, workspace, options?.projectName));\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAM,iBAAiBA,0BAAa;AAEpC,MAAM,sBACJ,cACA,WACG;CACH,MAAMC,mBAAqC;EACzC,kCAAa,EAAE,MAAM,SAAS,CAAC,EAAE;EACjC,8CAAyB,EAAE,MAAM,mBAAmB,CAAC,EAAE;EACvD,uCAAkB,EAAE;EACpB,0CAAqB;GAAE;GAAQ,MAAM;GAAe,CAAC,EAAE;EACvD,2CAAsB;GAAE;GAAQ,MAAM;GAAgB,CAAC,EAAE;EACzD,wCAAmB;GAAE;GAAQ,MAAM;GAAa,CAAC,EAAE;EACnD,+BAAU,EAAE;EACZ,+BAAU,EAAE;EACZ,iCAAY,EAAE;EACd,mCAAoB,EAAE;EACtB,+BAAU,EAAE;EACb;CAED,MAAM,yCAAuB,aAAa,GACtC,aAAa,iBAAiB,GAC9B,iBAAiB;AAErB,KAAI,CAAC,UACH,OAAM,IAAI,MAAM,iCAAiC,eAAe;AAGlE,QAAO;;AAGT,MAAaC,yBAAiD,EAC5D,SAAS,gBACT,gBACA,SACA,WACA,cACA,gCACA,kBACA,gBACA,4BACA,aACA,aACI;CACJ,MAAM,EAAE,iCAAiB,mBAAmB,QAAQ,OAAO;AAC3D,oDACE,gBACAC,iBACI,CACE,GAAGA,eACD,kBACA,4BACA,aACA,OAAO,YACP,gBACA,OAAO,SACR,EACD,GAAG,QACJ,GACD,SACJ,WACA,cACA,+BACD;;AAGH,MAAaC,wBAA+C,EAC1D,eAAe,gBACf,kBACA,iBACA,WACA,WACA,gBACA,QACA,QACA,aACA,KACA,2BACI;CACJ,MAAM,EAAE,WAAW,mBAAmB,cAAc,OAAO;AAC3D,QAAO;EACL,gBAAgB,SACZ,OAAO;GACL,OAAO,OAAO;GACd;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,GACF;EACJ,oBAAoB,gBAAgB,OAAO,mBAAmB;EAC/D;;AAGH,MAAaC,wBAA+C,EAC1D,eAAe,gBACf,gBACA,YACA,gBACA,QACA,aACI;CACJ,MAAM,EAAE,WAAW,mBAAmB,cAAc,OAAO;AAE3D,KAAI,CAAC,OACH,QAAO;EACL,gBAAgB;EAChB,oBAAoB;EACrB;CAGH,IAAIC;AACJ,KAAI;AACF,mCAAe,aAAa,EAAE;AAC5B,oBAAkB,OAChB,eACD;AAED,WAAQ,KACN,mNACD;QAED,kBAAiB,OAAO;GACtB;GACA,OAAO,OAAO;GACd;GACA;GACD,CAAC;SAEE;AACN,mBAAiB,OAAO;GACtB;GACA,OAAO,OAAO;GACd;GACA;GACD,CAAC;;AAGJ,QAAO;EACL;EACA,oBAAoB;EACrB;;AAGH,MAAaC,uBAA6C,EACxD,eAAe,gBACf,OACA,iBACA,aACI;CACJ,MAAM,EAAE,OAAO,mBAAmB,mBAAmB,cAAc,OAAO;AAE1E,KAAI,CAAC,eACH,QAAO;EACL,gBAAgB;EAChB,oBAAoB,+BAAa,MAAM,CAAC;EACzC;AAGH,KAAI,iBAAiB;EACnB,MAAM,cAAc,gBAAgB,MAAM;AAC1C,SAAO;GACL,gBAAgB,eAAe,YAAY;GAC3C,oBAAoB,+BAAa,YAAY,CAAC;GAC/C;;AAEH,QAAO;EACL,gBAAgB,eAAe,MAAM;EACrC,oBAAoB,+BAAa,MAAM,CAAC;EACzC;;AAGH,MAAM,gBACJ,YACA,YAC+B;AAC/B,KAAI,CAAC,QAAQ,KACX,QAAO;EACL,gBAAgB;GACd,UAAU;GACV,SAAS;GACT,aAAa;GACd;EACD,SAAS,EAAE;EACZ;AAGH,kCAAe,QAAQ,KAAK,CAC1B,QAAO,QAAQ,KAAK,YAAY,QAAQ;AAG1C,QAAOC,aAAK,aACV,YACA,QAGD;;AAGH,MAAa,sBACX,eAAgD,gBAChD,cACA,SACA,WACiC;AACjC,sCACE,cACA,OAAO,KAAK,eAAe;EACzB,MAAM,EAAE,QAAQ,oBAAoB,mBAClC,cACA,OACD;EACD,MAAM,SAAS,MAAM,gBAAgB,YAAY,SAAS,aAAa;AAEvE,MAAI,CAAC,OAAO,eACV,QAAO;EAGT,MAAM,gBAAgB,aAAa,YAAY,QAAQ;AAEvD,MAAI,WAAW,eAAe;GAC5B,gBAAgB,WAAW,MAAM,OAAO;GACxC,SAAS,OAAO;GAChB,oBAAoB,cAAc;GAClC,aAAa,cAAc;GAC3B,MAAM,WAAW;GACjB,SAAS,WAAW;GACpB,gBAAgB,OAAO;GACvB,UAAU,WAAW;GACrB,gBAAgB,WAAW;GAC3B,kBAAkB,WAAW;GAC7B,eAAe,WAAW;GAC1B,cAAc,WAAW;GAC1B;AAED,SAAO;IAET,EAAE,CACH;;AAGH,MAAa,sBACX,eAAgD,gBAChD,cACA,QACA,YACiC;CACjC,MAAM,EAAE,YAAYC,yBAAuB,mBACzC,cACA,OACD;AAED,KAAI,CAACA,qBACH,QAAO,QAAQ,QAAQ,EAAE,CAAC;AAG5B,QAAOA,qBAAmB,cAAc,QAAQ,QAAQ;;;;;ACzQ1D,MAAa,gBAAgB,OAAO,EAClC,OACA,QACA,cAKkC;CAClC,MAAM,MAAM,oCACV,OAAO,QAAQ,QAAQ,MAAM,QAAQ,SAAS,SAAS,EAAE,CAAC,EAC1D,OAAO,KAAK,CAAC,WAAW,WAAqC;EAC3D,MAAM,mCAAiB,UAAU;EAEjC,IAAI,gBAAgB;EACpB,IAAI,kBAAkB;AAEtB,oCAAgB,MAAM,EAAE;GACtB,MAAM,EAAE,QAAQ,yCAAuC,OAAO,QAAQ;AAEtE,mBAAgB;AAEhB,qBAAkB;IAChB,GAAG;IACH,GAAI,QAAQ,SAAS,IACjB,EACE,SAAS,QAAQ,GAAG,SACrB,GACD,EAAE;IACP;;EAGH,IAAI,eAAe,6CAA2B;GAC5C,OAAO;GACP;GACA;GACA;GACA;GACA,SAAS;GACV,CAAC;AAGF,MAAI,OAAO,SAAS,4BAA4B,MAC9C,gBAAe,aAAa,QAAQ,SAAS;AAC3C,UAAO,CAAC,KAAK;IACb;EAGJ,MAAM,UAAU,aAAa,QAC1B,OAAK,EAAE,aAAa,SAAS,MAAM,UAAU,YAAY;AACxD,OAAI,MACF,OAAI,KACF,GAAG,MAAM,SAAS,UAChB,MAAM,SAASC,4BAAe,oBAC1B,MAAM,SACN,EAAE,CACP,CACF;AAEH,OAAI,YACF,OAAI,KAAK,YAAY,QAAQ,GAAG,YAAY,KAAK;AAEnD,OAAI,QACF,OAAI,KAAK,QAAQ,QAAQ,GAAG,QAAQ,KAAK;AAG3C,SAAI,KAAK,GAAG,KAAK,SAAS,GAAG,SAAS,QAAQ;AAE9C,UAAOC;KAET,EAAE,CACH;EAED,MAAM,2CACJ,OACA,MAAM,WAAW,QAAQ,MAAM,QAAQ,SAAS,SAChD,OAAO,QACR;AACD,MAAI,CAAC,OAAO,OACV,OAAM,IAAI,MAAM,gCAAgC;EAElD,MAAM,iBAAiB,MAAM,mBAC3B,OAAO,QACP,cACA;GACE,OAAO;GACP;GACA,UAAU,OAAO;GACjB,SAAS;GACT,MAAM,OAAO;GACb,QAAQ,OAAO;GAChB,EACD,OACD;AAED,OAAK,MAAM,cAAc,aACvB,KAAI,YAAY,WAAW,eAAe;AAE5C,MAAI,QAAQ,KAAK,GAAG,QAAQ;AAC5B,MAAI,aAAa;GAAE,GAAG,IAAI;GAAY,GAAG;GAAgB;AAEzD,SAAO;IAET;EACE,YAAY,EAAE;EACd,aAAa,EAAE;EACf,SAAS,EAAE;EACZ,CACF;CAED,MAAM,aAAa,MAAM,mBACvB,OAAO,QACP,IAAI,aACJ,QACA,QACD;AAED,QAAO;EACL,YAAY,IAAI;EAChB,SAAS,IAAI;EACb,aAAa,IAAI;EACjB,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,aAAaC;EACb;EACD;;;;;AClIH,MAAa,gBAAgB,OAAO,EAClC,MACA,OACA,QACA,QACA,gBAC+C;CAC/C,MAAM,QAAQ,MAAM,mBAAmB;EAAE,OAAO;EAAM;EAAO;EAAW,CAAC;CAEzE,MAAM,UAAU,cAAc;EAAE;EAAO;EAAQ;EAAQ;EAAW;EAAO,CAAC;CAE1E,MAAM,MAAM,MAAM,cAAc;EAC9B;EACA;EACA,SAAS;GACP,SAAS;GACT;GACA;GACA;GACA;GACD;EACF,CAAC;AAEF,QAAO;EACL,GAAG;EACH,SAAS;GACP,GAAG;IACF,SAAS,CAAC,GAAI,QAAQ,WAAW,EAAE,EAAG,GAAG,IAAI,QAAQ;GACvD;EACD;EACA,MAAM,MAAM,QAAQ;EACrB;;AAGH,MAAM,qBAAqB,OAAO,EAChC,OACA,OACA,gBAK4C;CAC5C,MAAM,gBAAgB,MAAM,UAAU,cAClC,sCAAoB,MAAM,SAAS,aAAa,UAAU,GAC1D;AAEJ,sCACE,OAAO,QAAQ,MAAM,EACrB,OAAO,KAAK,CAAC,SAAS,WAAW;EAC/B,MAAM,SAAS,yCACb,OACA,MAAM,kBACN,QACD;EAED,MAAM,mBAAmB,gBAAgB,cAAc,OAAO,GAAG;AAEjE,MAAI,MAAM,WACR,6CAA0B,kBAAkB,MAAM,WAAW;AAG/D,MAAI,WAAW;AAEf,SAAO;IAET,EAAE,CACH;;AAGH,MAAM,iBAAiB,EACrB,OACA,QACA,QACA,WACA,YAOI;AACJ,QAAO,OAAO,QAAQ,MAAM,CAAC,QAC1B,KAAK,CAAC,SAAS,UAAU;EACxB,MAAMC,UAAwB;GAC5B;GACA;GACA;GACA;GACA;GACD;EAED,MAAM,gBAAgB,KAAK,UACtB,KAAK,YAAY,UAClB,cAAc,MAAM,QAAQ;EAEhC,MAAM,+DACJ,eACA,SACA,OAAO,SAAS,WAAW,QAAQ,QACnC,MAAM,QACP;EAED,MAAM,mEACJ,KAAK,YAAY,WACjB,SACA,OAAO,SAAS,WAAW,UAAU,OACtC;EAED,MAAM,+DACJ,KAAK,YAAY,eACjB,SACA,OAAO,SAAS,WAAW,cAAc,OAC1C;EAED,MAAM,2DACJ,KAAK,YAAY,YACjB,SACA,OAAO,SAAS,WAAW,WAAW,OACvC;EAED,MAAM,UAAU;GACd,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACJ;AAED,MAAI,QAAQ,WAAW,EACrB,QAAO;AAGT,MAAI,WAAW;AAEf,SAAO;IAET,EAAE,CACH;;AAGH,MAAM,iBAAiB,MAAc,YAAoC;CACvE,MAAM,aAAa,IAAI,IAAI;EACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,cAAc,OAAO,YACzB,OAAO,QAAQ,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,CAC7D;AAED,KAAI,sCAAoB,YAAY,EAAE;EACpC,MAAMC,SAAOC,mBAAM,kBAAkB,QAAQ;EAE7C,MAAM,uBAAuB,IAAI,IAAI;GACnC;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;AAEF,SAAO;IACJD,SAAO;GACR,GAAG,cACD,OAAO,YACL,OAAO,QAAQ,YAAY,CAAC,QACzB,CAAC,SAAS,CAAC,qBAAqB,IAAI,IAAI,CAC1C,CACF,CACF;GACF;;AAoBH,QAAO;EACL,GAlBc,OAAO,QAAQ,YAAY,CAAC,QACzC,KAAK,CAAC,KAAK,WAAW;AACrB,OAAI,4BAAU,MAAM,CAClB,QAAO;AAGT,OAAI,4BAAU,MAAM,IAAI,+BAAa,MAAM,CACzC,QAAO;IAAE,GAAG;IAAK,GAAG,cAAc,MAAM;IAAE;AAG5C,OAAI,OAAO;AAEX,UAAO;KAET,EAAE,CACH;EAIC,GAAK,MAAwB,YAAY;EAC1C;;;;;ACjNH,MAAM,eAAe,OACnB,QACA,EAAE,SAAU,GAAG,WACf,QACA,iBACG;AACH,KAAI;AACF,MAAI,SACF,KAAI;AACF,SAAME,qCAAc,SAASC,QAAM,QAAQ;WACpC,OAAO;AACd,OAAI,iBAAiB,SAAS,MAAM,SAAS,cAC3C,OAAM;AAGR,OAAI,CAAC,aACH,uBAAI,OAAO,cAAM,OAAO,MAAM,GAAG;;EAKvC,MAAM,QAAQ,MAAMD,qCAAc,QAAQC,QAAM,QAAQ,EAAE,QAAQ;AAElE,MAAI,OACF,QAAO;AAIT,SAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,CACjB,MAAM,CACN,KAAK,CAAC,KAAK,WAAW,yBAAO,IAAI,GAAG,MAAMC,mBAAM,QAAQ,IAAI,EAAE,MAAM,CAAC,CACzE;SACK;EACN,MAAM,OAAO,MAAMC,iBAAG,SAASF,QAAM,OAAO;AAE5C,SAAO,GACJA,SAAOG,gBAAK,KAAK,KAAK,EACxB;;;AAIL,MAAa,cAAc,OACzB,WACA,YAC+B;CAC/B,MAAM,EAAE,OAAO,WAAW;AAE1B,KAAI,4BAAU,MAAM,OAAO,CACzB,QAAO,cAAc;EACnB,MAAM,GAAG,YAAY,MAAM,QAAQ;EACnC;EACA;EACA,QAAQ;EACR;EACD,CAAC;CAGJ,MAAM,oCAAkB,MAAM,OAAO;CAErC,MAAM,OAAO,MAAM,aACjB,MAAM,QACN,MAAM,eACN,WACA,CAAC,OAAO,OACT;AAED,QAAO,cAAc;EACnB;EACA;EACA;EACA,QAAQ,MAAM;EACd;EACD,CAAC;;;;;WCxFM;kBACO;cACJ;cACA;YACF,CACP,QACA,sBACD;UACM;WACC;gBACG,EACT,KAAK;CACH,SAAS;CACT,WAAW;CACZ,EACF;cACU,EACT,QAAQ,aACT;eACW;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;aACS;CACR,QAAQ;CACR,SAAS;CACV;iBACa;CACZ,QAAQ;CACR,OAAO;CACR;cACU;CACT,SAAS;CACT,OAAO;CACP,QAAQ;CACR,gBAAgB;CAChB,QAAQ;CACR,SAAS;CACT,QAAQ;CACT;sBACkB;CACjB,mBAAmB;CACnB,kBAAkB;CAClB,sBAAsB;CACtB,UAAU;CACV,iBAAiB;CACjB,UAAU;CACV,UAAU;CACV,cAAc;CACd,UAAU;CACX;mBACe;CACd,+BAA+B;CAC/B,+BAA+B;CAC/B,kBAAkB;CAClB,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,SAAS;CACT,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,SAAS;CACT,WAAW;CACX,YAAY;CACZ,WAAW;CACX,eAAe;CACf,eAAe;CACf,eAAe;CACf,YAAY;CACZ,WAAW;CACX,2BAA2B;CAC3B,2BAA2B;CAC5B;sBApGH;;;;;;;;;;;;;;;;CAqGC;;;;AC5FD,MAAa,WACX,YACA,SACyB;AACzB,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,MAAMC,mBAAM,QAAQ,aAAa,QAAQ;GAC7C,IAAI,OAAO;AACX,OAAI,GAAG,SAAS,UAAW,QAAQ,MAAM,UAAU,CAAE;AACrD,OAAI,GAAG,SAAS,OAAO;AACvB,OAAI,GAAG,aAAa;IAClB,MAAM,WAAW;KACf,QAAQ,IAAI;KACZ,SAAS,IAAI;KACb,MAAM,KAAK,MAAM,KAAK;KACvB;AACD,QAAI,IAAI,cAAc,IAAI,cAAc,OAAO,IAAI,cAAc,IAC/D,SAAQ,SAAS;QAEjB,QAAO,SAAS;KAElB;IACF;AACF,MAAI,GAAG,SAAS,OAAO;AACvB,MAAI,KACF,KAAI,MAAM,MAAM,SAAS;AAE3B,MAAI,KAAK;GACT;;;;;AC3BJ,MAAa,oBAAoB,EAC/B,aACA,MACA,OACA,QACA,mBAOoC;CACpC,MAAM,UAAU,KAAK,UAAU,EAC7B,OAAO;0BACe,KAAK,aAAa,MAAM;8BACpB,OAAO,GAAGC,OAAK;;;;;;QAO1C,CAAC;AAEF,QAAO,CACL;EACE,QAAQ;EACR,UAAU;EACV,MAAM;EACN,SAAS;GACP,gBAAgB;GAChB,cAAc;GACd,eAAe,UAAU;GACzB,kBAAkB,QAAQ;GAC3B;EACF,EACD,QACD;;AAGH,IAAIC,cAA6B;AAEjC,MAAa,sBAAsB,OAAO,oBAA4B;AACpE,KAAI,YACF,QAAO;AAGT,KAAI,MAAMC,iBAAG,WAAW,gBAAgB,CACtC,QAAOA,iBAAG,SAAS,iBAAiB,OAAO;MACtC;EACL,MAAM,UAAU,2BAGb,CACD;GACE,MAAM;GACN,MAAM;GACN,SACE;GACH,EACD;GACE,MAAM;GACN,MAAM;GACN,SACE;GACH,CACF,CAAC;AAEF,gBAAc,QAAQ;AAEtB,MAAI,QAAQ,UACV,OAAMA,iBAAG,WAAW,iBAAiB,QAAQ,YAAY;AAE3D,SAAO,QAAQ;;;AAInB,MAAa,mBAAmB,OAAO,UAAiC;CACtE,MAAM,kBAAkBC,mBAAM,KAAK,WAAW,eAAe;CAC7D,MAAM,cAAc,MAAM,oBAAoB,gBAAgB;CAC9D,MAAM,CAAC,QAAQC,MAAI,MAAM,cAAc,CAAC,MAAM,GAAG;CAEjD,MAAM,CAAC,OAAO,QAAQ,QAAQ,GAAG,SAAS,KAAK,MAAM,IAAI;CACzD,MAAMJ,SAAO,MAAM,KAAK,IAAI;AAE5B,KAAI;EACF,MAAM,EAAE,SAAS,MAAM,QAGpB,GAAG,iBAAiB;GAAE;GAAa;GAAM;GAAO;GAAQ;GAAM,CAAC,CAAC;AACnE,MAAI,KAAK,QAAQ,QAKf;OAJ0B,KAAK,QAAQ,MACpC,UAAU,OAAO,SAAS,YAC5B,EAWC;SARgB,2BAAuC,CACrD;KACE,MAAM;KACN,MAAM;KACN,SACE;KACH,CACF,CAAC,EACU,YACV,OAAME,iBAAG,OAAO,gBAAgB;;;AAKtC,SAAO,KAAK,MAAM,YAAY,OAAO;UAC9BG,OAAY;AACnB,MAAI,CAAC,MAAM,KACT,OAAM,IAAI,MAAM,eAAe,QAAQ;AAGzC,MAAI,MAAM,KAAK,YAAY,mBASzB;QARgB,2BAAuC,CACrD;IACE,MAAM;IACN,MAAM;IACN,SACE;IACH,CACF,CAAC,EACU,YACV,OAAMH,iBAAG,OAAO,gBAAgB;;AAGpC,QAAM,IAAI,MAAM,MAAM,KAAK,WAAW,eAAe,QAAQ;;;AAIjE,MAAa,iBAAiB;CAC5B,OAAO;CACP,QAAQ,MAA8B;AACpC,SAAO,KAAK,IAAI,SAAS,aAAa;;CAGxC,KAAK,MAA8B;AACjC,SAAO,iBAAiB,KAAK,IAAI;;CAEpC;;;;AChJD,MAAa,kBAAkB,OAC7B,aACA,YAAY,QAAQ,KAAK,KACY;AACrC,KAAI,CAAC,aAAa;EAChB,MAAM,UAAU,2BAAa,CAAC,eAAe,EAAE,EAAE,KAAK,WAAW,CAAC;AAClE,MAAI,SAAS;GACX,MAAM,MAAM,sCAA6B,SAAS,UAAU;AAE5D,OAAI,cAAc,IAAI,CACpB,QAAO,MAAM,oBAAoB,KAAK,UAAU;OAEhD,OAAM,IAAI,MAAM,4BAA4B;;AAGhD;;CAGF,MAAM,iBAAiB,cAAc,aAAa,UAAU;AAC5D,KAAII,iBAAG,WAAW,eAAe,EAAE;EACjC,MAAM,MAAM,sCAA6B,eAAe;AAExD,MAAI,cAAc,IAAI,CACpB,QAAO,MAAM,oBAAoB,KAAK,UAAU;MAEhD,OAAM,IAAI,MAAM,8BAA8B,iBAAiB;;;AAMrE,MAAM,iBAAiB,QACrB,OAAO,QAAQ,YAAY,QAAQ;AAErC,MAAM,sBAAsB,OAC1B,KACA,cACyB;AACzB,KACE,CAAC;EACC,GAAG,OAAO,QAAQ,IAAI,gBAAgB,EAAE,CAAC;EACzC,GAAG,OAAO,QAAQ,IAAI,mBAAmB,EAAE,CAAC;EAC5C,GAAG,OAAO,QAAQ,IAAI,oBAAoB,EAAE,CAAC;EAC9C,CAAC,MAAM,GAAG,sCAAoB,MAAM,IAAI,MAAM,WAAW,WAAW,CAAC,CAEtE,QAAO;CAGT,MAAM,WAAW,2BAAa,uBAAuB,EAAE,KAAK,WAAW,CAAC;AACxE,KAAI,CAAC,UAAU;AACb,wBACE,OAAO,cAAM,OAAO,6FAA6F,GAClH;AACD,SAAO;;CAET,MAAM,OAAO,MAAMA,iBAAG,SAAS,UAAU,OAAO;CAEhD,MAAM,oBAAoBC,gBAAK,KAAK,KAAK;AACzC,qBAAoB,IAAI,cAAc,kBAAkB;AACxD,qBAAoB,IAAI,iBAAiB,kBAAkB;AAC3D,qBAAoB,IAAI,kBAAkB,kBAAkB;AAE5D,QAAO;;AAGT,MAAM,uBACJ,gBACA,sBACG;AACH,KAAI,CAACC,eAAc;AACnB,MAAK,MAAM,CAAC,aAAaC,cAAY,OAAO,QAAQD,eAAa,CAC/D,KAAIC,cAAY,cAAcA,cAAY,mBAAmB;AAC3D,MAAI,CAAC,kBAAkB,SAAS;AAC9B,yBACE,OAAO,cAAM,OAAO,iFAAiF,YAAY,4CAA4C,GAC9J;AACD;;EAEF,MAAM,MAAM,kBAAkB,QAAQ;AACtC,MAAI,CAAC,KAAK;AACR,yBACE,OAAO,cAAM,OAAO,iFAAiF,YAAY,oEAAoE,GACtL;AACD;;AAEF,iBAAa,eAAe;YACnBA,UAAQ,WAAW,WAAW,EAAE;EACzC,MAAM,cAAcA,UAAQ,MAAM,EAAkB;EACpD,MAAM,UAAU,kBAAkB,WAAW;AAC7C,MAAI,CAAC,SAAS;AACZ,yBACE,OAAO,cAAM,OAAO,2CAA2CA,UAAQ,kCAAkC,YAAY,oDAAoD,YAAY,oCAAoC,OAAO,KAAK,kBAAkB,YAAY,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,GACtR;AACD;;EAEF,MAAM,MAAM,QAAQ;AACpB,MAAI,CAAC,KAAK;AACR,yBACE,OAAO,cAAM,OAAO,2CAA2CA,UAAQ,kCAAkC,YAAY,0DAA0D,YAAY,mCAAmC,OAAO,KAAK,QAAQ,CAAC,KAAK,KAAK,CAAC,GAAG,GAClQ;AACD;;AAEF,iBAAa,eAAe;;;;;;ACvGlC,MAAa,eAAe,OAC1B,UACA,YAAY,QAAQ,KAAK,KACS;AAClC,mCAAgB,SAAS,EAAE;EACzB,MAAM,aAAa,2BAAa,CAAC,iBAAiB,gBAAgB,EAAE,EAClE,KAAK,WACN,CAAC;AACF,MAAI,WAEF,SADe,0BAAY,WAAW,EACxB;AAEhB;;AAGF,gCAAa,SAAS,EAAE;EACtB,MAAM,iBAAiB,cAAc,UAAU,UAAU;AACzD,MAAIC,iBAAG,WAAW,eAAe,EAAE;GACjC,MAAM,SAAS,0BAAY,eAAe;AAO1C,UAJE,OAAO,YAAY,MAChB,EAAE,mBAAmB,iBAAiB,eACxC,EAAE,YAAY,OAAO;;AAI1B;;AAGF,gCAAa,SAAS,CACpB,QAAO;;;;;ACtCX,MAAa,eAAe,EAC1B,iBAAiB,OAClB;;;;;;;;ACqDD,SAAgB,aAAa,SAAyC;AACpE,QAAO;;AAGT,MAAM,kBACJ,WACA,aACyC;CACzC,MAAM,uBAAuBC,mCAAsB;AACnD,KAAI,aAAa,OACf,QAAO;EAAE,UAAU;EAAO,eAAe;EAAsB;AACjE,iCAAc,SAAS,CACrB,QAAO;EAAE,UAAU,CAAC;EAAU,eAAe;EAAsB;AACrE,gCAAa,SAAS,CACpB,QAAO;EACL,UAAU;EACV,SAAS,iBAAiB,WAAW,SAAS;EAC9C,eAAe;EAChB;AACH,KAAI,aAAa,YAAY,mBAAmB,SAC9C,QAAO;EACL,UAAU;EACV,SAAS,iBAAiB,WAAW,SAAS,QAAQ;EACtD,eAAe,SAAS,iBAAiB;EAC1C;AACH,QAAO;EACL,UAAU;EACV,SAAS,iBAAiB,WAAW,SAAS;EAC9C,eAAe;EAChB;;AAGH,MAAa,mBAAmB,OAC9B,eACA,YAAY,QAAQ,KAAK,EACzB,gBAA+B,EAAE,KAC9B;CACH,MAAM,UAAU,oCAAkB,cAAc,GAC5C,eAAe,GACf;AAEJ,KAAI,CAAC,QAAQ,MACX,OAAM,IAAI,MAAM,cAAM,IAAI,0BAA0B,CAAC;AAGvD,KAAI,CAAC,QAAQ,OACX,OAAM,IAAI,MAAM,cAAM,IAAI,2BAA2B,CAAC;CAGxD,MAAM,0CAAwB,QAAQ,MAAM,GACxC,EAAE,QAAQ,QAAQ,OAAO,GACzB,QAAQ;CAEZ,MAAM,2CAAyB,QAAQ,OAAO,GAC1C,EAAE,QAAQ,QAAQ,QAAQ,GAC1B,QAAQ;CAEZ,MAAM,kBAAkB,cACtB,cAAc,aAAa,IAC3B,UACD;CAED,MAAM,EAAE,OAAO,UAAU,QAAQ,YAAY,MAAM,UAAU;CAE7D,MAAM,WAAW,MAAM,aACrB,cAAc,YAAY,cAAc,UACxC,UACD;CAED,MAAM,cAAc,MAAM,gBACxB,cAAc,eAAe,cAAc,aAC3C,UACD;CAED,MAAM,aAAa,cAAc,QAAQ,cAAc;CACvD,IAAIC;AACJ,KAAI,OAAO,eAAe,aAAa,WACrC,QAAOC;uCACa,WAAW,CAC/B,QAAO;UACE,WACT,QAAO;EACL,GAAGA;EACH,GAAG;EACJ;KAED,QAAO;CAGT,MAAM,uBAAuB;CAE7B,MAAMC,qBAA6C;EACjD,UAAU;EACV,aAAa;EACb,QAAQ;EACR,0BAA0B;EAC1B,wBAAwB;EACxB,sBAAsB;EACtB,qBAAqB;EACrB,GAAG,sBAAsB,cAAc,UAAU,OAAO,UAAU;EACnE;CAED,MAAMC,oBAAuC;EAC3C,OAAO;GACL,QAAQ,cAAc,QAClB,mBAAmB,cAAc,OAAO,QAAQ,KAAK,CAAC,GACtD,mBAAmB,aAAa,QAAQ,UAAU;GACtD,YAAY,aAAa,cAAc;GACvC,UAAU,EACR,aAAa,cACX,aAAa,UAAU,aACvB,UACD,EACF;GACD,kBAAkB,aAAa,oBAAoB,EAAE;GACrD,2CACE,sBACA,aAAa,iBAAiB,EAAE,CACjC;GACD,SAAS,aAAa;GACvB;EACD,QAAQ;GACN,QAAQ,cAAc,SAClB,cAAc,cAAc,QAAQ,QAAQ,KAAK,CAAC,GAClD,cAAc,cAAc,QAAQ,gBAAgB;GACxD,SAAS,cAAc,cAAc,SAAS,gBAAgB;GAC9D,kBACE,cAAc,oBAAoBC,8BAAiB;GACrD,eAAe,cAAc,iBAAiB;GAC9C,WAAW,cAAc,YAAY,kBAAkB;GACvD,QAAQ,cAAc,UAAU,UAAUC,0BAAa;GACvD,YACE,cAAc,cAAc,cAAcC,8BAAiB;GAC7D,MAAM,oBAAoB,cAAc,QAAQ,KAAK;GACrD;GACA,OAAO,cAAc,SAAS,SAAS;GACvC,MAAM,cAAc,QAAQ;GAC5B,UAAU,cAAc,YAAY,YAAY;GAChD,OAAO,cAAc,SAAS,SAAS;GACvC;GACA;GACA,SAAS,cAAc,WAAW;GAClC,YAAY,cAAc,cAAc;GACxC,SAAS,cAAc;GACvB,2BACE,cAAc,6BAA6B;GAC7C,UAAU;IACR,GAAG,cAAc;IACjB,MAAM;KACJ,UAAU,cAAc,UAAU,MAAM,YAAY;KACpD,UAAU,cAAc,UAAU,MAAM,YAAY;KACpD,WAAW,cAAc,UAAU,MAAM,aAAa;KACtD,WAAW,cAAc,UAAU,MAAM,aAAa;KACtD,gBAAgB,cAAc,UAAU,MAAM,kBAAkB;KAChE,GAAG,cAAc,UAAU;KAC5B;IACD,YAAY,2BACV,cAAc,UAAU,cAAc,EAAE,EACxC,iBACA,EACE,OAAO,oBACR,CACF;IACD,MAAM,2BACJ,cAAc,UAAU,QAAQ,EAAE,EAClC,iBACA,EACE,OAAO,oBACR,CACF;IACD,SAAS,iBACP,iBACA,cAAc,UAAU,QACzB;IACD,UAAU,eACR,iBACA,cAAc,UAAU,SACzB;IACD,6CACa,cAAc,UAAU,eAAe,GAC9C,cAAc,UAAU,iBACxB,iBACE,iBACA,cAAc,UAAU,eACzB,KAAK;IACZ,kBAAkB,iBAChB,iBACA,cAAc,UAAU,iBACzB;IACD,QACE,cAAc,UAAU,WAAW,QAC/B,qCACW,cAAc,UAAU,OAAO,GACxC,cAAc,UAAU,SACxB;IACR,gBAAgB,cAAc,UAAU,kBAAkB;IAC1D,kBAAkB,cAAc,UAAU,oBAAoB,EAAE;IAChE,YAAY;KACV,SAAS;MACP,QAAQC,gCAAmB;MAC3B,YACE,cAAc,UAAU,YAAY,SAAS,cAAc;MAC7D,GAAG,cAAc,UAAU,YAAY;MACxC;KACD,WAAW;MACT,QAAQA,gCAAmB;MAC3B,GAAG,cAAc,UAAU,YAAY;MACxC;KACD,YAAY;MACV,QAAQA,gCAAmB;MAC3B,GAAG,cAAc,UAAU,YAAY;MACxC;KACD,eAAe;MACb,QAAQA,gCAAmB;MAC3B,GAAG,cAAc,UAAU,YAAY;MACxC;KACF;IACD,MAAM,qBAAqB,cAAc,UAAU,MAAM,UAAU;IACnE,OAAO,sBAAsB,cAAc,UAAU,MAAM;IAC3D,OAAO;IACP,KAAK;KACH,QAAQ;MACN,OAAO,cAAc,UAAU,KAAK,QAAQ,SAAS;MACrD,OAAO,cAAc,UAAU,KAAK,QAAQ,SAAS;MACrD,QAAQ,cAAc,UAAU,KAAK,QAAQ,UAAU;MACvD,MAAM,cAAc,UAAU,KAAK,QAAQ,QAAQ;MACnD,UAAU,cAAc,UAAU,KAAK,QAAQ,YAAY;MAC5D;KACD,UAAU;MACR,OAAO,cAAc,UAAU,KAAK,UAAU,SAAS;MACvD,OAAO,cAAc,UAAU,KAAK,UAAU,SAAS;MACvD,QAAQ,cAAc,UAAU,KAAK,UAAU,UAAU;MACzD,MAAM,cAAc,UAAU,KAAK,UAAU,QAAQ;MACrD,UAAU,cAAc,UAAU,KAAK,UAAU,YAAY;MAC9D;KACD,QAAQ;MACN,OAAO,cAAc,UAAU,KAAK,QAAQ,SAAS;MACrD,OAAO,cAAc,UAAU,KAAK,QAAQ,SAAS;MACrD,QAAQ,cAAc,UAAU,KAAK,QAAQ,UAAU;MACvD,MAAM,cAAc,UAAU,KAAK,QAAQ,QAAQ;MACnD,UAAU,cAAc,UAAU,KAAK,QAAQ,YAAY;MAC5D;KACD,YAAY;MACV,GAAI,cAAc,UAAU,KAAK,YAAY,QACzC,EACE,OAAO,iBACL,WACA,cAAc,SAAS,IAAI,WAAW,MACvC,EACF,GACD,EAAE;MACN,GAAI,cAAc,UAAU,KAAK,YAAY,QACzC,EACE,OAAO,iBACL,WACA,cAAc,SAAS,IAAI,WAAW,MACvC,EACF,GACD,EAAE;MACN,GAAI,cAAc,UAAU,KAAK,YAAY,SACzC,EACE,QAAQ,iBACN,WACA,cAAc,SAAS,IAAI,WAAW,OACvC,EACF,GACD,EAAE;MACN,GAAI,cAAc,UAAU,KAAK,YAAY,OACzC,EACE,MAAM,iBACJ,WACA,cAAc,SAAS,IAAI,WAAW,KACvC,EACF,GACD,EAAE;MACN,GAAI,cAAc,UAAU,KAAK,YAAY,WACzC,EACE,UAAU,iBACR,WACA,cAAc,SAAS,IAAI,WAAW,SACvC,EACF,GACD,EAAE;MACP;KACD,wBACE,cAAc,UAAU,KAAK,0BAA0B;KACzD,iBAAiB,cAAc,UAAU,KAAK,mBAAmB,EAAE;KACnE,aAAa,cAAc,UAAU,KAAK,eAAe,EAAE;KAC5D;IACD,KAAK,EACH,GAAG,cAAc,UAAU,KAC5B;IACD,SAAS,EACP,WAAW,cAAc,UAAU,SAAS,aAAa,QAC1D;IACD,OAAO;KACL,+BACE,cAAc,UAAU,OAAO,iCAC/B;KACF,sBACE,cAAc,UAAU,OAAO,wBAAwB;KACzD,SAAS,cAAc,UAAU,OAAO,WAAW;KACnD,GAAG,cAAc,UAAU;KAC5B;IACD,UAAU,cAAc,UAAU,YAAY;IAC9C,yBACE,cAAc,UAAU,2BAA2B;IACrD,oBACG,cAAc,UAAU,kBAAkB,QACvC,SACC,cAAc,UAAU,sBAAsB;IACrD,0BACE,cAAc,UAAU,4BAA4B;IACvD;GACD,mBAAmB,cAAc,qBAAqB;GACtD,qBAAqB,cAAc,uBAAuB;GAC1D,sBAAsB,cAAc,wBAAwB;GAC5D,mBACE,cAAc,qBAAqBC,+BAAkB;GACxD;EACD,OAAO,QAAQ,QAAQ,eAAe,QAAQ,MAAM,GAAG,EAAE;EAC1D;AAED,KAAI,CAAC,kBAAkB,MAAM,OAC3B,OAAM,IAAI,MAAM,cAAM,IAAI,iCAAiC,CAAC;AAG9D,KAAI,CAAC,kBAAkB,OAAO,UAAU,CAAC,kBAAkB,OAAO,QAChE,OAAM,IAAI,MAAM,cAAM,IAAI,6CAA6C,CAAC;AAG1E,QAAO;;AAGT,MAAM,uBAAuB;CAC3B,UAAU;CACV,SAAS;EAAE,QAAQ;EAAgB,MAAM;EAAc;CACxD;AAED,MAAM,oBACJ,WACA,YACkC;AAClC,gCAAa,QAAQ,EAAE;AACrB,MAAI,CAAC,QAAQ,KACX,OAAM,IAAI,MAAM,cAAM,IAAI,sBAAsB,CAAC;AAGnD,SAAO;GACL,GAAG;GACH,MAAMC,mBAAM,QAAQ,WAAW,QAAQ,KAAK;GAC5C,UAAU,QAAQ,WAAW,CAAC,QAAQ,SAAS;GAChD;;AAGH,gCAAa,QAAQ,CACnB,QAAO;EACL,MAAMA,mBAAM,QAAQ,WAAW,QAAQ;EACvC,SAAS;EACV;AAGH,QAAO;;AAGT,MAAM,sBAAyB,QAAS,cAAsB;AAC5D,gCAAaC,OAAK,IAAI,yBAAOA,OAAK,CAChC,QAAO,cAAcA,QAAM,UAAU;AAGvC,QAAOA;;AAGT,MAAa,iBAAoB,QAAS,cAAsB;AAC9D,KAAI,4BAAUA,OAAK,CACjB,QAAOA;AAET,QAAOD,mBAAM,QAAQ,WAAWC,OAAK;;AAGvC,MAAM,8BACJ,kBACA,WACA,WAG+C;AAC/C,QAAO,OAAO,YACZ,OAAO,QAAQ,iBAAiB,CAAC,KAC9B,CACC,KACA,EACE,aACA,SACA,UACA,gBACA,kBACA,gBACA,WACA,GAAG,YAED;AACJ,SAAO,CACL,KACA;GACE,GAAG;GACH,GAAIC,UACA,EACE,OAAO,sBAAsBA,SAAO,WAAW,OAAO,MAAM,EAC7D,GACD,EAAE;GACN,GAAIC,QACA,EACE,KAAK;IACH,QAAQ;KACN,OAAOA,MAAI,QAAQ,SAAS;KAC5B,OAAOA,MAAI,QAAQ,SAAS;KAC5B,QAAQA,MAAI,QAAQ,UAAU;KAC9B,MAAMA,MAAI,QAAQ,QAAQ;KAC1B,UAAUA,MAAI,QAAQ,YAAY;KACnC;IACD,UAAU;KACR,OAAOA,MAAI,UAAU,SAAS;KAC9B,OAAOA,MAAI,UAAU,SAAS;KAC9B,QAAQA,MAAI,UAAU,UAAU;KAChC,MAAMA,MAAI,UAAU,QAAQ;KAC5B,UAAUA,MAAI,UAAU,YAAY;KACrC;IACD,QAAQ;KACN,OAAOA,MAAI,QAAQ,SAAS;KAC5B,OAAOA,MAAI,QAAQ,SAAS;KAC5B,QAAQA,MAAI,QAAQ,UAAU;KAC9B,MAAMA,MAAI,QAAQ,QAAQ;KAC1B,UAAUA,MAAI,QAAQ,YAAY;KACnC;IACD,YAAY;KACV,GAAIA,MAAI,YAAY,QAChB,EACE,OAAO,iBACL,WACAA,MAAI,WAAW,MAChB,EACF,GACD,EAAE;KACN,GAAIA,MAAI,YAAY,QAChB,EACE,OAAO,iBACL,WACAA,MAAI,WAAW,MAChB,EACF,GACD,EAAE;KACN,GAAIA,MAAI,YAAY,SAChB,EACE,QAAQ,iBACN,WACAA,MAAI,WAAW,OAChB,EACF,GACD,EAAE;KACN,GAAIA,MAAI,YAAY,OAChB,EACE,MAAM,iBACJ,WACAA,MAAI,WAAW,KAChB,EACF,GACD,EAAE;KACN,GAAIA,MAAI,YAAY,WAChB,EACE,UAAU,iBACR,WACAA,MAAI,WAAW,SAChB,EACF,GACD,EAAE;KACP;IACD,wBACEA,OAAK,0BAA0B;IACjC,iBAAiBA,OAAK,mBAAmB,EAAE;IAC3C,aAAaA,OAAK,eAAe,EAAE;IACpC,EACF,GACD,EAAE;GACN,GAAI,cACA,EAAE,aAAa,cAAc,aAAa,UAAU,EAAE,GACtD,EAAE;GACN,GAAI,UACA,EAAE,SAAS,iBAAiB,WAAW,QAAQ,EAAE,GACjD,EAAE;GACN,GAAG,eAAe,WAAW,SAAS;GACtC,GAAI,iBACA,EACE,4CAA0B,eAAe,GACrC,iBACA,iBAAiB,WAAW,eAAe,EAChD,GACD,EAAE;GACN,GAAI,mBACA,EACE,kBAAkB,iBAChB,WACA,iBACD,EACF,GACD,EAAE;GACP,CACF;GAEJ,CACF;;AAGH,MAAM,uBAAuB,SAAkC;AAC7D,KAAI,CAAC,KACH,QAAOC,wBAAW;AAGpB,KAAI,CAAC,OAAO,OAAOA,wBAAW,CAAC,SAAS,KAAK,EAAE;AAC7C,kCAAc,CAAC,KAAK,cAAM,OAAO,gCAAgC,OAAO,CAAC;AACzE,SAAOA,wBAAW;;AAGpB,QAAO;;AAGT,MAAM,kBAAkB,UAA+C;AAGrE,QAFa,OAAO,KAAK,MAAM,CAEnB,QAA+B,KAAK,QAAc;AAC5D,iCAAa,MAAM,KAAK,CACtB,QAAO;GACL,GAAG;IACF,MAAM,CAAC,MAAM,KAAK;GACpB;WACQ,MAAM,QAAQ,MAAM,KAAK,CAClC,QAAO;GACL,GAAG;IACF,MAAM,MAAM;GACd;wCACmB,MAAM,KAAK,CAC/B,QAAO;GACL,GAAG;IACF,MAAM,CAAC,MAAM,KAAK;GACpB;sCACiB,MAAM,KAAK,CAC7B,QAAO;GACL,GAAG;IACF,MAAM,CAAC,MAAM,KAAK;GACpB;AAGH,SAAO;IACN,EAAE,CAAC;;AAGR,MAAM,wBACJ,SAAoB,EAAE,EACtB,cAC0B;AAC1B,QAAO;EACL,GAAIC,OAAK,WACL,EAAE,UAAUL,mBAAM,QAAQ,WAAWK,OAAK,SAAS,EAAE,GACrD,EAAE;EACN,gBAAgBA,OAAK,kBAAkB;EACvC,WAAWA,OAAK,aAAa;EAC7B,qBAAqBA,OAAK,sBACtBL,mBAAM,QAAQ,WAAWK,OAAK,oBAAoB,GAClD;EACL;;AAGH,MAAM,yBACJ,QAAsB,EAAE,KACG;AAC3B,QAAO,EACL,GAAG,OACJ;;AAGH,MAAM,yBACJ,eAA6B,EAAE,EAC/B,iBACA,gBAAwC,EAAE,KACf;AAC3B,KAAI,aAAa,QACf,SAAQ,KACN,8IACD;AAGH,QAAO;EACL,iCAAgB,aAAa,YAAY,GACrC,EAAE,GACF,EAAE,aAAa,aAAa,aAAa;EAC7C,iCAAgB,aAAa,cAAc,GACvC,EAAE,GACF,EAAE,eAAe,aAAa,eAAe;EACjD,iCAAgB,aAAa,SAAS,GAClC,EAAE,GACF,EAAE,UAAU,aAAa,UAAU;EACvC,iCAAgB,aAAa,iBAAiB,GAC1C,EAAE,GACF,EAAE,kBAAkB,aAAa,kBAAkB;EACvD,iCAAgB,aAAa,YAAY,GACrC,EAAE,GACF,EAAE,aAAa,aAAa,aAAa;EAC7C,iCAAgB,aAAa,YAAY,GACrC,EAAE,GACF,EAAE,aAAa,aAAa,aAAa;EAC7C,iCAAgB,aAAa,yBAAyB,GAClD,EAAE,GACF,EAAE,0BAA0B,aAAa,0BAA0B;EACvE,GAAI,aAAa,wBACb,EAAE,uBAAuB,aAAa,uBAAuB,GAC7D,EAAE;EACN,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,SAAS,GAAG,EAAE;EACjE,GAAI,cAAc,WACd,EACE,UAAU,cAAc,UACzB,GACD,EAAE;EACN,GAAI,cAAc,WACd,EACE,UAAU,iBAAiB,iBAAiB,cAAc,SAAS,EACpE,GACD,EAAE;EACN,GAAI,cAAc,eACd,EACE,cAAc,cAAc,cAC7B,GACD,EAAE;EACN,GAAI,cAAc,eACd,EACE,cAAc,iBACZ,iBACA,cAAc,aACf,EACF,GACD,EAAE;EACN,GAAI,cAAc,kBACd,EACE,iBAAiB,cAAc,iBAChC,GACD,EAAE;EACN,GAAI,cAAc,kBACd,EACE,iBAAiB,iBACf,iBACA,cAAc,gBACf,EACF,GACD,EAAE;EACN,iCAAgB,cAAc,qBAAqB,GAC/C,EAAE,GACF,EACE,sBAAsB,cAAc,sBACrC;EACL,iCAAgB,aAAa,qBAAqB,GAC9C,EAAE,GACF,EAAE,sBAAsB,aAAa,sBAAsB;EAC/D,iCAAgB,cAAc,uBAAuB,GACjD,EAAE,GACF,EACE,wBAAwB,cAAc,wBACvC;EACL,iCAAgB,aAAa,uBAAuB,GAChD,EAAE,GACF,EAAE,wBAAwB,aAAa,wBAAwB;EACnE,iCAAgB,cAAc,yBAAyB,GACnD,EAAE,GACF,EACE,0BAA0B,cAAc,0BACzC;EACL,iCAAgB,aAAa,yBAAyB,GAClD,EAAE,GACF,EAAE,0BAA0B,aAAa,0BAA0B;EACvE,iCAAgB,cAAc,oBAAoB,GAC9C,EAAE,GACF,EACE,qBAAqB,cAAc,qBACpC;EACL,iCAAgB,aAAa,oBAAoB,GAC7C,EAAE,GACF,EAAE,qBAAqB,aAAa,qBAAqB;EAC7D,iCAAgB,cAAc,OAAO,GACjC,EAAE,GACF,EACE,QAAQ,cAAc,QACvB;EACL,iCAAgB,cAAc,yBAAyB,GACnD,EAAE,GACF,EACE,0BAA0B,cAAc,0BACzC;EACL,iCAAgB,aAAa,yBAAyB,GAClD,EAAE,GACF,EAAE,0BAA0B,aAAa,0BAA0B;EACvE,iCAAgB,cAAc,OAAO,GACjC,EAAE,GACF,EACE,QAAQ,cAAc,QACvB;EACL,iCAAgB,aAAa,OAAO,GAChC,EAAE,GACF,EAAE,QAAQ,aAAa,QAAQ;EACnC,iCAAgB,cAAc,QAAQ,GAClC,EAAE,GACF,EACE,SAAS,cAAc,SACxB;EACL,iCAAgB,aAAa,QAAQ,GACjC,EAAE,GACF,EAAE,SAAS,aAAa,SAAS;EACtC;;AAGH,MAAa,yBAAyB,EACpC,OACA,4BACA,uBAKE,EAAE,KAAK;CACT,gBAAgBC,gBAAI,KAAK,IAAIA,gBAAI,QAAQ;CACzC;CACA,GAAI,QAAQ,CAAC,MAAM,GAAG,EAAE;CACxB,GAAIC,gBAAc,CAACA,cAAY,GAAG,EAAE;CACpC,GAAIC,YAAU,CAAC,yBAAyBA,YAAU,GAAG,EAAE;CACxD;;;;AChxBD,MAAa,eAAe,OAC1B,cACA,SACA,gBAAmC,QAChC;AACH,KAAI,CAAC,aAAc;CACnB,MAAM,EAAE,UAAU,MAAM,OAAO;CAE/B,MAAM,UAAU,CAAC,4BAA4B;CAE7C,MAAM,aACJ,OAAO,iBAAiB,YACpB,gBACA,MAAM,QAAQ,aAAa,GACzB,aAAa,QACV,WAAyB,OAAOC,WAAS,SAC3C,GACD;AAER,uBACE,2BACE,MAAM,QAAQ,WAAW,GACrB,WAAW,KAAK,MAAM,OAAM,IAAI,KAAI,CAAC,KAAK,MAAM,GAChD,OAAM,aAAa,OAE1B;AAMD,CAJgB,MAAM,YAAY;EAChC,wBAAwB;EACxB;EACD,CAAC,CACM,GAAG,OAAO,OAAO,QAAM,SAAS;AACtC,wBAAI,oBAAoBC,OAAK,GAAG,OAAO;AAEvC,MAAI;AACF,SAAM,SAAS;WACR,OAAO;AACd,8BAAS,MAAM;;GAEjB;;;;;AC3BJ,MAAa,cAAc,OACzB,QACA,WAAkC,EAAE,EACpC,OAAiB,EAAE,KAChB;AACH,uBAAI,cAAM,MAAM,WAAWC,OAAK,UAAU,CAAC;AAE3C,MAAK,MAAM,WAAW,SACpB,KAAI;AACF,iCAAa,QAAQ,CACnB,OAAM,eAAe,SAAS,KAAK;wCACf,QAAQ,CAC5B,OAAM,QAAQ,KAAK;sCACD,QAAQ,CAC1B,OAAM,qBAAqB,SAAuB,KAAK;UAElD,OAAO;AACd,6BAAS,OAAO,iBAAiBA,OAAK,OAAO;;;AAKnD,eAAe,eAAe,SAAiB,MAAgB;CAC7D,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,0CAAyB,QAAQ,EAAE,GAAG,KAAK;AAEpE,0BAAY,KAAK,MAAM;;AAGzB,eAAe,qBAAqB,SAAqB,MAAgB;AACvE,KAAI,QAAQ,gCAAgC,MAC1C,QAAO,EAAE;AAGX,gCAAa,QAAQ,QAAQ,CAC3B,OAAM,eAAe,QAAQ,SAAS,KAAK;uCACvB,QAAQ,QAAQ,CACpC,OAAM,QAAQ,SAAS;;;;;ACxB3B,MAAM,aACJ,QACA,SACW;AACX,KAAI,CAAC,OACH,QAAO;CAGT,MAAM,SAAS,OAAO,KAAK;AAE3B,QAAO,MAAM,QAAQ,OAAO,2BAAS,EAAE,aAAa,QAAQ,CAAC,GAAG;;AAGlE,MAAa,aAAa,OACxB,SACA,WACA,SACA,gBACG;CACH,MAAM,EAAE,OAAO;EAAE,OAAO;EAAI,SAAS;EAAG,EAAE,SAAS,WAAW;CAC9D,MAAM,EAAE,WAAW;CACnB,MAAM,eAAe,eAAe,KAAK;CAEzC,MAAM,YAAY,OAAO,KAAK,QAAQ,CAAC,QAEpC,KAAK,YAAY;AAIlB,MAAI,WAHaC,mBAAM,YAAY,SAAS,OAAO,CAC7B,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI;AAInD,SAAO;IACN,EAAE,CAAC;CAEN,MAAM,SAAS,UAAU,OAAO,SAAS,QAAQ,KAAmB;AAEpE,KAAI,OAAO,SAAS;EAClB,MAAM,iBAAiB,OAAO;EAE9B,MAAM,gBAAgB;GAAC;GAAQ;GAAc;GAAQ,CAAC,SAAS,OAAO,KAAK,GACvE,QACC,OAAO,iBAAiB;AAE7B,QAAM,QAAQ,IACZ,OAAO,QAAQ,QAAQ,CAAC,KAAK,CAAC,SAASC,eAAa;GAClD,MAAM,yCAAuB,SAAS,OAAO,GACzC,iBACAD,mBAAM,KAAK,gBAAgB,UAAU,SAAS;AAElD,yCAAoB;IAClB;IACA;IACA;IACA,kBAAkB,OAAO;IACzB;IACA;IACA;IACA,uCAAqB,SAAS,OAAO;IACrC;IACA,YAAY,OAAO;IACpB,CAAC;IACF,CACH;;CAGH,IAAIE,sBAAgC,EAAE;AAEtC,KAAI,OAAO,OAET,uBAAsB,MADJ,aAAa,OAAO,KAAK,CACL;EACpC;EACA;EACA;EACA;EACA;EACA,YAAY,CAAC,OAAO,WAAW,OAAO,WAAW;EAClD,CAAC;AAGJ,KAAI,OAAO,WAAW;EACpB,MAAM,gBAAgB,OAAO;EAC7B,MAAM,UAAU,oBACb,QACE,WACC,CAAC,OAAO,QACR,CAACC,OAAK,SAAS,qDAAmC,OAAO,KAAK,CAAC,KAAK,CACvE,CACA,KAAK,WACJH,mBAAM,aACJ,6CACYG,OAAK,CAAC,qBACnB,CACF;AAEH,MAAI,OAAO,QACT,SAAQ,KACNH,mBAAM,aAAa,6CAA2B,OAAO,QAAQ,CAAC,QAAQ,CACvE;AAGH,MAAI,OAAO,YAAY;GACrB,MAAM,YAAYA,mBAAM,KAAK,eAAe,YAAY;AAExD,OAAI,MAAMI,iBAAG,WAAW,UAAU,EAAE;IAClC,MAAM,OAAO,MAAMA,iBAAG,SAAS,WAAW,OAAO;IACjD,MAAM,qBAAqB,QAAQ,QAAQ,QAAQ,CAAC,KAAK,SAAS,IAAI,CAAC;AACvE,UAAMA,iBAAG,WACP,oCACK,mBAAmB,CACrB,KAAK,QAAQ,kBAAkB,IAAI,MAAM,CACzC,KAAK,GAAG,CACZ;SAED,OAAMA,iBAAG,WACP,oCACK,QAAQ,CACV,KAAK,QAAQ,kBAAkB,IAAI,IAAI,CACvC,KAAK,KAAK,GAAG,KACjB;AAGH,yBAAsB,CAAC,WAAW,GAAG,oBAAoB;;;AAI7D,KAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,QAAM,QAAQ,IACZ,QAAQ,WAAW,IAAI,OAAO,SAC5BA,iBAAG,WAAW,KAAK,MAAM,KAAK,QAAQ,CACvC,CACF;AAED,wBAAsB,CACpB,GAAG,qBACH,GAAG,QAAQ,WAAW,KAAK,SAAS,KAAK,KAAK,CAC/C;;CAGH,MAAM,QAAQ,CACZ,GAAI,OAAO,UAAU,+BAAa,OAAO,QAAQ,CAAC,QAAQ,GAAG,EAAE,EAC/D,GAAG,oBACJ;AAED,KAAI,QAAQ,MAAM,mBAChB,OAAM,YACJ,sBACA,QAAQ,MAAM,oBACd,MACD;AAGH,KAAI,OAAO,SACT,KAAI;AACF,2BAAY,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC;SACxC;AACN,wBACE,cAAM,OACJ,OAAO,eAAe,GAAG,aAAa,OAAO,GAAG,uCACjD,CACF;;AAIL,KAAI,OAAO,MACT,KAAI;AACF,2BAAY,SAAS;GAAC;GAAS;GAAW,GAAG;GAAM,CAAC;UAC7C,OAAO;EACd,MAAM,aAAa;EACnB,MAAM,UACJ,WAAW,aAAa,IACpB,WAAW,SAAS,WAAW,SAC/B,OAAO,eAAe,GAAG,aAAa,OAAO,GAAG;AAEtD,wBAAI,cAAM,OAAO,QAAQ,CAAC;;AAI9B,KAAI,OAAO,KACT,KAAI;EACF,IAAIC,SAAkC,EAAE;EACxC,IAAIC,aAA4B;AAChC,MAAI,OAAO,OAAO,SAAS,UAAU;AACnC,IAAC,CAAE,aAAa,SAAS,UAAW,OAAO;AAC3C,OAAI,WACF,QAAO,UAAU;;EAIrB,MAAM,wBAAwB,YAAY;GACxC,MAAM,EAAE,gBAAgB,MAAM,OAAO;AACrC,UAAO;;EAIT,MAAM,MAAM,OADQ,MAAM,uBAAuB,EACnB,qBAAqB;GACjD,aAAa;GACb,OAAO;GAEP,GAAG;GACH,QAAQ,CAAC,2BAA2B,GAAI,OAAO,UAAU,EAAE,CAAE;GAC9D,CAAC;AAEF,MAAI,CAAC,IAAI,QAAQ,MAAM,SAAS,CAC9B,KAAI,QAAQ,SAAS,UAAU,OAAO;AAExC,MAAI,CAAC,IAAI,QAAQ,MAAM,WAAW,CAChC,KAAI,QAAQ,SAAS,YAAY,OAAO;EAE1C,MAAM,UAAU,MAAM,IAAI,SAAS;AACnC,MAAI,QACF,OAAM,IAAI,aAAa,SAAS,IAAI,QAAQ,SAAS,MAAM,CAAW;MAEtE,OAAM,IAAI,MAAM,0BAA0B;UAErC,OAAO;EACd,MAAM,UACJ,iBAAiB,QACb,MAAM,UACN,OAAO,eAAe,GAAG,aAAa,OAAO,GAAG;AAEtD,wBAAI,cAAM,OAAO,QAAQ,CAAC;;AAI9B,wCAAqB,aAAa;;AAGpC,MAAM,gBAAgB,SAAqB;AACzC,SAAQ,MAAR;EACE,KAAKC,wBAAW,MACd,QAAOC;EAET,KAAKD,wBAAW,KACd,QAAOE;EAET,KAAKF,wBAAW,WACd,QAAOG;EAET,KAAKH,wBAAW;EAChB,QACE,QAAOI;;;;;;ACjPb,MAAa,eAAe,OAC1B,WACA,SACA,gBACG;AACH,KAAI,QAAQ,OAAO,OAAO;EACxB,MAAM,gBAAgB,MAAM,QAAQ,QAAQ,OAAO,MAAM,GACrD,QAAQ,OAAO,QACf,EAAE;AAEN,MAAI,QAAQ,OAAO,OACjB,oDACE;GAAC;GAAQ;GAAc,GAAG;GAAc,gCAC5B,QAAQ,OAAO,OAAO,CAAC,QACpC;AAEH,MAAI,QAAQ,OAAO,QACjB,oDACE;GAAC;GAAQ;GAAc,GAAG;GAAc,gCAC5B,QAAQ,OAAO,QAAQ,CAAC,QACrC;AAEH,wBAAI,GAAG,cAAc,GAAG,YAAY,MAAM,GAAG,wBAAwB;;CAGvE,MAAM,mBAAmB,MAAM,YAAY,WAAW,QAAQ;AAC9D,OAAM,WAAW,kBAAkB,WAAW,SAAS,YAAY;;AAGrE,MAAa,gBAAgB,OAC3B,QACA,WACA,gBACG;AACH,KAAI,aAAa;EACf,MAAM,UAAU,OAAO;AAEvB,MAAI,QACF,KAAI;AACF,SAAM,aAAa,WAAW,SAAS,YAAY;WAC5C,OAAO;GACd,MAAM,WACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,SAAM,IAAIC,0BAAa,UAAU,aAAa,EAAE,OAAO,OAAO,CAAC;;MAGjE,OAAM,IAAI,MAAM,oBAAoB;AAEtC;;CAGF,IAAIC;AACJ,MAAK,MAAM,CAACC,eAAa,YAAY,OAAO,QAAQ,OAAO,EAAE;AAC3D,MAAI,CAAC,SAAS;AACZ,eAAY;AACZ,8BAAS,oBAAoBA,cAAY;AACzC;;AAEF,MAAI;AACF,SAAM,aAAa,WAAW,SAASA,cAAY;WAC5C,OAAO;AACd,eAAY;AACZ,8BAAS,OAAOA,cAAY;;;AAIhC,KAAI,UACF,OAAM,IAAI,MAAM,oDAAoD;;AAGxE,SAAS,eAAe,gBAAyB;AAC/C,KAAI,gBAAgB;AAClB,MAAI,CAACC,gBAAG,WAAW,eAAe,CAChC,OAAM,IAAI,MAAM,eAAe,eAAe,iBAAiB;AAEjE,SAAO;;CAGT,MAAM,OAAOC,qBAAQ,KAAK;AAE1B,MAAK,MAAM,OADE;EAAC;EAAO;EAAO;EAAQ;EAAO,EACnB;EACtB,MAAM,WAAWC,kBAAK,QAAQ,MAAM,eAAe,MAAM;AACzD,MAAIF,gBAAG,WAAW,SAAS,CACzB,QAAO;;AAIX,OAAM,IAAI,MAAM,2BAA2B,OAAO;;AAGpD,MAAa,iBAAiB,OAC5B,YACA,YACG;CACH,MAAM,iBAAiB,eAAe,WAAW;CACjD,IAAIG;AACJ,KAAI;EAEF,MAAM,iBAAkB,MAAM,OADXC,iBAAI,cAAc,eAAe,CAAC;AAIrD,MAAI,eAAe,YAAY,OAC7B,OAAM,IAAI,MAAM,GAAG,eAAe,gCAAgC;AAEpE,mBAAiB,eAAe;UACzB,OAAO;EACd,MAAM,WAAW,iBAAiB,QAAQ,MAAM,UAAU;AAC1D,QAAM,IAAI,MAAM,uBAAuB,eAAe,MAAM,WAAW;;CAGzE,MAAM,YAAYF,kBAAK,QAAQ,eAAe;CAE9C,MAAM,SAAS,oCAAkB,eAAe,GAC5C,gBAAgB,GAChB;CAEJ,MAAM,mBAAmB,oCACvB,OAAO,QAAQ,OAAO,EACtB,OAAO,KAAK,CAAC,KAAK,WAAW;AAC3B,MAAI,OAAO,MAAM,iBAAiB,OAAO,WAAW,QAAQ;AAE5D,SAAO;IAET,EAAE,CACH;CAED,MAAM,cAAc,OAAO,QAAQ,iBAAiB,CACjD,QACE,CAAC,aACA,SAAS,gBAAgB,UAAa,YAAY,QAAQ,YAC7D,CACA,KAAK,GAAGG,eAAaA,WAAS,MAAM,OAAO,CAC3C,QAAQ,sCAAoB,OAAO,CAAC;AAEvC,QAAO,SAAS,SAAS,YAAY,SAAS,IAC1C,aACE,QAAQ,aACF,cAAc,kBAAkB,WAAW,QAAQ,YAAY,EACrE,YACD,GACD,cAAc,kBAAkB,WAAW,SAAS,YAAY"}