{"version":3,"file":"run-BlWEfHq_.cjs","names":["process","fs","path","x","process","styleText","clack","detectPackageManager","path","fs"],"sources":["../../../internals/shared/src/constants.ts","../../../internals/shared/src/init.ts","../src/runners/init/utils.ts","../src/runners/init/run.ts"],"sourcesContent":["import type { PluginOption } from './types.ts'\n\nexport const KUBB_CONFIG_FILENAME = 'kubb.config.ts' as const\n\nexport const KUBB_PACKAGE_NAME = 'kubb' as const\n\nexport const initDefaults = {\n  inputPath: './openapi.yaml',\n  outputPath: './src/gen',\n  plugins: ['plugin-ts'],\n} as const\n\nexport const availablePlugins: Array<PluginOption> = [\n  {\n    value: 'plugin-ts',\n    label: 'TypeScript',\n    hint: 'Recommended',\n    packageName: '@kubb/plugin-ts',\n    importName: 'pluginTs',\n    category: 'types',\n  },\n  {\n    value: 'plugin-axios',\n    label: 'Axios Client',\n    packageName: '@kubb/plugin-axios',\n    importName: 'pluginAxios',\n    category: 'client',\n  },\n  {\n    value: 'plugin-fetch',\n    label: 'Fetch Client',\n    packageName: '@kubb/plugin-fetch',\n    importName: 'pluginFetch',\n    category: 'client',\n  },\n  {\n    value: 'plugin-react-query',\n    label: 'React Query / TanStack Query',\n    packageName: '@kubb/plugin-react-query',\n    importName: 'pluginReactQuery',\n    category: 'framework',\n  },\n  {\n    value: 'plugin-vue-query',\n    label: 'Vue Query',\n    packageName: '@kubb/plugin-vue-query',\n    importName: 'pluginVueQuery',\n    category: 'framework',\n  },\n  {\n    value: 'plugin-zod',\n    label: 'Zod Schemas',\n    packageName: '@kubb/plugin-zod',\n    importName: 'pluginZod',\n    category: 'validation',\n  },\n  {\n    value: 'plugin-faker',\n    label: 'Faker.js Mocks',\n    packageName: '@kubb/plugin-faker',\n    importName: 'pluginFaker',\n    category: 'mocks',\n  },\n  {\n    value: 'plugin-msw',\n    label: 'MSW Handlers',\n    packageName: '@kubb/plugin-msw',\n    importName: 'pluginMsw',\n    category: 'mocks',\n  },\n  {\n    value: 'plugin-cypress',\n    label: 'Cypress Tests',\n    packageName: '@kubb/plugin-cypress',\n    importName: 'pluginCypress',\n    category: 'testing',\n  },\n  {\n    value: 'plugin-mcp',\n    label: 'MCP Server (AI / Model Context Protocol)',\n    packageName: '@kubb/plugin-mcp',\n    importName: 'pluginMcp',\n    category: 'ai',\n  },\n  {\n    value: 'plugin-redoc',\n    label: 'ReDoc Documentation',\n    packageName: '@kubb/plugin-redoc',\n    importName: 'pluginRedoc',\n    category: 'documentation',\n  },\n]\n","import { availablePlugins, KUBB_PACKAGE_NAME } from './constants.ts'\nimport type { PluginOption } from './types.ts'\n\n/**\n * Resolves a comma-separated plugin flag (e.g. `--plugins plugin-ts,plugin-zod`) into the\n * matching known plugin options. Unrecognized names are dropped, and a missing flag yields\n * an empty list.\n */\nexport function resolvePlugins(pluginsFlag: string | undefined): Array<PluginOption> {\n  if (!pluginsFlag) {\n    return []\n  }\n  const requested = pluginsFlag\n    .split(',')\n    .map((value) => value.trim())\n    .filter(Boolean)\n  return availablePlugins.filter((plugin) => requested.includes(plugin.value))\n}\n\nexport function generateConfigFile({\n  selectedPlugins,\n  inputPath,\n  outputPath,\n}: {\n  selectedPlugins: Array<PluginOption>\n  inputPath: string\n  outputPath: string\n}): string {\n  const imports = selectedPlugins.map((plugin) => `import { ${plugin.importName} } from '${plugin.packageName}'`).join('\\n')\n\n  const pluginConfigs = selectedPlugins.map((plugin) => `    ${plugin.importName}(),`).join('\\n')\n\n  return `import { defineConfig } from 'kubb/config'\n${imports}\n\nexport default defineConfig({\n  input: '${inputPath}',\n  output: {\n    path: '${outputPath}',\n    clean: true,\n  },\n  plugins: [\n${pluginConfigs}\n  ],\n})\n`\n}\n\n/**\n * Turns package names into install specifiers for the wizard.\n *\n * `kubb` is pinned to the exact version of the running CLI, since both ship from the same release\n * and resolving `kubb@beta` separately can land on a different version than the CLI doing the\n * scaffolding. Plugins release from their own repo on their own cadence, so they follow the\n * release channel of the CLI through its dist-tag.\n */\nexport function resolveInstallVersions({ packages, version }: { packages: Array<string>; version: string }): Array<string> {\n  const prerelease = version.match(/-([a-z]+)/)?.[1]\n  const tag = prerelease ?? 'latest'\n\n  return packages.map((name) => (name === KUBB_PACKAGE_NAME ? `${name}@${version}` : `${name}@${tag}`))\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport process from 'node:process'\nimport { x } from 'tinyexec'\nimport type { PackageManagerInfo, PackageManagerName } from '../../tools.ts'\n\n/**\n * Returns `true` when a `package.json` exists at `cwd`.\n */\nexport function hasPackageJson(cwd: string = process.cwd()): boolean {\n  return fs.existsSync(path.join(cwd, 'package.json'))\n}\n\n/**\n * Initializes a new `package.json` at `cwd` using the detected package manager.\n */\nexport async function initPackageJson(cwd: string, packageManager: PackageManagerInfo): Promise<void> {\n  const commands: Record<PackageManagerName, Array<string>> = {\n    npm: ['init', '-y'],\n    pnpm: ['init'],\n    yarn: ['init', '-y'],\n    bun: ['init', '-y'],\n  }\n\n  await x(packageManager.name, commands[packageManager.name], {\n    nodeOptions: { cwd, stdio: 'inherit' },\n    throwOnError: true,\n  })\n}\n\n/**\n * Installs the given packages at `cwd` using the detected package manager.\n */\nexport async function installPackages(packages: Array<string>, packageManager: PackageManagerInfo, cwd: string = process.cwd()): Promise<void> {\n  await x(packageManager.name, [...packageManager.installCommand, ...packages], {\n    nodeOptions: { cwd, stdio: 'inherit' },\n    throwOnError: true,\n  })\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport process from 'node:process'\nimport { styleText } from 'node:util'\nimport * as clack from '@clack/prompts'\nimport {\n  availablePlugins,\n  generateConfigFile,\n  initDefaults,\n  KUBB_CONFIG_FILENAME,\n  KUBB_PACKAGE_NAME,\n  type PluginOption,\n  resolveInstallVersions,\n  resolvePlugins,\n} from '@internals/shared'\nimport { hasPackageJson, initPackageJson, installPackages } from './utils.ts'\nimport { detectPackageManager } from '../../tools.ts'\n\nfunction cancelAndExit(message = 'Operation canceled.'): never {\n  clack.cancel(message)\n  process.exit(0)\n}\n\ntype InitOptions = {\n  /**\n   * When `true`, skips all interactive prompts and uses default values.\n   */\n  yes: boolean\n  /**\n   * Current `@kubb/cli` version string, shown in the closing outro.\n   */\n  version: string\n  /**\n   * Input path flag value from `--input`. When provided, skips the input prompt.\n   */\n  input?: string\n  /**\n   * Output directory flag value from `--output`. When provided, skips the output prompt.\n   */\n  output?: string\n  /**\n   * Comma-separated plugin list from `--plugins`, e.g. `'plugin-ts,plugin-zod'`. When provided, skips the plugin selection prompt.\n   */\n  plugins?: string\n}\n\n/**\n * Runs the interactive Kubb scaffolding wizard.\n * Detects the package manager, prompts for input/output paths and plugins, installs packages, and writes `kubb.config.ts`.\n * Pass `yes: true` to skip all prompts and use defaults.\n */\nexport async function run({ yes, version, input: inputFlag, output: outputFlag, plugins: pluginsFlag }: InitOptions): Promise<void> {\n  const cwd = process.cwd()\n\n  clack.intro(styleText('bgCyan', styleText('black', ' Kubb Init ')))\n\n  /**\n   * Returns `flag` when provided, the `defaultValue` when `yes` is set,\n   * or calls `prompt()` for interactive input. Exits on cancellation.\n   */\n  async function resolveOrPrompt<T>(flag: T | undefined, defaultValue: T, logLabel: string, prompt: () => Promise<T | symbol>): Promise<T> {\n    if (flag !== undefined) {\n      clack.log.info(`${logLabel}: ${styleText('cyan', String(flag))}`)\n      return flag\n    }\n    if (yes) {\n      clack.log.info(`${logLabel}: ${styleText('cyan', String(defaultValue))}`)\n      return defaultValue\n    }\n    const result = await prompt()\n    if (clack.isCancel(result)) cancelAndExit()\n    return result as T\n  }\n\n  try {\n    // Check/create package.json, detect package manager once after the block\n    if (!hasPackageJson(cwd)) {\n      if (!yes) {\n        const shouldInit = await clack.confirm({\n          message: 'No package.json found. Would you like to create one?',\n          initialValue: true,\n        })\n\n        if (clack.isCancel(shouldInit) || !shouldInit) {\n          cancelAndExit()\n        }\n      }\n\n      const packageManager = detectPackageManager(cwd)\n      const spinner = clack.spinner()\n      spinner.start(`Initializing package.json with ${packageManager.name}`)\n      await initPackageJson(cwd, packageManager)\n      spinner.stop(`Created package.json with ${packageManager.name}`)\n    }\n\n    const packageManager = detectPackageManager(cwd)\n    if (hasPackageJson(cwd)) {\n      clack.log.info(`Detected package manager: ${styleText('cyan', packageManager.name)}`)\n    }\n\n    // Prompt for OpenAPI spec path\n    const inputPath = await resolveOrPrompt(inputFlag, initDefaults.inputPath, 'Using input path', () =>\n      clack.text({\n        message: 'Where is your OpenAPI specification located?',\n        placeholder: initDefaults.inputPath,\n        defaultValue: initDefaults.inputPath,\n        validate: (value) => {\n          if (!value) return 'Input path is required'\n        },\n      }),\n    )\n\n    // Prompt for output directory\n    const outputPath = await resolveOrPrompt(outputFlag, initDefaults.outputPath, 'Using output path', () =>\n      clack.text({\n        message: 'Where should the generated files be output?',\n        placeholder: initDefaults.outputPath,\n        defaultValue: initDefaults.outputPath,\n        validate: (value) => {\n          if (!value) return 'Output path is required'\n        },\n      }),\n    )\n\n    // Plugin selection\n    const defaultPlugins = availablePlugins.filter((p) => (initDefaults.plugins as ReadonlyArray<string>).includes(p.value))\n    const pluginLabel = (plugins: Array<PluginOption>) => styleText('cyan', plugins.map((p) => p.label).join(', '))\n\n    const selectedPlugins: Array<PluginOption> = await (async () => {\n      if (pluginsFlag) {\n        const plugins = resolvePlugins(pluginsFlag)\n        if (plugins.length === 0) {\n          clack.log.warn(`No valid plugins found in --plugins value; falling back to default: ${pluginLabel(defaultPlugins)}`)\n          return defaultPlugins\n        }\n        clack.log.info(`Using plugins: ${pluginLabel(plugins)}`)\n        return plugins\n      }\n      if (yes) {\n        clack.log.info(`Using plugins: ${pluginLabel(defaultPlugins)}`)\n        return defaultPlugins\n      }\n      const values = await clack.multiselect({\n        message: 'Select plugins to use:',\n        options: availablePlugins.map(({ value, label, hint }) => ({ value, label, hint })),\n        initialValues: [...initDefaults.plugins],\n        required: true,\n      })\n      if (clack.isCancel(values)) cancelAndExit()\n      return availablePlugins.filter((p) => (values as Array<string>).includes(p.value))\n    })()\n\n    // Install packages, matching the release of the running CLI\n    const packagesToInstall = resolveInstallVersions({ packages: [KUBB_PACKAGE_NAME, ...selectedPlugins.map((p) => p.packageName)], version })\n\n    const spinner = clack.spinner()\n    spinner.start(`Installing ${packagesToInstall.length} packages with ${packageManager.name}`)\n\n    try {\n      await installPackages(packagesToInstall, packageManager, cwd)\n      spinner.stop(`Installed ${packagesToInstall.length} packages`)\n    } catch (error) {\n      spinner.stop('Installation failed')\n      throw error\n    }\n\n    // Generate config file\n    const configSpinner = clack.spinner()\n    configSpinner.start(`Creating ${KUBB_CONFIG_FILENAME}`)\n\n    const configContent = generateConfigFile({ selectedPlugins, inputPath, outputPath })\n    const configPath = path.join(cwd, KUBB_CONFIG_FILENAME)\n\n    if (fs.existsSync(configPath)) {\n      configSpinner.stop(`${KUBB_CONFIG_FILENAME} already exists`)\n\n      if (!yes) {\n        const shouldOverwrite = await clack.confirm({\n          message: `${KUBB_CONFIG_FILENAME} already exists. Overwrite?`,\n          initialValue: false,\n        })\n\n        if (clack.isCancel(shouldOverwrite) || !shouldOverwrite) {\n          cancelAndExit('Keeping existing configuration. Packages have been installed.')\n        }\n      }\n\n      configSpinner.start(`Overwriting ${KUBB_CONFIG_FILENAME}`)\n    }\n\n    await fs.promises.writeFile(configPath, configContent, 'utf-8')\n\n    configSpinner.stop(`Created ${KUBB_CONFIG_FILENAME}`)\n\n    clack.outro(\n      styleText('green', '✓ All set!') +\n        '\\n\\n' +\n        styleText('dim', 'Next steps:') +\n        '\\n' +\n        styleText('cyan', `  1. Make sure your OpenAPI spec is at: ${inputPath}`) +\n        '\\n' +\n        styleText('cyan', '  2. Generate code with: npx kubb generate') +\n        '\\n' +\n        styleText('cyan', `  3. Find generated files in: ${outputPath}`) +\n        '\\n\\n' +\n        styleText('dim', `Using ${packageManager.name} • Kubb v${version}`),\n    )\n  } catch (error) {\n    clack.log.error(styleText('red', 'An error occurred during initialization'))\n    if (error instanceof Error) {\n      clack.log.error(error.message)\n    }\n    process.exit(1)\n  }\n}\n"],"mappings":"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"}