{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-tanstack-query/dist/index.cjs","../src/plugin.ts","../src/OperationGenerator.tsx","../src/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/swagger-tanstack-query/dist/index.cjs","sourcesContent":[null,"import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\nimport { getGroupedByTagFiles } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport { pluginZodName } from '@kubb/swagger-zod'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { Mutation, Operations, Query, QueryKey, QueryOptions } from './components/index.ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { QueryImports } from './components/QueryImports.tsx'\nimport type { PluginTanstackQuery } from './types.ts'\n\nexport const pluginTanstackQueryName = 'plugin-tanstack-query' satisfies PluginTanstackQuery['name']\n\nexport const pluginTanstackQuery = createPlugin<PluginTanstackQuery>((options) => {\n  const {\n    output = { path: 'hooks' },\n    group,\n    exclude = [],\n    include,\n    override = [],\n    framework = 'react',\n    parser,\n    suspense = {},\n    infinite,\n    transformers = {},\n    dataReturnType = 'data',\n    pathParamsType = 'inline',\n    mutate = {},\n    query = {},\n    queryOptions = {},\n    templates,\n  } = options\n  const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n  return {\n    name: pluginTanstackQueryName,\n    options: {\n      extName: output.extName,\n      framework,\n      client: {\n        importPath: '@kubb/swagger-client/client',\n        ...options.client,\n      },\n      dataReturnType,\n      pathParamsType,\n      infinite: infinite\n        ? {\n            queryParam: 'id',\n            initialPageParam: 0,\n            cursorParam: undefined,\n            ...infinite,\n          }\n        : false,\n      suspense,\n      query: query\n        ? {\n            queryKey: (key: unknown[]) => key,\n            methods: ['get'],\n            ...query,\n          }\n        : false,\n      queryOptions,\n      mutate: mutate\n        ? {\n            variablesType: 'hook',\n            methods: ['post', 'put', 'patch', 'delete'],\n            ...mutate,\n          }\n        : false,\n      templates: {\n        mutation: Mutation.templates,\n        query: Query.templates,\n        queryOptions: QueryOptions.templates,\n        queryKey: QueryKey.templates,\n        queryImports: QueryImports.templates,\n        operations: Operations.templates,\n        ...templates,\n      },\n      parser,\n    },\n    pre: [pluginOasName, pluginTsName, parser === 'zod' ? pluginZodName : undefined].filter(Boolean),\n    resolvePath(baseName, pathMode, options) {\n      const root = path.resolve(this.config.root, this.config.output.path)\n      const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n      if (mode === 'single') {\n        /**\n         * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n         * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n         */\n        return path.resolve(root, output.path)\n      }\n\n      if (options?.tag && group?.type === 'tag') {\n        const tag = camelCase(options.tag)\n\n        return path.resolve(root, renderTemplate(template, { tag }), baseName)\n      }\n\n      return path.resolve(root, output.path, baseName)\n    },\n    resolveName(name, type) {\n      let resolvedName = camelCase(name)\n\n      if (type === 'file' || type === 'function') {\n        if (framework === 'react' || framework === 'vue') {\n          resolvedName = camelCase(name, {\n            prefix: 'use',\n            isFile: type === 'file',\n          })\n        }\n\n        if (framework === 'svelte' || framework === 'solid') {\n          resolvedName = camelCase(name, {\n            suffix: 'query',\n            isFile: type === 'file',\n          })\n        }\n      }\n      if (type === 'type') {\n        resolvedName = pascalCase(name)\n      }\n\n      if (type) {\n        return transformers?.name?.(resolvedName, type) || resolvedName\n      }\n\n      return resolvedName\n    },\n    async buildStart() {\n      const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n      const oas = await swaggerPlugin.api.getOas()\n      const root = path.resolve(this.config.root, this.config.output.path)\n      const mode = FileManager.getMode(path.resolve(root, output.path))\n\n      const operationGenerator = new OperationGenerator(this.plugin.options, {\n        oas,\n        pluginManager: this.pluginManager,\n        plugin: this.plugin,\n        contentType: swaggerPlugin.api.contentType,\n        exclude,\n        include,\n        override,\n        mode,\n      })\n\n      const files = await operationGenerator.build()\n      await this.addFile(...files)\n    },\n    async writeFile(path, source) {\n      if (!path.endsWith('.ts') || !source) {\n        return\n      }\n\n      return this.fileManager.write(path, source, { sanity: false })\n    },\n    async buildEnd() {\n      if (this.config.output.write === false) {\n        return\n      }\n\n      const root = path.resolve(this.config.root, this.config.output.path)\n\n      if (group?.type === 'tag') {\n        const rootFiles = await getGroupedByTagFiles({\n          logger: this.logger,\n          files: this.fileManager.files,\n          plugin: this.plugin,\n          template,\n          exportAs: group.exportAs || '{{tag}}Hooks',\n          root,\n          output,\n        })\n\n        await this.addFile(...rootFiles)\n      }\n\n      await this.fileManager.addIndexes({\n        root,\n        output,\n        meta: { pluginKey: this.plugin.key },\n        logger: this.logger,\n      })\n    },\n  }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { Mutation } from './components/Mutation.tsx'\nimport { Operations } from './components/Operations.tsx'\nimport { Query } from './components/Query.tsx'\nimport { QueryKey } from './components/QueryKey.tsx'\nimport { QueryOptions } from './components/QueryOptions.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport { QueryImports } from './components/QueryImports.tsx'\nimport type { FileMeta, PluginTanstackQuery } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTanstackQuery['resolvedOptions'], PluginTanstackQuery, FileMeta> {\n  async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n    const { pluginManager, oas, plugin, mode } = this.context\n\n    const root = createRoot({\n      logger: pluginManager.logger,\n    })\n\n    const templates = {\n      mutation: Mutation.templates,\n      query: Query.templates,\n      queryOptions: QueryOptions.templates,\n      queryKey: QueryKey.templates,\n      queryImports: QueryImports.templates,\n      operations: Operations.templates,\n      ...this.options.templates,\n    }\n\n    root.render(\n      <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n        <Oas oas={oas} operations={operations} generator={this}>\n          {templates.operations && <Operations.File templates={templates.operations} />}\n        </Oas>\n      </App>,\n    )\n\n    return root.files\n  }\n\n  async operation(operation: Operation, options: PluginTanstackQuery['resolvedOptions']): OperationMethodResult<FileMeta> {\n    const { oas, pluginManager, plugin, mode } = this.context\n\n    const root = createRoot({\n      logger: pluginManager.logger,\n    })\n\n    const templates = {\n      mutation: Mutation.templates,\n      query: Query.templates,\n      queryOptions: QueryOptions.templates,\n      queryKey: QueryKey.templates,\n      queryImports: QueryImports.templates,\n      ...options.templates,\n    }\n\n    const isQuery = typeof options.query === 'boolean' ? true : options.query?.methods.some((method) => operation.method === method)\n    const isMutate = !isQuery && options.mutate && options.mutate.methods.some((method) => operation.method === method)\n\n    root.render(\n      <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n        <Oas oas={oas} operations={[operation]} generator={this}>\n          <Oas.Operation operation={operation}>\n            {isMutate && templates?.mutation && <Mutation.File templates={templates.mutation} />}\n            {isQuery && templates?.query && templates.queryKey && templates.queryOptions && templates.queryImports && (\n              <Query.File\n                templates={{\n                  query: templates.query,\n                  queryKey: templates.queryKey,\n                  queryOptions: templates.queryOptions,\n                  queryImports: templates.queryImports,\n                }}\n              />\n            )}\n          </Oas.Operation>\n        </Oas>\n      </App>,\n    )\n\n    return root.files\n  }\n}\n","import { pluginTanstackQuery } from './plugin.ts'\n\nexport { pluginTanstackQuery, pluginTanstackQueryName } from './plugin.ts'\nexport type { PluginTanstackQuery } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTanstackQuery } from '@kubb/swagger-tanstack-query'` instead\n */\nconst definePluginDefault = pluginTanstackQuery\n/**\n * @deprecated Use `import { pluginTanstackQuery } from '@kubb/swagger-tanstack-query'` instead\n */\nexport const definePlugin = pluginTanstackQuery\n\nexport default definePluginDefault\n"]}