{"version":3,"sources":["../../../node_modules/tsup/assets/esm_shims.js","../src/index.ts","../src/generate.ts","../src/utils/factory.ts","../src/codegen.ts","../src/generators/react-hooks.ts","../src/utils/capitalize.ts","../src/types.ts","../src/utils/getOperationDefinitions.ts","../src/utils/getV3Doc.ts","../src/utils/isQuery.ts","../src/utils/isValidUrl.ts","../src/utils/prettier.ts","../src/utils/removeUndefined.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport { generateApi } from './generate';\nimport type { CommonOptions, ConfigFile, GenerationOptions, OutputFileOptions } from './types';\nimport { isValidUrl, prettify } from './utils';\nexport type { ConfigFile } from './types';\n\nconst require = createRequire(__filename);\n\nexport async function generateEndpoints(options: GenerationOptions): Promise<string | void> {\n  const schemaLocation = options.schemaFile;\n\n  const schemaAbsPath = isValidUrl(options.schemaFile)\n    ? options.schemaFile\n    : path.resolve(process.cwd(), schemaLocation);\n\n  const sourceCode = await enforceOazapftsTsVersion(async () => {\n    return generateApi(schemaAbsPath, options);\n  });\n  const { outputFile, prettierConfigFile } = options;\n  if (outputFile) {\n    fs.writeFileSync(\n      path.resolve(process.cwd(), outputFile),\n      await prettify(outputFile, sourceCode, prettierConfigFile)\n    );\n  } else {\n    return await prettify(null, sourceCode, prettierConfigFile);\n  }\n}\n\nexport function parseConfig(fullConfig: ConfigFile) {\n  const outFiles: (CommonOptions & OutputFileOptions)[] = [];\n\n  if ('outputFiles' in fullConfig) {\n    const { outputFiles, ...commonConfig } = fullConfig;\n    for (const [outputFile, specificConfig] of Object.entries(outputFiles)) {\n      outFiles.push({\n        ...commonConfig,\n        ...specificConfig,\n        outputFile,\n      });\n    }\n  } else {\n    outFiles.push(fullConfig);\n  }\n  return outFiles;\n}\n\n/**\n * Enforces `oazapfts` to use the same TypeScript version as this module itself uses.\n * That should prevent enums from running out of sync if both libraries use different TS versions.\n */\nfunction enforceOazapftsTsVersion<T>(cb: () => T): T {\n  const ozTsPath = require.resolve('typescript', { paths: [require.resolve('oazapfts')] });\n  const tsPath = require.resolve('typescript');\n  const originalEntry = require.cache[ozTsPath];\n  try {\n    require.cache[ozTsPath] = require.cache[tsPath];\n    return cb();\n  } finally {\n    if (originalEntry) {\n      require.cache[ozTsPath] = originalEntry;\n    } else {\n      delete require.cache[ozTsPath];\n    }\n  }\n}\n","import camelCase from 'lodash.camelcase';\nimport path from 'node:path';\nimport ApiGenerator, {\n  getOperationName as _getOperationName,\n  createPropertyAssignment,\n  createQuestionToken,\n  getReferenceName,\n  isReference,\n  isValidIdentifier,\n  keywordType,\n  supportDeepObjects,\n} from 'oazapfts/generate';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport ts from 'typescript';\nimport type { ObjectPropertyDefinitions } from './codegen';\nimport { generateCreateApiCall, generateEndpointDefinition, generateImportNode, generateTagTypes } from './codegen';\nimport { generateReactHooks } from './generators/react-hooks';\nimport type {\n  EndpointMatcher,\n  EndpointOverrides,\n  GenerationOptions,\n  OperationDefinition,\n  ParameterDefinition,\n  ParameterMatcher,\n  TextMatcher,\n} from './types';\nimport { capitalize, getOperationDefinitions, getV3Doc, removeUndefined, isQuery as testIsQuery } from './utils';\nimport { factory } from './utils/factory';\n\nconst generatedApiName = 'injectedRtkApi';\nconst v3DocCache: Record<string, OpenAPIV3.Document> = {};\n\nfunction defaultIsDataResponse(code: string, includeDefault: boolean) {\n  if (includeDefault && code === 'default') {\n    return true;\n  }\n  const parsedCode = Number(code);\n  return !Number.isNaN(parsedCode) && parsedCode >= 200 && parsedCode < 300;\n}\n\nfunction getOperationName({ verb, path, operation }: Pick<OperationDefinition, 'verb' | 'path' | 'operation'>) {\n  return _getOperationName(verb, path, operation.operationId);\n}\n\nfunction getTags({ verb, pathItem }: Pick<OperationDefinition, 'verb' | 'pathItem'>): string[] {\n  return verb ? pathItem[verb]?.tags || [] : [];\n}\n\nfunction patternMatches(pattern?: TextMatcher) {\n  const filters = Array.isArray(pattern) ? pattern : [pattern];\n  return function matcher(operationName: string) {\n    if (!pattern) return true;\n    return filters.some((filter) =>\n      typeof filter === 'string' ? filter === operationName : filter?.test(operationName)\n    );\n  };\n}\n\nfunction operationMatches(pattern?: EndpointMatcher) {\n  const checkMatch = typeof pattern === 'function' ? pattern : patternMatches(pattern);\n  return function matcher(operationDefinition: OperationDefinition) {\n    if (!pattern) return true;\n    const operationName = getOperationName(operationDefinition);\n    return checkMatch(operationName, operationDefinition);\n  };\n}\n\nfunction argumentMatches(pattern?: ParameterMatcher) {\n  const checkMatch = typeof pattern === 'function' ? pattern : patternMatches(pattern);\n  return function matcher(argumentDefinition: ParameterDefinition) {\n    if (!pattern || argumentDefinition.in === 'path') return true;\n    const argumentName = argumentDefinition.name;\n    return checkMatch(argumentName, argumentDefinition);\n  };\n}\n\nfunction withQueryComment<T extends ts.Node>(node: T, def: QueryArgDefinition, hasTrailingNewLine: boolean): T {\n  const comment = def.origin === 'param' ? def.param.description : def.body.description;\n  if (comment) {\n    return ts.addSyntheticLeadingComment(\n      node,\n      ts.SyntaxKind.MultiLineCommentTrivia,\n      `* ${comment} `,\n      hasTrailingNewLine\n    );\n  }\n  return node;\n}\n\nfunction getPatternFromProperty(\n  property: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject,\n  apiGen: ApiGenerator\n): string | null {\n  const resolved = apiGen.resolve(property);\n  if (!resolved || typeof resolved !== 'object' || !('pattern' in resolved)) return null;\n  if (resolved.type !== 'string') return null;\n  const pattern = resolved.pattern;\n  return typeof pattern === 'string' && pattern.length > 0 ? pattern : null;\n}\n\nfunction generateRegexConstantsForType(\n  typeName: string,\n  schema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject,\n  apiGen: ApiGenerator\n): ts.VariableStatement[] {\n  const resolvedSchema = apiGen.resolve(schema);\n  if (!resolvedSchema || !('properties' in resolvedSchema) || !resolvedSchema.properties) return [];\n\n  const constants: ts.VariableStatement[] = [];\n\n  for (const [propertyName, property] of Object.entries(resolvedSchema.properties)) {\n    const pattern = getPatternFromProperty(property, apiGen);\n    if (!pattern) continue;\n\n    const constantName = camelCase(`${typeName} ${propertyName} Pattern`);\n    const escapedPattern = pattern.replaceAll('/', String.raw`\\/`);\n    const regexLiteral = factory.createRegularExpressionLiteral(`/${escapedPattern}/`);\n\n    constants.push(\n      factory.createVariableStatement(\n        [factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n        factory.createVariableDeclarationList(\n          [\n            factory.createVariableDeclaration(\n              factory.createIdentifier(constantName),\n              undefined,\n              undefined,\n              regexLiteral\n            ),\n          ],\n          ts.NodeFlags.Const\n        )\n      )\n    );\n  }\n\n  return constants;\n}\n\nexport function getOverrides(\n  operation: OperationDefinition,\n  endpointOverrides?: EndpointOverrides[]\n): EndpointOverrides | undefined {\n  return endpointOverrides?.find((override) => operationMatches(override.pattern)(operation));\n}\n\nexport async function generateApi(\n  spec: string,\n  {\n    apiFile,\n    apiImport = 'api',\n    exportName = 'enhancedApi',\n    argSuffix = 'ApiArg',\n    responseSuffix = 'ApiResponse',\n    operationNameSuffix = '',\n    hooks = false,\n    tag = false,\n    outputFile,\n    isDataResponse = defaultIsDataResponse,\n    filterEndpoints,\n    endpointOverrides,\n    unionUndefined,\n    encodePathParams = false,\n    encodeQueryParams = false,\n    flattenArg = false,\n    includeDefault = false,\n    useEnumType = false,\n    mergeReadWriteOnly = false,\n    httpResolverOptions,\n    useUnknown = false,\n    esmExtensions = false,\n    outputRegexConstants = false,\n  }: GenerationOptions\n) {\n  const v3Doc = (v3DocCache[spec] ??= await getV3Doc(spec, httpResolverOptions));\n\n  const apiGen = new ApiGenerator(v3Doc, {\n    unionUndefined,\n    useEnumType,\n    mergeReadWriteOnly,\n    useUnknown,\n  });\n\n  // temporary workaround for https://github.com/oazapfts/oazapfts/issues/491\n  if (apiGen.spec.components?.schemas) {\n    apiGen.preprocessComponents(apiGen.spec.components.schemas);\n  }\n\n  const operationDefinitions = getOperationDefinitions(v3Doc).filter(operationMatches(filterEndpoints));\n\n  const resultFile = ts.createSourceFile(\n    'someFileName.ts',\n    '',\n    ts.ScriptTarget.Latest,\n    /*setParentNodes*/ false,\n    ts.ScriptKind.TS\n  );\n  const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });\n\n  const interfaces: Record<string, ts.InterfaceDeclaration | ts.TypeAliasDeclaration> = {};\n  function registerInterface(declaration: ts.InterfaceDeclaration | ts.TypeAliasDeclaration) {\n    const name = declaration.name.escapedText.toString();\n    if (name in interfaces) {\n      throw new Error(`interface/type alias ${name} already registered`);\n    }\n    interfaces[name] = declaration;\n    return declaration;\n  }\n\n  if (outputFile) {\n    outputFile = path.resolve(process.cwd(), outputFile);\n    if (apiFile.startsWith('.')) {\n      apiFile = path.relative(path.dirname(outputFile), apiFile);\n      apiFile = apiFile.replace(/\\\\/g, '/');\n      if (!apiFile.startsWith('.')) apiFile = `./${apiFile}`;\n    }\n  }\n\n  if (esmExtensions === true) {\n    // Convert TS/JSX extensions to their JS equivalents\n    apiFile = apiFile\n      .replace(/\\.mts$/, '.mjs')\n      .replace(/\\.[jt]sx$/, '.jsx')\n      .replace(/\\.ts$/, '.js');\n  } else {\n    // Remove all extensions\n    apiFile = apiFile.replace(/\\.[jt]sx?$/, '');\n  }\n\n  return printer.printNode(\n    ts.EmitHint.Unspecified,\n    factory.createSourceFile(\n      [\n        generateImportNode(apiFile, { [apiImport]: 'api' }),\n        ...(tag ? [generateTagTypes({ addTagTypes: extractAllTagTypes({ operationDefinitions }) })] : []),\n        generateCreateApiCall({\n          tag,\n          endpointDefinitions: factory.createObjectLiteralExpression(\n            operationDefinitions.map((operationDefinition) =>\n              generateEndpoint({\n                operationDefinition,\n                overrides: getOverrides(operationDefinition, endpointOverrides),\n              })\n            ),\n            true\n          ),\n        }),\n        factory.createExportDeclaration(\n          undefined,\n          false,\n          factory.createNamedExports([\n            factory.createExportSpecifier(\n              factory.createIdentifier(generatedApiName),\n              factory.createIdentifier(exportName)\n            ),\n          ]),\n          undefined\n        ),\n        ...Object.values(interfaces),\n        ...(outputRegexConstants\n          ? apiGen.aliases.flatMap((alias) => {\n              if (!ts.isInterfaceDeclaration(alias) && !ts.isTypeAliasDeclaration(alias)) return [alias];\n\n              const typeName = alias.name.escapedText.toString();\n              const schema = v3Doc.components?.schemas?.[typeName];\n              if (!schema) return [alias];\n\n              const regexConstants = generateRegexConstantsForType(typeName, schema, apiGen);\n              return regexConstants.length > 0 ? [alias, ...regexConstants] : [alias];\n            })\n          : apiGen.aliases),\n        ...apiGen.enumAliases,\n        ...(hooks\n          ? [\n              generateReactHooks({\n                exportName: generatedApiName,\n                operationDefinitions,\n                endpointOverrides,\n                config: hooks,\n                operationNameSuffix,\n              }),\n            ]\n          : []),\n      ],\n      factory.createToken(ts.SyntaxKind.EndOfFileToken),\n      ts.NodeFlags.None\n    ),\n    resultFile\n  );\n\n  function extractAllTagTypes({ operationDefinitions }: { operationDefinitions: OperationDefinition[] }) {\n    const allTagTypes = new Set<string>();\n\n    for (const operationDefinition of operationDefinitions) {\n      const { verb, pathItem } = operationDefinition;\n      for (const tag of getTags({ verb, pathItem })) {\n        allTagTypes.add(tag);\n      }\n    }\n    return [...allTagTypes];\n  }\n\n  function generateEndpoint({\n    operationDefinition,\n    overrides,\n  }: {\n    operationDefinition: OperationDefinition;\n    overrides?: EndpointOverrides;\n  }) {\n    const {\n      verb,\n      path,\n      pathItem,\n      operation,\n      operation: { responses, requestBody },\n    } = operationDefinition;\n    const operationName = getOperationName({ verb, path, operation });\n    const tags = tag ? getTags({ verb, pathItem }) : undefined;\n    const isQuery = testIsQuery(verb, overrides);\n\n    const returnsJson = apiGen.getResponseType(responses) === 'json';\n    let ResponseType: ts.TypeNode = factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);\n    if (returnsJson) {\n      const returnTypes = Object.entries(responses || {})\n        .map(\n          ([code, response]) =>\n            [\n              code,\n              apiGen.resolve(response),\n              apiGen.getTypeFromResponse(response, 'readOnly') ||\n                factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),\n            ] as const\n        )\n        .filter(([status, response]) =>\n          isDataResponse(status, includeDefault, apiGen.resolve(response), responses || {})\n        )\n        .filter(([_1, _2, type]) => type !== keywordType.void)\n        .map(([code, response, type]) =>\n          ts.addSyntheticLeadingComment(\n            { ...type },\n            ts.SyntaxKind.MultiLineCommentTrivia,\n            `* status ${code} ${response.description} `,\n            false\n          )\n        );\n      if (returnTypes.length > 0) {\n        ResponseType = factory.createUnionTypeNode(returnTypes);\n      }\n    }\n\n    const ResponseTypeName = factory.createTypeReferenceNode(\n      registerInterface(\n        factory.createTypeAliasDeclaration(\n          [factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n          capitalize(operationName + operationNameSuffix + responseSuffix),\n          undefined,\n          ResponseType\n        )\n      ).name\n    );\n\n    const operationParameters = apiGen.resolveArray(operation.parameters);\n    const pathItemParameters = apiGen\n      .resolveArray(pathItem.parameters)\n      .filter((pp) => !operationParameters.some((op) => op.name === pp.name && op.in === pp.in));\n\n    const parameters = supportDeepObjects([...pathItemParameters, ...operationParameters]).filter(\n      argumentMatches(overrides?.parameterFilter)\n    );\n\n    const allNames = parameters.map((p) => p.name);\n    const queryArg: QueryArgDefinitions = {};\n    function generateName(name: string, potentialPrefix: string) {\n      const isPureSnakeCase = /^[a-zA-Z][a-zA-Z0-9_]*$/.test(name);\n      // prefix with `query`, `path` or `body` if there are multiple paramters with the same name\n      const hasNamingConflict = allNames.filter((n) => n === name).length > 1;\n      if (hasNamingConflict) {\n        name = `${potentialPrefix}_${name}`;\n      }\n      // convert to camelCase if the name is pure snake_case and there are no naming conflicts\n      const camelCaseName = camelCase(name);\n      if (isPureSnakeCase && !allNames.includes(camelCaseName)) {\n        name = camelCaseName;\n      }\n      // if there are still any naming conflicts, prepend with underscore\n      while (name in queryArg) {\n        name = `_${name}`;\n      }\n      return name;\n    }\n\n    for (const param of parameters) {\n      const name = generateName(param.name, param.in);\n      queryArg[name] = {\n        origin: 'param',\n        name,\n        originalName: param.name,\n        type: apiGen.getTypeFromSchema(isReference(param) ? param : param.schema, undefined, 'writeOnly'),\n        required: param.required,\n        param,\n      };\n    }\n\n    if (requestBody) {\n      const body = apiGen.resolve(requestBody);\n      const schema = apiGen.getSchemaFromContent(body.content);\n      const type = apiGen.getTypeFromSchema(schema);\n      const schemaName = camelCase(\n        (type as any).name ||\n          getReferenceName(schema) ||\n          (typeof schema === 'object' && 'title' in schema && schema.title) ||\n          'body'\n      );\n      const name = generateName(schemaName in queryArg ? 'body' : schemaName, 'body');\n\n      queryArg[name] = {\n        origin: 'body',\n        name,\n        originalName: schemaName,\n        type: apiGen.getTypeFromSchema(schema, undefined, 'writeOnly'),\n        required: true,\n        body,\n      };\n    }\n\n    const propertyName = (name: string | ts.PropertyName): ts.PropertyName => {\n      if (typeof name === 'string') {\n        return isValidIdentifier(name) ? factory.createIdentifier(name) : factory.createStringLiteral(name);\n      }\n      return name;\n    };\n\n    const queryArgValues = Object.values(queryArg);\n\n    const isFlatArg = flattenArg && queryArgValues.length === 1;\n    const QueryArg = factory.createTypeReferenceNode(\n      registerInterface(\n        factory.createTypeAliasDeclaration(\n          [factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n          capitalize(operationName + operationNameSuffix + argSuffix),\n          undefined,\n          queryArgValues.length > 0\n            ? isFlatArg\n              ? withQueryComment(\n                  factory.createUnionTypeNode([\n                    queryArgValues[0].type,\n                    ...(!queryArgValues[0].required\n                      ? [factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword)]\n                      : []),\n                  ]),\n                  queryArgValues[0],\n                  false\n                )\n              : factory.createTypeLiteralNode(\n                  queryArgValues.map((def) =>\n                    withQueryComment(\n                      factory.createPropertySignature(\n                        undefined,\n                        propertyName(def.name),\n                        createQuestionToken(!def.required),\n                        def.type\n                      ),\n                      def,\n                      true\n                    )\n                  )\n                )\n            : factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword)\n        )\n      ).name\n    );\n\n    const tagOverrides =\n      overrides && (overrides.providesTags !== undefined || overrides.invalidatesTags !== undefined)\n        ? {\n            ...(overrides.providesTags !== undefined ? { providesTags: overrides.providesTags } : {}),\n            ...(overrides.invalidatesTags !== undefined ? { invalidatesTags: overrides.invalidatesTags } : {}),\n          }\n        : undefined;\n\n    return generateEndpointDefinition({\n      operationName: operationNameSuffix ? capitalize(operationName + operationNameSuffix) : operationName,\n      type: isQuery ? 'query' : 'mutation',\n      Response: ResponseTypeName,\n      QueryArg,\n      queryFn: generateQueryFn({\n        operationDefinition,\n        queryArg,\n        isQuery,\n        isFlatArg,\n        encodePathParams,\n        encodeQueryParams,\n      }),\n      extraEndpointsProps: isQuery\n        ? generateQueryEndpointProps({ operationDefinition })\n        : generateMutationEndpointProps({ operationDefinition }),\n      tags,\n      tagOverrides,\n    });\n  }\n\n  function generateQueryFn({\n    operationDefinition,\n    queryArg,\n    isFlatArg,\n    isQuery,\n    encodePathParams,\n    encodeQueryParams,\n  }: {\n    operationDefinition: OperationDefinition;\n    queryArg: QueryArgDefinitions;\n    isFlatArg: boolean;\n    isQuery: boolean;\n    encodePathParams: boolean;\n    encodeQueryParams: boolean;\n  }) {\n    const { path, verb } = operationDefinition;\n\n    const bodyParameter = Object.values(queryArg).find((def) => def.origin === 'body');\n\n    const rootObject = factory.createIdentifier('queryArg');\n\n    function pickParams(paramIn: string) {\n      return Object.values(queryArg).filter((def) => def.origin === 'param' && def.param.in === paramIn);\n    }\n\n    function createObjectLiteralProperty(parameters: QueryArgDefinition[], propertyName: string) {\n      if (parameters.length === 0) return undefined;\n\n      const properties = parameters.map((param) => {\n        const value = isFlatArg ? rootObject : accessProperty(rootObject, param.name);\n\n        const encodedValue =\n          encodeQueryParams && param.param?.in === 'query'\n            ? factory.createConditionalExpression(\n                factory.createBinaryExpression(value, ts.SyntaxKind.ExclamationEqualsToken, factory.createNull()),\n                undefined,\n                factory.createCallExpression(factory.createIdentifier('encodeURIComponent'), undefined, [\n                  factory.createCallExpression(factory.createIdentifier('String'), undefined, [value]),\n                ]),\n                undefined,\n                factory.createIdentifier('undefined')\n              )\n            : value;\n\n        return createPropertyAssignment(param.originalName, encodedValue);\n      });\n\n      return factory.createPropertyAssignment(\n        factory.createIdentifier(propertyName),\n        factory.createObjectLiteralExpression(properties, true)\n      );\n    }\n\n    return factory.createArrowFunction(\n      undefined,\n      undefined,\n      Object.keys(queryArg).length\n        ? [factory.createParameterDeclaration(undefined, undefined, rootObject, undefined, undefined, undefined)]\n        : [],\n      undefined,\n      factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n      factory.createParenthesizedExpression(\n        factory.createObjectLiteralExpression(\n          [\n            factory.createPropertyAssignment(\n              factory.createIdentifier('url'),\n              generatePathExpression(path, pickParams('path'), rootObject, isFlatArg, encodePathParams)\n            ),\n            isQuery && verb.toUpperCase() === 'GET'\n              ? undefined\n              : factory.createPropertyAssignment(\n                  factory.createIdentifier('method'),\n                  factory.createStringLiteral(verb.toUpperCase())\n                ),\n            bodyParameter === undefined\n              ? undefined\n              : factory.createPropertyAssignment(\n                  factory.createIdentifier('body'),\n                  isFlatArg\n                    ? rootObject\n                    : factory.createPropertyAccessExpression(rootObject, factory.createIdentifier(bodyParameter.name))\n                ),\n            createObjectLiteralProperty(pickParams('cookie'), 'cookies'),\n            createObjectLiteralProperty(pickParams('header'), 'headers'),\n            createObjectLiteralProperty(pickParams('query'), 'params'),\n          ].filter(removeUndefined),\n          false\n        )\n      )\n    );\n  }\n\n  // eslint-disable-next-line no-empty-pattern\n  function generateQueryEndpointProps({}: { operationDefinition: OperationDefinition }): ObjectPropertyDefinitions {\n    return {}; /* TODO needs implementation - skip for now */\n  }\n\n  // eslint-disable-next-line no-empty-pattern\n  function generateMutationEndpointProps({}: { operationDefinition: OperationDefinition }): ObjectPropertyDefinitions {\n    return {}; /* TODO needs implementation - skip for now */\n  }\n}\n\nfunction accessProperty(rootObject: ts.Identifier, propertyName: string) {\n  return isValidIdentifier(propertyName)\n    ? factory.createPropertyAccessExpression(rootObject, factory.createIdentifier(propertyName))\n    : factory.createElementAccessExpression(rootObject, factory.createStringLiteral(propertyName));\n}\n\nfunction generatePathExpression(\n  path: string,\n  pathParameters: QueryArgDefinition[],\n  rootObject: ts.Identifier,\n  isFlatArg: boolean,\n  encodePathParams: boolean\n) {\n  const expressions: Array<[string, string]> = [];\n\n  const head = path.replace(/\\{(.*?)}(.*?)(?=\\{|$)/g, (_, expression, literal) => {\n    const param = pathParameters.find((p) => p.originalName === expression);\n    if (!param) {\n      throw new Error(`path parameter ${expression} does not seem to be defined in '${path}'!`);\n    }\n    expressions.push([param.name, literal]);\n    return '';\n  });\n\n  return expressions.length\n    ? factory.createTemplateExpression(\n        factory.createTemplateHead(head),\n        expressions.map(([prop, literal], index) => {\n          const value = isFlatArg ? rootObject : accessProperty(rootObject, prop);\n          const encodedValue = encodePathParams\n            ? factory.createCallExpression(factory.createIdentifier('encodeURIComponent'), undefined, [\n                factory.createCallExpression(factory.createIdentifier('String'), undefined, [value]),\n              ])\n            : value;\n          return factory.createTemplateSpan(\n            encodedValue,\n            index === expressions.length - 1\n              ? factory.createTemplateTail(literal)\n              : factory.createTemplateMiddle(literal)\n          );\n        })\n      )\n    : factory.createNoSubstitutionTemplateLiteral(head);\n}\n\ntype QueryArgDefinition = {\n  name: string;\n  originalName: string;\n  type: ts.TypeNode;\n  required?: boolean;\n  param?: OpenAPIV3.ParameterObject;\n} & (\n  | {\n      origin: 'param';\n      param: OpenAPIV3.ParameterObject;\n    }\n  | {\n      origin: 'body';\n      body: OpenAPIV3.RequestBodyObject;\n    }\n);\ntype QueryArgDefinitions = Record<string, QueryArgDefinition>;\n","import ts from 'typescript';\nimport semver from 'semver';\n\nconst originalFactory = ts.factory;\n\nfunction createImportSpecifier(propertyName: ts.Identifier | undefined, name: ts.Identifier): ts.ImportSpecifier {\n  if (semver.satisfies(ts.version, '>= 4.5'))\n    // @ts-ignore\n    return originalFactory.createImportSpecifier(false, propertyName, name);\n  // @ts-ignore\n  return originalFactory.createImportSpecifier(propertyName, name);\n}\n\nfunction createExportSpecifier(\n  propertyName: string | ts.Identifier | undefined,\n  name: string | ts.Identifier\n): ts.ExportSpecifier {\n  if (semver.satisfies(ts.version, '>= 4.5'))\n    // @ts-ignore\n    return originalFactory.createExportSpecifier(false, propertyName, name);\n  // @ts-ignore\n  return originalFactory.createExportSpecifier(propertyName, name);\n}\n\nexport const factory = {\n  ...originalFactory,\n  createImportSpecifier,\n  createExportSpecifier,\n};\n","import { factory } from './utils/factory';\nimport ts from 'typescript';\n\nconst defaultEndpointBuilder = factory.createIdentifier('build');\n\nexport type ObjectPropertyDefinitions = Record<string, ts.Expression | undefined>;\nexport function generateObjectProperties(obj: ObjectPropertyDefinitions) {\n  return Object.entries(obj)\n    .filter(([_, v]) => v)\n    .map(([k, v]) => factory.createPropertyAssignment(factory.createIdentifier(k), v as ts.Expression));\n}\n\nexport function generateImportNode(pkg: string, namedImports: Record<string, string>, defaultImportName?: string) {\n  return factory.createImportDeclaration(\n    undefined,\n    factory.createImportClause(\n      false,\n      defaultImportName !== undefined ? factory.createIdentifier(defaultImportName) : undefined,\n      factory.createNamedImports(\n        Object.entries(namedImports).map(([propertyName, name]) =>\n          factory.createImportSpecifier(\n            name === propertyName ? undefined : factory.createIdentifier(propertyName),\n            factory.createIdentifier(name)\n          )\n        )\n      )\n    ),\n    factory.createStringLiteral(pkg)\n  );\n}\n\nexport function generateCreateApiCall({\n  endpointBuilder = defaultEndpointBuilder,\n  endpointDefinitions,\n  tag,\n}: {\n  endpointBuilder?: ts.Identifier;\n  endpointDefinitions: ts.ObjectLiteralExpression;\n  tag: boolean;\n}) {\n  const injectEndpointsObjectLiteralExpression = factory.createObjectLiteralExpression(\n    generateObjectProperties({\n      endpoints: factory.createArrowFunction(\n        undefined,\n        undefined,\n        [factory.createParameterDeclaration(undefined, undefined, endpointBuilder, undefined, undefined, undefined)],\n        undefined,\n        factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n        factory.createParenthesizedExpression(endpointDefinitions)\n      ),\n      overrideExisting: factory.createFalse(),\n    }),\n    true\n  );\n  if (tag) {\n    const enhanceEndpointsObjectLiteralExpression = factory.createObjectLiteralExpression(\n      [factory.createShorthandPropertyAssignment(factory.createIdentifier('addTagTypes'), undefined)],\n      true\n    );\n    return factory.createVariableStatement(\n      undefined,\n      factory.createVariableDeclarationList(\n        [\n          factory.createVariableDeclaration(\n            factory.createIdentifier('injectedRtkApi'),\n            undefined,\n            undefined,\n            factory.createCallExpression(\n              factory.createPropertyAccessExpression(\n                factory.createCallExpression(\n                  factory.createPropertyAccessExpression(\n                    factory.createIdentifier('api'),\n                    factory.createIdentifier('enhanceEndpoints')\n                  ),\n                  undefined,\n                  [enhanceEndpointsObjectLiteralExpression]\n                ),\n                factory.createIdentifier('injectEndpoints')\n              ),\n              undefined,\n              [injectEndpointsObjectLiteralExpression]\n            )\n          ),\n        ],\n        ts.NodeFlags.Const\n      )\n    );\n  }\n\n  return factory.createVariableStatement(\n    undefined,\n    factory.createVariableDeclarationList(\n      [\n        factory.createVariableDeclaration(\n          factory.createIdentifier('injectedRtkApi'),\n          undefined,\n          undefined,\n          factory.createCallExpression(\n            factory.createPropertyAccessExpression(\n              factory.createIdentifier('api'),\n              factory.createIdentifier('injectEndpoints')\n            ),\n            undefined,\n            [injectEndpointsObjectLiteralExpression]\n          )\n        ),\n      ],\n      ts.NodeFlags.Const\n    )\n  );\n}\n\nexport function generateEndpointDefinition({\n  operationName,\n  type,\n  Response,\n  QueryArg,\n  queryFn,\n  endpointBuilder = defaultEndpointBuilder,\n  extraEndpointsProps,\n  tags,\n  tagOverrides,\n}: {\n  operationName: string;\n  type: 'query' | 'mutation';\n  Response: ts.TypeReferenceNode;\n  QueryArg: ts.TypeReferenceNode;\n  queryFn: ts.Expression;\n  endpointBuilder?: ts.Identifier;\n  extraEndpointsProps: ObjectPropertyDefinitions;\n  tags?: string[];\n  tagOverrides?: { providesTags?: string[]; invalidatesTags?: string[] };\n}) {\n  const objectProperties = generateObjectProperties({ query: queryFn, ...extraEndpointsProps });\n  const providesTags =\n    tagOverrides && 'providesTags' in tagOverrides\n      ? tagOverrides.providesTags\n      : type === 'query'\n        ? tags\n        : undefined;\n  const invalidatesTags =\n    tagOverrides && 'invalidatesTags' in tagOverrides\n      ? tagOverrides.invalidatesTags\n      : type === 'mutation'\n        ? tags\n        : undefined;\n\n  if (providesTags !== undefined) {\n    objectProperties.push(\n      factory.createPropertyAssignment(\n        factory.createIdentifier('providesTags'),\n        factory.createArrayLiteralExpression(providesTags.map((tag) => factory.createStringLiteral(tag)), false)\n      )\n    );\n  }\n\n  if (invalidatesTags !== undefined) {\n    objectProperties.push(\n      factory.createPropertyAssignment(\n        factory.createIdentifier('invalidatesTags'),\n        factory.createArrayLiteralExpression(invalidatesTags.map((tag) => factory.createStringLiteral(tag)), false)\n      )\n    );\n  }\n  return factory.createPropertyAssignment(\n    factory.createIdentifier(operationName),\n\n    factory.createCallExpression(\n      factory.createPropertyAccessExpression(endpointBuilder, factory.createIdentifier(type)),\n      [Response, QueryArg],\n      [factory.createObjectLiteralExpression(objectProperties, true)]\n    )\n  );\n}\n\nexport function generateTagTypes({ addTagTypes }: { addTagTypes: string[] }) {\n  return factory.createVariableStatement(\n    [factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n    factory.createVariableDeclarationList(\n      [\n        factory.createVariableDeclaration(\n          factory.createIdentifier('addTagTypes'),\n          undefined,\n          undefined,\n          factory.createAsExpression(\n            factory.createArrayLiteralExpression(\n              addTagTypes.map((tagType) => factory.createStringLiteral(tagType)),\n              true\n            ),\n            factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined)\n          )\n        ),\n      ],\n      ts.NodeFlags.Const\n    )\n  );\n}\n","import ts from 'typescript';\nimport { getOperationName } from 'oazapfts/generate';\nimport { capitalize, isQuery } from '../utils';\nimport type { OperationDefinition, EndpointOverrides, ConfigFile } from '../types';\nimport { getOverrides } from '../generate';\nimport { factory } from '../utils/factory';\n\ntype HooksConfigOptions = NonNullable<ConfigFile['hooks']>;\n\ntype GetReactHookNameParams = {\n  operationDefinition: OperationDefinition;\n  endpointOverrides: EndpointOverrides[] | undefined;\n  config: HooksConfigOptions;\n  operationNameSuffix?: string;\n};\n\ntype CreateBindingParams = {\n  operationDefinition: OperationDefinition;\n  overrides?: EndpointOverrides;\n  isLazy?: boolean;\n  operationNameSuffix?: string;\n};\n\nconst createBinding = ({\n  operationDefinition: { verb, path, operation },\n  overrides,\n  isLazy = false,\n  operationNameSuffix,\n}: CreateBindingParams) =>\n  factory.createBindingElement(\n    undefined,\n    undefined,\n    factory.createIdentifier(\n      `use${isLazy ? 'Lazy' : ''}${capitalize(getOperationName(verb, path, operation.operationId))}${operationNameSuffix ?? ''}${\n        isQuery(verb, overrides) ? 'Query' : 'Mutation'\n      }`\n    ),\n    undefined\n  );\n\nconst getReactHookName = ({ operationDefinition, endpointOverrides, config, operationNameSuffix }: GetReactHookNameParams) => {\n  const overrides = getOverrides(operationDefinition, endpointOverrides);\n\n  const baseParams = {\n    operationDefinition,\n    overrides,\n    operationNameSuffix,\n  };\n\n  const _isQuery = isQuery(operationDefinition.verb, overrides);\n\n  // If `config` is true, just generate everything\n  if (typeof config === 'boolean') {\n    return createBinding(baseParams);\n  }\n\n  // `config` is an object and we need to check for the configuration of each property\n  if (_isQuery) {\n    return [\n      ...(config.queries ? [createBinding(baseParams)] : []),\n      ...(config.lazyQueries ? [createBinding({ ...baseParams, isLazy: true })] : []),\n    ];\n  }\n\n  return config.mutations ? createBinding(baseParams) : [];\n};\n\ntype GenerateReactHooksParams = {\n  exportName: string;\n  operationDefinitions: OperationDefinition[];\n  endpointOverrides: EndpointOverrides[] | undefined;\n  config: HooksConfigOptions;\n  operationNameSuffix?: string;\n};\nexport const generateReactHooks = ({\n  exportName,\n  operationDefinitions,\n  endpointOverrides,\n  config,\n  operationNameSuffix,\n}: GenerateReactHooksParams) =>\n  factory.createVariableStatement(\n    [factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n    factory.createVariableDeclarationList(\n      [\n        factory.createVariableDeclaration(\n          factory.createObjectBindingPattern(\n            operationDefinitions\n              .map((operationDefinition) => getReactHookName({ operationDefinition, endpointOverrides, config, operationNameSuffix }))\n              .flat()\n          ),\n          undefined,\n          undefined,\n          factory.createIdentifier(exportName)\n        ),\n      ],\n      ts.NodeFlags.Const\n    )\n  );\n","export function capitalize(str: string) {\n  return str.replace(str[0], str[0].toUpperCase());\n}\n","import type SwaggerParser from '@apidevtools/swagger-parser';\nimport type { OpenAPIV3 } from 'openapi-types';\n\nexport type OperationDefinition = {\n  path: string;\n  verb: (typeof operationKeys)[number];\n  pathItem: OpenAPIV3.PathItemObject;\n  operation: OpenAPIV3.OperationObject;\n};\n\nexport type ParameterDefinition = OpenAPIV3.ParameterObject;\n\ntype Require<T, K extends keyof T> = { [k in K]-?: NonNullable<T[k]> } & Omit<T, K>;\ntype Optional<T, K extends keyof T> = { [k in K]?: NonNullable<T[k]> } & Omit<T, K>;\ntype Id<T> = { [K in keyof T]: T[K] } & {};\ntype AtLeastOneKey<T> = {\n  [K in keyof T]-?: Pick<T, K> & Partial<T>;\n}[keyof T];\n\nexport const operationKeys = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'] as const;\n\nexport type GenerationOptions = Id<\n  CommonOptions &\n    Optional<OutputFileOptions, 'outputFile'> & {\n      isDataResponse?(\n        code: string,\n        includeDefault: boolean,\n        response: OpenAPIV3.ResponseObject,\n        allResponses: OpenAPIV3.ResponsesObject\n      ): boolean;\n    }\n>;\n\nexport interface CommonOptions {\n  apiFile: string;\n  /**\n   * filename or url\n   */\n  schemaFile: string;\n  /**\n   * @default \"api\"\n   */\n  apiImport?: string;\n  /**\n   * @default \"enhancedApi\"\n   */\n  exportName?: string;\n  /**\n   * @default \"ApiArg\"\n   */\n  argSuffix?: string;\n  /**\n   * @default \"ApiResponse\"\n   */\n  responseSuffix?: string;\n  /**\n   * @default \"\"\n   */\n  operationNameSuffix?: string;\n  /**\n   * `true` will generate hooks for queries and mutations, but no lazyQueries\n   * @default false\n   */\n  hooks?: boolean | { queries: boolean; lazyQueries: boolean; mutations: boolean };\n  /**\n   * `true` will generate a union type for `undefined` properties like: `{ id?: string | undefined }` instead of `{ id?: string }`\n   * @default false\n   */\n  unionUndefined?: boolean;\n  /**\n   * `true` will result in all generated endpoints having `providesTags`/`invalidatesTags` declarations for the `tags` of their respective operation definition\n   * @default false\n   * @see https://redux-toolkit.js.org/rtk-query/usage/code-generation for more information\n   */\n  tag?: boolean;\n  /**\n   * `true` will add `encodeURIComponent` to the generated path parameters\n   * @default false\n   */\n  encodePathParams?: boolean;\n  /**\n   * `true` will add `encodeURIComponent` to the generated query parameters\n   * @default false\n   */\n  encodeQueryParams?: boolean;\n  /**\n   * `true` will \"flatten\" the arg so that you can do things like `useGetEntityById(1)` instead of `useGetEntityById({ entityId: 1 })`\n   * @default false\n   */\n  flattenArg?: boolean;\n  /**\n   * If set to `true`, the default response type will be included in the generated code for all endpoints.\n   * @default false\n   * @see https://swagger.io/docs/specification/describing-responses/#default\n   */\n  includeDefault?: boolean;\n  /**\n   * `true` will not generate separate types for read-only and write-only properties.\n   * @default false\n   */\n  mergeReadWriteOnly?: boolean;\n  /**\n   * HTTPResolverOptions object that is passed to the SwaggerParser bundle function.\n   */\n  httpResolverOptions?: SwaggerParser.HTTPResolverOptions;\n\n  /**\n   * If present the given file will be used as prettier config when formatting the generated code. If undefined the default prettier config\n   * resolution mechanism will be used.\n   * @default undefined\n   */\n  prettierConfigFile?: string;\n\n  /**\n   * Determines the fallback type for empty schemas.\n   *\n   * If set to **`true`**, **`unknown`** will be used\n   * instead of **`any`** when a schema is empty.\n   *\n   * @default false\n   * @since 2.1.0\n   */\n  useUnknown?: boolean;\n  /**\n   * @default false\n   * Will generate imports with file extension matching the expected compiled output of the api file\n   */\n  esmExtensions?: boolean;\n  /**\n   * @default false\n   * Will generate regex constants for pattern keywords in the schema\n   */\n  outputRegexConstants?: boolean;\n}\n\nexport type TextMatcher = string | RegExp | (string | RegExp)[];\n\nexport type EndpointMatcherFunction = (operationName: string, operationDefinition: OperationDefinition) => boolean;\n\nexport type EndpointMatcher = TextMatcher | EndpointMatcherFunction;\n\nexport type ParameterMatcherFunction = (parameterName: string, parameterDefinition: ParameterDefinition) => boolean;\n\nexport type ParameterMatcher = TextMatcher | ParameterMatcherFunction;\n\nexport interface OutputFileOptions extends Partial<CommonOptions> {\n  outputFile: string;\n  filterEndpoints?: EndpointMatcher;\n  endpointOverrides?: EndpointOverrides[];\n  /**\n   * If passed as true it will generate TS enums instead of union of strings\n   * @default false\n   */\n  useEnumType?: boolean;\n}\n\n/**\n * Configuration for overriding specific endpoint behaviors during code generation.\n * At least one override option (besides `pattern`) must be specified.\n */\nexport type EndpointOverrides = {\n  /** Pattern to match endpoint names. Can be a string, RegExp, or matcher function. */\n  pattern: EndpointMatcher;\n} & AtLeastOneKey<{\n  /** Override the endpoint type (query vs mutation) when the inferred type is incorrect. */\n  type: 'mutation' | 'query';\n  /** Filter which parameters are included in the generated endpoint. Path parameters cannot be filtered. */\n  parameterFilter: ParameterMatcher;\n  /**\n   * Override providesTags for this endpoint.\n   * Takes precedence over auto-generated tags from OpenAPI spec.\n   * Use an empty array to explicitly omit providesTags.\n   * Works regardless of the global `tag` setting and endpoint type.\n   * @example ['Pet', 'SinglePet']\n   */\n  providesTags: string[];\n  /**\n   * Override invalidatesTags for this endpoint.\n   * Takes precedence over auto-generated tags from OpenAPI spec.\n   * Use an empty array to explicitly omit invalidatesTags.\n   * Works regardless of the global `tag` setting and endpoint type.\n   * @example ['Pet', 'PetList']\n   */\n  invalidatesTags: string[];\n}>;\n\nexport type ConfigFile =\n  | Id<Require<CommonOptions & OutputFileOptions, 'outputFile'>>\n  | Id<\n      Omit<CommonOptions, 'outputFile'> & {\n        outputFiles: { [outputFile: string]: Omit<OutputFileOptions, 'outputFile'> };\n      }\n    >;\n","import type { OpenAPIV3 } from 'openapi-types';\nimport type { OperationDefinition } from '../types';\nimport { operationKeys } from '../types';\n\nexport function getOperationDefinitions(v3Doc: OpenAPIV3.Document): OperationDefinition[] {\n  return Object.entries(v3Doc.paths).flatMap(([path, pathItem]) =>\n    !pathItem\n      ? []\n      : Object.entries(pathItem)\n          .filter((arg): arg is [(typeof operationKeys)[number], OpenAPIV3.OperationObject] =>\n            operationKeys.includes(arg[0] as any)\n          )\n          .map(([verb, operation]) => ({\n            path,\n            verb,\n            pathItem,\n            operation,\n          }))\n  );\n}\n","import SwaggerParser from '@apidevtools/swagger-parser';\nimport type { OpenAPIV3 } from 'openapi-types';\n// @ts-ignore\nimport converter from 'swagger2openapi';\n\nexport async function getV3Doc(\n  spec: string,\n  httpResolverOptions?: SwaggerParser.HTTPResolverOptions\n): Promise<OpenAPIV3.Document> {\n  const doc = await SwaggerParser.bundle(spec, {\n    resolve: {\n      http: httpResolverOptions,\n    },\n  });\n\n  const isOpenApiV3 = 'openapi' in doc && doc.openapi.startsWith('3');\n\n  if (isOpenApiV3) {\n    return doc as OpenAPIV3.Document;\n  } else {\n    const result = await converter.convertObj(doc, {});\n    return result.openapi as OpenAPIV3.Document;\n  }\n}\n","import type { EndpointOverrides, operationKeys } from '../types';\n\nexport function isQuery(verb: (typeof operationKeys)[number], overrides: EndpointOverrides | undefined) {\n  if (overrides?.type) {\n    return overrides.type === 'query';\n  }\n  return verb === 'get';\n}\n","export function isValidUrl(string: string) {\n  try {\n    new URL(string);\n  } catch (_) {\n    return false;\n  }\n\n  return true;\n}\n","import path from 'node:path';\nimport prettier from 'prettier';\nimport type { BuiltInParserName } from 'prettier';\n\nconst EXTENSION_TO_PARSER: Record<string, BuiltInParserName> = {\n  ts: 'typescript',\n  tsx: 'typescript',\n  js: 'babel',\n  jsx: 'babel',\n  'js.flow': 'flow',\n  flow: 'flow',\n  gql: 'graphql',\n  graphql: 'graphql',\n  css: 'scss',\n  scss: 'scss',\n  less: 'scss',\n  stylus: 'scss',\n  markdown: 'markdown',\n  md: 'markdown',\n  json: 'json',\n};\n\nexport async function prettify(filePath: string | null, content: string, prettierConfigFile?: string): Promise<string> {\n  let config = null;\n  let parser = 'typescript';\n\n  if (filePath) {\n    const fileExtension = path.extname(filePath).slice(1);\n    parser = EXTENSION_TO_PARSER[fileExtension];\n    config = await prettier.resolveConfig(process.cwd(), {\n      useCache: true,\n      editorconfig: !prettierConfigFile,\n      config: prettierConfigFile,\n    });\n  } else if (prettierConfigFile) {\n    config = await prettier.resolveConfig(process.cwd(), {\n      useCache: true,\n      config: prettierConfigFile,\n    });\n  }\n\n  return prettier.format(content, {\n    parser,\n    ...config,\n  });\n}\n","export function removeUndefined<T>(t: T | undefined): t is T {\n  return typeof t !== 'undefined';\n}\n"],"mappings":"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","names":["path","path","ts","ts","ts","path","path","ts","getOperationName","path","ts","operationDefinitions","tag","isQuery","encodePathParams","encodeQueryParams","require","path"]}