@kubb/cli 5.0.0-alpha.36 → 5.0.0-alpha.39
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/bin/kubb.js +6 -0
- package/dist/{agent-D1I8zBrQ.js → agent-C5JBC9Q9.js} +3 -3
- package/dist/{agent-D1I8zBrQ.js.map → agent-C5JBC9Q9.js.map} +1 -1
- package/dist/{agent-CRQdwSar.cjs → agent-CWitLsL9.cjs} +47 -29
- package/dist/agent-CWitLsL9.cjs.map +1 -0
- package/dist/{agent-yOLMZKYB.cjs → agent-DLmDQD0F.cjs} +3 -3
- package/dist/{agent-yOLMZKYB.cjs.map → agent-DLmDQD0F.cjs.map} +1 -1
- package/dist/agent-poGbscec.js +105 -0
- package/dist/agent-poGbscec.js.map +1 -0
- package/dist/errors-CLCjoSg0.cjs.map +1 -1
- package/dist/errors-CjPmyZHy.js.map +1 -1
- package/dist/{generate-BqY9Y4hu.js → generate-D2Hks9WU.js} +2 -2
- package/dist/{generate-BqY9Y4hu.js.map → generate-D2Hks9WU.js.map} +1 -1
- package/dist/{generate-Cf1qSeSJ.cjs → generate-DFLmItdl.cjs} +132 -7
- package/dist/generate-DFLmItdl.cjs.map +1 -0
- package/dist/{generate-tDgmJWNE.js → generate-DKDEIomA.js} +129 -4
- package/dist/generate-DKDEIomA.js.map +1 -0
- package/dist/{generate-DLF8yBO-.cjs → generate-igqqE8kf.cjs} +2 -2
- package/dist/{generate-DLF8yBO-.cjs.map → generate-igqqE8kf.cjs.map} +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.js +6 -6
- package/dist/{init-DsJPxNVQ.js → init-COdIsFXI.js} +2 -2
- package/dist/{init-DsJPxNVQ.js.map → init-COdIsFXI.js.map} +1 -1
- package/dist/{init-COClpOHO.cjs → init-SDK46-nF.cjs} +2 -2
- package/dist/{init-COClpOHO.cjs.map → init-SDK46-nF.cjs.map} +1 -1
- package/dist/init-cAbMOLut.cjs.map +1 -1
- package/dist/init-hcm7zvPn.js.map +1 -1
- package/dist/{mcp-BCpQsb0N.js → mcp-BWcUd86Y.js} +3 -3
- package/dist/{mcp-BCpQsb0N.js.map → mcp-BWcUd86Y.js.map} +1 -1
- package/dist/{mcp-CxuctqmK.js → mcp-B_FoDCTh.js} +9 -2
- package/dist/mcp-B_FoDCTh.js.map +1 -0
- package/dist/{mcp-9yURBP26.cjs → mcp-STc97s14.cjs} +9 -3
- package/dist/mcp-STc97s14.cjs.map +1 -0
- package/dist/{mcp-SALpMGkp.cjs → mcp-aRv8LwaD.cjs} +3 -3
- package/dist/{mcp-SALpMGkp.cjs.map → mcp-aRv8LwaD.cjs.map} +1 -1
- package/dist/package-B8NEPBIS.js +6 -0
- package/dist/package-B8NEPBIS.js.map +1 -0
- package/dist/{package-_aRwmOp5.cjs → package-Dd9j6cPm.cjs} +2 -2
- package/dist/package-Dd9j6cPm.cjs.map +1 -0
- package/dist/{validate-DPTV1XRk.cjs → validate-B3kTGFEl.cjs} +3 -3
- package/dist/{validate-DPTV1XRk.cjs.map → validate-B3kTGFEl.cjs.map} +1 -1
- package/dist/{validate-BLlD33VV.js → validate-COWutx4Y.js} +3 -3
- package/dist/{validate-BLlD33VV.js.map → validate-COWutx4Y.js.map} +1 -1
- package/dist/{validate-DIKeUU8K.cjs → validate-CqwT945Z.cjs} +3 -11
- package/dist/validate-CqwT945Z.cjs.map +1 -0
- package/dist/{validate-CIS8nJdd.js → validate-NZ0mduJ3.js} +3 -11
- package/dist/validate-NZ0mduJ3.js.map +1 -0
- package/package.json +6 -7
- package/src/runners/agent.ts +54 -29
- package/src/runners/generate.ts +1 -5
- package/src/runners/validate.ts +3 -13
- package/src/utils/getSummary.ts +1 -1
- package/bin/kubb.cjs +0 -18
- package/dist/agent-B_THuM3X.js +0 -87
- package/dist/agent-B_THuM3X.js.map +0 -1
- package/dist/agent-CRQdwSar.cjs.map +0 -1
- package/dist/generate-Cf1qSeSJ.cjs.map +0 -1
- package/dist/generate-tDgmJWNE.js.map +0 -1
- package/dist/jiti-Cd3S0xwr.cjs +0 -16
- package/dist/jiti-Cd3S0xwr.cjs.map +0 -1
- package/dist/jiti-e08mD2Ph.js +0 -11
- package/dist/jiti-e08mD2Ph.js.map +0 -1
- package/dist/mcp-9yURBP26.cjs.map +0 -1
- package/dist/mcp-CxuctqmK.js.map +0 -1
- package/dist/package-Cx_eJU6W.js +0 -6
- package/dist/package-Cx_eJU6W.js.map +0 -1
- package/dist/package-_aRwmOp5.cjs.map +0 -1
- package/dist/validate-CIS8nJdd.js.map +0 -1
- package/dist/validate-DIKeUU8K.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-hcm7zvPn.js","names":["process"],"sources":["../../../internals/utils/src/packageManager.ts","../src/utils/packageManager.ts","../src/runners/init.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\n/**\n * Supported package manager identifiers.\n *\n * @example\n * ```ts\n * const pm: PackageManagerName = 'pnpm'\n * ```\n */\nexport type PackageManagerName = 'npm' | 'pnpm' | 'yarn' | 'bun'\n\n/**\n * Metadata describing a package manager's lock file and install command.\n */\nexport interface PackageManagerInfo {\n /**\n * Identifier used in CLI commands, e.g. `pnpm`, `yarn`.\n */\n name: PackageManagerName\n /**\n * Lock file name that uniquely identifies this package manager in a project root.\n */\n lockFile: string\n /**\n * Subcommands passed to the package manager binary to install a dev dependency.\n */\n installCommand: ReadonlyArray<string>\n}\n\n/**\n * Metadata for each supported package manager, keyed by its short name.\n *\n * @example\n * ```ts\n * packageManagers.pnpm.installCommand // ['add', '-D']\n * packageManagers.npm.lockFile // 'package-lock.json'\n * ```\n */\nexport const packageManagers: Record<PackageManagerName, PackageManagerInfo> = {\n pnpm: {\n name: 'pnpm',\n lockFile: 'pnpm-lock.yaml',\n installCommand: ['add', '-D'],\n },\n yarn: {\n name: 'yarn',\n lockFile: 'yarn.lock',\n installCommand: ['add', '-D'],\n },\n bun: {\n name: 'bun',\n lockFile: 'bun.lockb',\n installCommand: ['add', '-d'],\n },\n npm: {\n name: 'npm',\n lockFile: 'package-lock.json',\n installCommand: ['install', '--save-dev'],\n },\n}\n\n/**\n * Minimal shape of `package.json` fields read during detection.\n */\ntype PackageJson = {\n /**\n * The `packageManager` field from `package.json` (e.g. `\"pnpm@9.0.0\"`).\n */\n packageManager?: string\n}\n\n/**\n * Detects the active package manager for the given directory.\n * Resolution order: `packageManager` field in `package.json`, then presence of a lock file.\n * Falls back to `npm` when no signal is found.\n *\n * @example\n * ```ts\n * detectPackageManager('/my/project') // { name: 'pnpm', lockFile: 'pnpm-lock.yaml', ... }\n * detectPackageManager() // falls back to npm when no lock file is found\n * ```\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManagerInfo {\n const packageJsonPath = join(cwd, 'package.json')\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as PackageJson\n const pmField = packageJson.packageManager\n if (typeof pmField === 'string') {\n const name = pmField.split('@')[0]\n if (name && name in packageManagers) {\n return packageManagers[name as PackageManagerName]\n }\n }\n } catch {\n // Continue to lock file detection\n }\n }\n\n for (const pm of Object.values(packageManagers)) {\n if (existsSync(join(cwd, pm.lockFile))) {\n return pm\n }\n }\n\n return packageManagers.npm\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport type { PackageManagerInfo, PackageManagerName } from '@internals/utils'\nimport { spawnAsync } from '@internals/utils'\n\nexport function hasPackageJson(cwd: string = process.cwd()): boolean {\n return fs.existsSync(path.join(cwd, 'package.json'))\n}\n\nexport async function initPackageJson(cwd: string, packageManager: PackageManagerInfo): Promise<void> {\n const commands: Record<PackageManagerName, string[]> = {\n npm: ['init', '-y'],\n pnpm: ['init'],\n yarn: ['init', '-y'],\n bun: ['init', '-y'],\n }\n\n await spawnAsync(packageManager.name, commands[packageManager.name], { cwd })\n}\n\nexport async function installPackages(packages: string[], packageManager: PackageManagerInfo, cwd: string = process.cwd()): Promise<void> {\n await spawnAsync(packageManager.name, [...packageManager.installCommand, ...packages], { cwd })\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 type { PackageManagerInfo } from '@internals/utils'\nimport { detectPackageManager } from '@internals/utils'\nimport { initDefaults, pluginDefaultConfigs } from '../constants.ts'\nimport { hasPackageJson, initPackageJson, installPackages } from '../utils/packageManager.ts'\n\ntype PluginOption = {\n value: string\n label: string\n hint?: string\n packageName: string\n importName: string\n category: 'core' | 'typescript' | 'query' | 'validation' | 'testing' | 'mocking' | 'docs'\n}\n\nconst availablePlugins: PluginOption[] = [\n {\n value: 'plugin-oas',\n label: 'OpenAPI Parser',\n hint: 'Required',\n packageName: '@kubb/plugin-oas',\n importName: 'pluginOas',\n category: 'core',\n },\n {\n value: 'plugin-ts',\n label: 'TypeScript',\n hint: 'Recommended',\n packageName: '@kubb/plugin-ts',\n importName: 'pluginTs',\n category: 'typescript',\n },\n {\n value: 'plugin-client',\n label: 'Client (Fetch/Axios)',\n packageName: '@kubb/plugin-client',\n importName: 'pluginClient',\n category: 'typescript',\n },\n {\n value: 'plugin-react-query',\n label: 'React Query / TanStack Query',\n packageName: '@kubb/plugin-react-query',\n importName: 'pluginReactQuery',\n category: 'query',\n },\n {\n value: 'plugin-solid-query',\n label: 'Solid Query',\n packageName: '@kubb/plugin-solid-query',\n importName: 'pluginSolidQuery',\n category: 'query',\n },\n {\n value: 'plugin-svelte-query',\n label: 'Svelte Query',\n packageName: '@kubb/plugin-svelte-query',\n importName: 'pluginSvelteQuery',\n category: 'query',\n },\n {\n value: 'plugin-vue-query',\n label: 'Vue Query',\n packageName: '@kubb/plugin-vue-query',\n importName: 'pluginVueQuery',\n category: 'query',\n },\n {\n value: 'plugin-swr',\n label: 'SWR',\n packageName: '@kubb/plugin-swr',\n importName: 'pluginSwr',\n category: 'query',\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: 'mocking',\n },\n {\n value: 'plugin-msw',\n label: 'MSW Handlers',\n packageName: '@kubb/plugin-msw',\n importName: 'pluginMsw',\n category: 'mocking',\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-redoc',\n label: 'ReDoc Documentation',\n packageName: '@kubb/plugin-redoc',\n importName: 'pluginRedoc',\n category: 'docs',\n },\n]\n\nfunction generateConfigFile(selectedPlugins: PluginOption[], inputPath: string, outputPath: string): string {\n const imports = selectedPlugins.map((plugin) => `import { ${plugin.importName} } from '${plugin.packageName}'`).join('\\n')\n\n const pluginConfigs = selectedPlugins\n .map((plugin) => {\n const config = (pluginDefaultConfigs as Record<string, string>)[plugin.value] ?? `${plugin.importName}()`\n return ` ${config},`\n })\n .join('\\n')\n\n return `import { defineConfig } from 'kubb'\n${imports}\n\nexport default defineConfig({\n root: '.',\n input: {\n path: '${inputPath}',\n },\n output: {\n path: '${outputPath}',\n clean: true,\n },\n plugins: [\n${pluginConfigs}\n ],\n})\n`\n}\n\nfunction cancelAndExit(message = 'Operation cancelled.'): never {\n clack.cancel(message)\n process.exit(0)\n}\n\ntype InitOptions = {\n yes: boolean\n version: string\n}\n\nexport async function runInit({ yes, version }: InitOptions): Promise<void> {\n const cwd = process.cwd()\n\n clack.intro(styleText('bgCyan', styleText('black', ' Kubb Init ')))\n\n try {\n // Check/create package.json\n let packageManager: PackageManagerInfo\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 packageManager = detectPackageManager(cwd)\n\n const spinner = clack.spinner()\n spinner.start(`Initializing package.json with ${packageManager.name}`)\n\n await initPackageJson(cwd, packageManager)\n\n spinner.stop(`Created package.json with ${packageManager.name}`)\n } else {\n packageManager = detectPackageManager(cwd)\n clack.log.info(`Detected package manager: ${styleText('cyan', packageManager.name)}`)\n }\n\n // Prompt for OpenAPI spec path\n let inputPath: string\n if (yes) {\n inputPath = initDefaults.inputPath\n clack.log.info(`Using input path: ${styleText('cyan', inputPath)}`)\n } else {\n const inputPathResult = await 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 if (clack.isCancel(inputPathResult)) {\n cancelAndExit()\n }\n inputPath = inputPathResult as string\n }\n\n // Prompt for output directory\n let outputPath: string\n if (yes) {\n outputPath = initDefaults.outputPath\n clack.log.info(`Using output path: ${styleText('cyan', outputPath)}`)\n } else {\n const outputPathResult = await 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 if (clack.isCancel(outputPathResult)) {\n cancelAndExit()\n }\n outputPath = outputPathResult as string\n }\n\n // Plugin selection\n let selectedPlugins: PluginOption[]\n if (yes) {\n selectedPlugins = availablePlugins.filter((plugin) => (initDefaults.plugins as readonly string[]).includes(plugin.value))\n clack.log.info(`Using plugins: ${styleText('cyan', selectedPlugins.map((p) => p.label).join(', '))}`)\n } else {\n const selectedPluginValues = await clack.multiselect({\n message: 'Select plugins to use:',\n options: availablePlugins.map((plugin) => ({\n value: plugin.value,\n label: plugin.label,\n hint: plugin.hint,\n })),\n initialValues: [...initDefaults.plugins],\n required: true,\n })\n\n if (clack.isCancel(selectedPluginValues)) {\n cancelAndExit()\n }\n\n selectedPlugins = availablePlugins.filter((plugin) => (selectedPluginValues as string[]).includes(plugin.value))\n }\n\n // Ensure plugin-oas is always included\n if (!selectedPlugins.find((p) => p.value === 'plugin-oas')) {\n selectedPlugins.unshift(availablePlugins.find((p) => p.value === 'plugin-oas')!)\n }\n\n // Install packages\n const packagesToInstall = ['@kubb/core', '@kubb/cli', '@kubb/agent', ...selectedPlugins.map((p) => p.packageName)]\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.ts')\n\n const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath)\n const configPath = path.join(cwd, 'kubb.config.ts')\n\n if (fs.existsSync(configPath)) {\n configSpinner.stop('kubb.config.ts already exists')\n\n if (!yes) {\n const shouldOverwrite = await clack.confirm({\n message: 'kubb.config.ts 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.ts')\n }\n\n fs.writeFileSync(configPath, configContent, 'utf-8')\n\n configSpinner.stop('Created kubb.config.ts')\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', ' Or start a stream server with: npx kubb start') +\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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"}
|
|
1
|
+
{"version":3,"file":"init-hcm7zvPn.js","names":["process"],"sources":["../../../internals/utils/src/packageManager.ts","../src/utils/packageManager.ts","../src/runners/init.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\n/**\n * Supported package manager identifiers.\n *\n * @example\n * ```ts\n * const pm: PackageManagerName = 'pnpm'\n * ```\n */\nexport type PackageManagerName = 'npm' | 'pnpm' | 'yarn' | 'bun'\n\n/**\n * Metadata describing a package manager's lock file and install command.\n */\nexport interface PackageManagerInfo {\n /**\n * Identifier used in CLI commands, e.g. `pnpm`, `yarn`.\n */\n name: PackageManagerName\n /**\n * Lock file name that uniquely identifies this package manager in a project root.\n */\n lockFile: string\n /**\n * Subcommands passed to the package manager binary to install a dev dependency.\n */\n installCommand: ReadonlyArray<string>\n}\n/**\n * Metadata for each supported package manager, keyed by its short name.\n *\n * @example\n * ```ts\n * packageManagers.pnpm.installCommand // ['add', '-D']\n * packageManagers.npm.lockFile // 'package-lock.json'\n * ```\n */\nconst packageManagers: Record<PackageManagerName, PackageManagerInfo> = {\n pnpm: {\n name: 'pnpm',\n lockFile: 'pnpm-lock.yaml',\n installCommand: ['add', '-D'],\n },\n yarn: {\n name: 'yarn',\n lockFile: 'yarn.lock',\n installCommand: ['add', '-D'],\n },\n bun: {\n name: 'bun',\n lockFile: 'bun.lockb',\n installCommand: ['add', '-d'],\n },\n npm: {\n name: 'npm',\n lockFile: 'package-lock.json',\n installCommand: ['install', '--save-dev'],\n },\n}\n\n/**\n * Minimal shape of `package.json` fields read during detection.\n */\ntype PackageJson = {\n /**\n * The `packageManager` field from `package.json` (e.g. `\"pnpm@9.0.0\"`).\n */\n packageManager?: string\n}\n\n/**\n * Detects the active package manager for the given directory.\n * Resolution order: `packageManager` field in `package.json`, then presence of a lock file.\n * Falls back to `npm` when no signal is found.\n *\n * @example\n * ```ts\n * detectPackageManager('/my/project') // { name: 'pnpm', lockFile: 'pnpm-lock.yaml', ... }\n * detectPackageManager() // falls back to npm when no lock file is found\n * ```\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManagerInfo {\n const packageJsonPath = join(cwd, 'package.json')\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as PackageJson\n const pmField = packageJson.packageManager\n if (typeof pmField === 'string') {\n const name = pmField.split('@')[0]\n if (name && name in packageManagers) {\n return packageManagers[name as PackageManagerName]\n }\n }\n } catch {\n // Continue to lock file detection\n }\n }\n\n for (const pm of Object.values(packageManagers)) {\n if (existsSync(join(cwd, pm.lockFile))) {\n return pm\n }\n }\n\n return packageManagers.npm\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport type { PackageManagerInfo, PackageManagerName } from '@internals/utils'\nimport { spawnAsync } from '@internals/utils'\n\nexport function hasPackageJson(cwd: string = process.cwd()): boolean {\n return fs.existsSync(path.join(cwd, 'package.json'))\n}\n\nexport async function initPackageJson(cwd: string, packageManager: PackageManagerInfo): Promise<void> {\n const commands: Record<PackageManagerName, string[]> = {\n npm: ['init', '-y'],\n pnpm: ['init'],\n yarn: ['init', '-y'],\n bun: ['init', '-y'],\n }\n\n await spawnAsync(packageManager.name, commands[packageManager.name], { cwd })\n}\n\nexport async function installPackages(packages: string[], packageManager: PackageManagerInfo, cwd: string = process.cwd()): Promise<void> {\n await spawnAsync(packageManager.name, [...packageManager.installCommand, ...packages], { cwd })\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 type { PackageManagerInfo } from '@internals/utils'\nimport { detectPackageManager } from '@internals/utils'\nimport { initDefaults, pluginDefaultConfigs } from '../constants.ts'\nimport { hasPackageJson, initPackageJson, installPackages } from '../utils/packageManager.ts'\n\ntype PluginOption = {\n value: string\n label: string\n hint?: string\n packageName: string\n importName: string\n category: 'core' | 'typescript' | 'query' | 'validation' | 'testing' | 'mocking' | 'docs'\n}\n\nconst availablePlugins: PluginOption[] = [\n {\n value: 'plugin-oas',\n label: 'OpenAPI Parser',\n hint: 'Required',\n packageName: '@kubb/plugin-oas',\n importName: 'pluginOas',\n category: 'core',\n },\n {\n value: 'plugin-ts',\n label: 'TypeScript',\n hint: 'Recommended',\n packageName: '@kubb/plugin-ts',\n importName: 'pluginTs',\n category: 'typescript',\n },\n {\n value: 'plugin-client',\n label: 'Client (Fetch/Axios)',\n packageName: '@kubb/plugin-client',\n importName: 'pluginClient',\n category: 'typescript',\n },\n {\n value: 'plugin-react-query',\n label: 'React Query / TanStack Query',\n packageName: '@kubb/plugin-react-query',\n importName: 'pluginReactQuery',\n category: 'query',\n },\n {\n value: 'plugin-solid-query',\n label: 'Solid Query',\n packageName: '@kubb/plugin-solid-query',\n importName: 'pluginSolidQuery',\n category: 'query',\n },\n {\n value: 'plugin-svelte-query',\n label: 'Svelte Query',\n packageName: '@kubb/plugin-svelte-query',\n importName: 'pluginSvelteQuery',\n category: 'query',\n },\n {\n value: 'plugin-vue-query',\n label: 'Vue Query',\n packageName: '@kubb/plugin-vue-query',\n importName: 'pluginVueQuery',\n category: 'query',\n },\n {\n value: 'plugin-swr',\n label: 'SWR',\n packageName: '@kubb/plugin-swr',\n importName: 'pluginSwr',\n category: 'query',\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: 'mocking',\n },\n {\n value: 'plugin-msw',\n label: 'MSW Handlers',\n packageName: '@kubb/plugin-msw',\n importName: 'pluginMsw',\n category: 'mocking',\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-redoc',\n label: 'ReDoc Documentation',\n packageName: '@kubb/plugin-redoc',\n importName: 'pluginRedoc',\n category: 'docs',\n },\n]\n\nfunction generateConfigFile(selectedPlugins: PluginOption[], inputPath: string, outputPath: string): string {\n const imports = selectedPlugins.map((plugin) => `import { ${plugin.importName} } from '${plugin.packageName}'`).join('\\n')\n\n const pluginConfigs = selectedPlugins\n .map((plugin) => {\n const config = (pluginDefaultConfigs as Record<string, string>)[plugin.value] ?? `${plugin.importName}()`\n return ` ${config},`\n })\n .join('\\n')\n\n return `import { defineConfig } from 'kubb'\n${imports}\n\nexport default defineConfig({\n root: '.',\n input: {\n path: '${inputPath}',\n },\n output: {\n path: '${outputPath}',\n clean: true,\n },\n plugins: [\n${pluginConfigs}\n ],\n})\n`\n}\n\nfunction cancelAndExit(message = 'Operation cancelled.'): never {\n clack.cancel(message)\n process.exit(0)\n}\n\ntype InitOptions = {\n yes: boolean\n version: string\n}\n\nexport async function runInit({ yes, version }: InitOptions): Promise<void> {\n const cwd = process.cwd()\n\n clack.intro(styleText('bgCyan', styleText('black', ' Kubb Init ')))\n\n try {\n // Check/create package.json\n let packageManager: PackageManagerInfo\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 packageManager = detectPackageManager(cwd)\n\n const spinner = clack.spinner()\n spinner.start(`Initializing package.json with ${packageManager.name}`)\n\n await initPackageJson(cwd, packageManager)\n\n spinner.stop(`Created package.json with ${packageManager.name}`)\n } else {\n packageManager = detectPackageManager(cwd)\n clack.log.info(`Detected package manager: ${styleText('cyan', packageManager.name)}`)\n }\n\n // Prompt for OpenAPI spec path\n let inputPath: string\n if (yes) {\n inputPath = initDefaults.inputPath\n clack.log.info(`Using input path: ${styleText('cyan', inputPath)}`)\n } else {\n const inputPathResult = await 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 if (clack.isCancel(inputPathResult)) {\n cancelAndExit()\n }\n inputPath = inputPathResult as string\n }\n\n // Prompt for output directory\n let outputPath: string\n if (yes) {\n outputPath = initDefaults.outputPath\n clack.log.info(`Using output path: ${styleText('cyan', outputPath)}`)\n } else {\n const outputPathResult = await 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 if (clack.isCancel(outputPathResult)) {\n cancelAndExit()\n }\n outputPath = outputPathResult as string\n }\n\n // Plugin selection\n let selectedPlugins: PluginOption[]\n if (yes) {\n selectedPlugins = availablePlugins.filter((plugin) => (initDefaults.plugins as readonly string[]).includes(plugin.value))\n clack.log.info(`Using plugins: ${styleText('cyan', selectedPlugins.map((p) => p.label).join(', '))}`)\n } else {\n const selectedPluginValues = await clack.multiselect({\n message: 'Select plugins to use:',\n options: availablePlugins.map((plugin) => ({\n value: plugin.value,\n label: plugin.label,\n hint: plugin.hint,\n })),\n initialValues: [...initDefaults.plugins],\n required: true,\n })\n\n if (clack.isCancel(selectedPluginValues)) {\n cancelAndExit()\n }\n\n selectedPlugins = availablePlugins.filter((plugin) => (selectedPluginValues as string[]).includes(plugin.value))\n }\n\n // Ensure plugin-oas is always included\n if (!selectedPlugins.find((p) => p.value === 'plugin-oas')) {\n selectedPlugins.unshift(availablePlugins.find((p) => p.value === 'plugin-oas')!)\n }\n\n // Install packages\n const packagesToInstall = ['@kubb/core', '@kubb/cli', '@kubb/agent', ...selectedPlugins.map((p) => p.packageName)]\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.ts')\n\n const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath)\n const configPath = path.join(cwd, 'kubb.config.ts')\n\n if (fs.existsSync(configPath)) {\n configSpinner.stop('kubb.config.ts already exists')\n\n if (!yes) {\n const shouldOverwrite = await clack.confirm({\n message: 'kubb.config.ts 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.ts')\n }\n\n fs.writeFileSync(configPath, configContent, 'utf-8')\n\n configSpinner.stop('Created kubb.config.ts')\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', ' Or start a stream server with: npx kubb start') +\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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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { n as defineCommand } from "./define-Ctii4bel.js";
|
|
3
|
-
import { t as version } from "./package-
|
|
3
|
+
import { t as version } from "./package-B8NEPBIS.js";
|
|
4
4
|
//#region src/commands/mcp.ts
|
|
5
5
|
const command = defineCommand({
|
|
6
6
|
name: "mcp",
|
|
7
7
|
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
8
8
|
async run() {
|
|
9
|
-
const { runMcp } = await import("./mcp-
|
|
9
|
+
const { runMcp } = await import("./mcp-B_FoDCTh.js");
|
|
10
10
|
await runMcp({ version });
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
13
|
//#endregion
|
|
14
14
|
export { command };
|
|
15
15
|
|
|
16
|
-
//# sourceMappingURL=mcp-
|
|
16
|
+
//# sourceMappingURL=mcp-BWcUd86Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-BWcUd86Y.js","names":[],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'mcp',\n description: 'Start the server to enable the MCP client to interact with the LLM.',\n async run() {\n const { runMcp } = await import('../runners/mcp.ts')\n\n await runMcp({ version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAU,cAAc;CACnC,MAAM;CACN,aAAa;CACb,MAAM,MAAM;EACV,MAAM,EAAE,WAAW,MAAM,OAAO;AAEhC,QAAM,OAAO,EAAE,SAAS,CAAC;;CAE5B,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { t as getErrorMessage } from "./errors-CjPmyZHy.js";
|
|
3
3
|
import { r as sendTelemetry, t as buildTelemetryEvent } from "./telemetry-CBISr5w4.js";
|
|
4
|
-
import { t as jiti } from "./jiti-e08mD2Ph.js";
|
|
5
4
|
import { styleText } from "node:util";
|
|
6
5
|
import process from "node:process";
|
|
6
|
+
import { createJiti } from "jiti";
|
|
7
|
+
//#region src/utils/jiti.ts
|
|
8
|
+
/**
|
|
9
|
+
* Shared jiti instance for dynamic ESM/TS imports across CLI commands.
|
|
10
|
+
* Created once at module scope to avoid the overhead of repeated instantiation.
|
|
11
|
+
*/
|
|
12
|
+
const jiti = createJiti(import.meta.url, { sourceMaps: true });
|
|
13
|
+
//#endregion
|
|
7
14
|
//#region src/runners/mcp.ts
|
|
8
15
|
async function runMcp({ version }) {
|
|
9
16
|
let mod;
|
|
@@ -38,4 +45,4 @@ async function runMcp({ version }) {
|
|
|
38
45
|
//#endregion
|
|
39
46
|
export { runMcp };
|
|
40
47
|
|
|
41
|
-
//# sourceMappingURL=mcp-
|
|
48
|
+
//# sourceMappingURL=mcp-B_FoDCTh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-B_FoDCTh.js","names":[],"sources":["../src/utils/jiti.ts","../src/runners/mcp.ts"],"sourcesContent":["import { createJiti } from 'jiti'\n\n/**\n * Shared jiti instance for dynamic ESM/TS imports across CLI commands.\n * Created once at module scope to avoid the overhead of repeated instantiation.\n */\nexport const jiti = createJiti(import.meta.url, {\n sourceMaps: true,\n})\n","import process from 'node:process'\nimport { styleText } from 'node:util'\nimport { getErrorMessage } from '@internals/utils'\nimport type * as McpModule from '@kubb/mcp'\nimport { jiti } from '../utils/jiti.ts'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype McpOptions = {\n version: string\n}\n\nexport async function runMcp({ version }: McpOptions): Promise<void> {\n let mod: typeof McpModule\n try {\n mod = (await jiti.import('@kubb/mcp', { default: true })) as typeof McpModule\n } catch (_e) {\n console.error(`Import of '@kubb/mcp' is required to start the MCP server`)\n process.exit(1)\n }\n\n const { run } = mod\n const hrStart = process.hrtime()\n try {\n console.log('⏳ Starting MCP server...')\n console.warn(styleText('yellow', 'This feature is still under development — use with caution'))\n run()\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'success' }))\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'failed' }))\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;;;;;;AAMA,MAAa,OAAO,WAAW,OAAO,KAAK,KAAK,EAC9C,YAAY,MACb,CAAC;;;ACGF,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAM,KAAK,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;UACjD,IAAI;AACX,UAAQ,MAAM,4DAA4D;AAC1E,UAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,QAAQ;CAChB,MAAM,UAAU,QAAQ,QAAQ;AAChC,KAAI;AACF,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,KAAK,UAAU,UAAU,6DAA6D,CAAC;AAC/F,OAAK;AACL,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;UACvG,OAAO;AACd,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAC7G,UAAQ,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_errors = require("./errors-CLCjoSg0.cjs");
|
|
3
3
|
const require_telemetry = require("./telemetry-D_Bi2E3I.cjs");
|
|
4
|
-
const require_jiti = require("./jiti-Cd3S0xwr.cjs");
|
|
5
4
|
let node_util = require("node:util");
|
|
6
5
|
let node_process = require("node:process");
|
|
7
6
|
node_process = require_chunk.__toESM(node_process, 1);
|
|
7
|
+
//#region src/utils/jiti.ts
|
|
8
|
+
/**
|
|
9
|
+
* Shared jiti instance for dynamic ESM/TS imports across CLI commands.
|
|
10
|
+
* Created once at module scope to avoid the overhead of repeated instantiation.
|
|
11
|
+
*/
|
|
12
|
+
const jiti$1 = (0, require("jiti").createJiti)(require("url").pathToFileURL(__filename).href, { sourceMaps: true });
|
|
13
|
+
//#endregion
|
|
8
14
|
//#region src/runners/mcp.ts
|
|
9
15
|
async function runMcp({ version }) {
|
|
10
16
|
let mod;
|
|
11
17
|
try {
|
|
12
|
-
mod = await
|
|
18
|
+
mod = await jiti$1.import("@kubb/mcp", { default: true });
|
|
13
19
|
} catch (_e) {
|
|
14
20
|
console.error(`Import of '@kubb/mcp' is required to start the MCP server`);
|
|
15
21
|
node_process.default.exit(1);
|
|
@@ -39,4 +45,4 @@ async function runMcp({ version }) {
|
|
|
39
45
|
//#endregion
|
|
40
46
|
exports.runMcp = runMcp;
|
|
41
47
|
|
|
42
|
-
//# sourceMappingURL=mcp-
|
|
48
|
+
//# sourceMappingURL=mcp-STc97s14.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-STc97s14.cjs","names":["jiti","jiti","process","sendTelemetry","buildTelemetryEvent","getErrorMessage"],"sources":["../src/utils/jiti.ts","../src/runners/mcp.ts"],"sourcesContent":["import { createJiti } from 'jiti'\n\n/**\n * Shared jiti instance for dynamic ESM/TS imports across CLI commands.\n * Created once at module scope to avoid the overhead of repeated instantiation.\n */\nexport const jiti = createJiti(import.meta.url, {\n sourceMaps: true,\n})\n","import process from 'node:process'\nimport { styleText } from 'node:util'\nimport { getErrorMessage } from '@internals/utils'\nimport type * as McpModule from '@kubb/mcp'\nimport { jiti } from '../utils/jiti.ts'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype McpOptions = {\n version: string\n}\n\nexport async function runMcp({ version }: McpOptions): Promise<void> {\n let mod: typeof McpModule\n try {\n mod = (await jiti.import('@kubb/mcp', { default: true })) as typeof McpModule\n } catch (_e) {\n console.error(`Import of '@kubb/mcp' is required to start the MCP server`)\n process.exit(1)\n }\n\n const { run } = mod\n const hrStart = process.hrtime()\n try {\n console.log('⏳ Starting MCP server...')\n console.warn(styleText('yellow', 'This feature is still under development — use with caution'))\n run()\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'success' }))\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'failed' }))\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;;;;;;AAMA,MAAaA,UAAAA,mBAAAA,YAAAA,QAAAA,MAAAA,CAAAA,cAAAA,WAAAA,CAAAA,MAAmC,EAC9C,YAAY,MACb,CAAC;;;ACGF,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAMC,OAAK,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;UACjD,IAAI;AACX,UAAQ,MAAM,4DAA4D;AAC1E,eAAA,QAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,QAAQ;CAChB,MAAM,UAAUC,aAAAA,QAAQ,QAAQ;AAChC,KAAI;AACF,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,MAAA,GAAA,UAAA,WAAe,UAAU,6DAA6D,CAAC;AAC/F,OAAK;AACL,QAAMC,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;UACvG,OAAO;AACd,QAAMD,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAC7G,UAAQ,MAAMC,eAAAA,gBAAgB,MAAM,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_define = require("./define-Bdn8j5VM.cjs");
|
|
3
|
-
const require_package = require("./package-
|
|
3
|
+
const require_package = require("./package-Dd9j6cPm.cjs");
|
|
4
4
|
//#region src/commands/mcp.ts
|
|
5
5
|
const command = require_define.defineCommand({
|
|
6
6
|
name: "mcp",
|
|
7
7
|
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
8
8
|
async run() {
|
|
9
|
-
const { runMcp } = await Promise.resolve().then(() => require("./mcp-
|
|
9
|
+
const { runMcp } = await Promise.resolve().then(() => require("./mcp-STc97s14.cjs"));
|
|
10
10
|
await runMcp({ version: require_package.version });
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
13
|
//#endregion
|
|
14
14
|
exports.command = command;
|
|
15
15
|
|
|
16
|
-
//# sourceMappingURL=mcp-
|
|
16
|
+
//# sourceMappingURL=mcp-aRv8LwaD.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-aRv8LwaD.cjs","names":["defineCommand"],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'mcp',\n description: 'Start the server to enable the MCP client to interact with the LLM.',\n async run() {\n const { runMcp } = await import('../runners/mcp.ts')\n\n await runMcp({ version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAUA,eAAAA,cAAc;CACnC,MAAM;CACN,aAAa;CACb,MAAM,MAAM;EACV,MAAM,EAAE,WAAW,MAAA,QAAA,SAAA,CAAA,WAAA,QAAM,qBAAA,CAAA;AAEzB,QAAM,OAAO,EAAE,SAAA,gBAAA,SAAS,CAAC;;CAE5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-B8NEPBIS.js","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region package.json
|
|
2
|
-
var version = "5.0.0-alpha.
|
|
2
|
+
var version = "5.0.0-alpha.39";
|
|
3
3
|
//#endregion
|
|
4
4
|
Object.defineProperty(exports, "version", {
|
|
5
5
|
enumerable: true,
|
|
@@ -8,4 +8,4 @@ Object.defineProperty(exports, "version", {
|
|
|
8
8
|
}
|
|
9
9
|
});
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=package-
|
|
11
|
+
//# sourceMappingURL=package-Dd9j6cPm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-Dd9j6cPm.cjs","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_define = require("./define-Bdn8j5VM.cjs");
|
|
3
|
-
const require_package = require("./package-
|
|
3
|
+
const require_package = require("./package-Dd9j6cPm.cjs");
|
|
4
4
|
//#region src/commands/validate.ts
|
|
5
5
|
const command = require_define.defineCommand({
|
|
6
6
|
name: "validate",
|
|
@@ -12,7 +12,7 @@ const command = require_define.defineCommand({
|
|
|
12
12
|
required: true
|
|
13
13
|
} },
|
|
14
14
|
async run({ values }) {
|
|
15
|
-
const { runValidate } = await Promise.resolve().then(() => require("./validate-
|
|
15
|
+
const { runValidate } = await Promise.resolve().then(() => require("./validate-CqwT945Z.cjs"));
|
|
16
16
|
await runValidate({
|
|
17
17
|
input: values.input,
|
|
18
18
|
version: require_package.version
|
|
@@ -22,4 +22,4 @@ const command = require_define.defineCommand({
|
|
|
22
22
|
//#endregion
|
|
23
23
|
exports.command = command;
|
|
24
24
|
|
|
25
|
-
//# sourceMappingURL=validate-
|
|
25
|
+
//# sourceMappingURL=validate-B3kTGFEl.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-
|
|
1
|
+
{"version":3,"file":"validate-B3kTGFEl.cjs","names":["defineCommand"],"sources":["../src/commands/validate.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'validate',\n description: 'Validate a Swagger/OpenAPI file',\n options: {\n input: { type: 'string', description: 'Path to Swagger/OpenAPI file', short: 'i', required: true },\n },\n async run({ values }) {\n const { runValidate } = await import('../runners/validate.ts')\n\n await runValidate({ input: values.input, version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAUA,eAAAA,cAAc;CACnC,MAAM;CACN,aAAa;CACb,SAAS,EACP,OAAO;EAAE,MAAM;EAAU,aAAa;EAAgC,OAAO;EAAK,UAAU;EAAM,EACnG;CACD,MAAM,IAAI,EAAE,UAAU;EACpB,MAAM,EAAE,gBAAgB,MAAA,QAAA,SAAA,CAAA,WAAA,QAAM,0BAAA,CAAA;AAE9B,QAAM,YAAY;GAAE,OAAO,OAAO;GAAO,SAAA,gBAAA;GAAS,CAAC;;CAEtD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { n as defineCommand } from "./define-Ctii4bel.js";
|
|
3
|
-
import { t as version } from "./package-
|
|
3
|
+
import { t as version } from "./package-B8NEPBIS.js";
|
|
4
4
|
//#region src/commands/validate.ts
|
|
5
5
|
const command = defineCommand({
|
|
6
6
|
name: "validate",
|
|
@@ -12,7 +12,7 @@ const command = defineCommand({
|
|
|
12
12
|
required: true
|
|
13
13
|
} },
|
|
14
14
|
async run({ values }) {
|
|
15
|
-
const { runValidate } = await import("./validate-
|
|
15
|
+
const { runValidate } = await import("./validate-NZ0mduJ3.js");
|
|
16
16
|
await runValidate({
|
|
17
17
|
input: values.input,
|
|
18
18
|
version
|
|
@@ -22,4 +22,4 @@ const command = defineCommand({
|
|
|
22
22
|
//#endregion
|
|
23
23
|
export { command };
|
|
24
24
|
|
|
25
|
-
//# sourceMappingURL=validate-
|
|
25
|
+
//# sourceMappingURL=validate-COWutx4Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-
|
|
1
|
+
{"version":3,"file":"validate-COWutx4Y.js","names":[],"sources":["../src/commands/validate.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'validate',\n description: 'Validate a Swagger/OpenAPI file',\n options: {\n input: { type: 'string', description: 'Path to Swagger/OpenAPI file', short: 'i', required: true },\n },\n async run({ values }) {\n const { runValidate } = await import('../runners/validate.ts')\n\n await runValidate({ input: values.input, version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAU,cAAc;CACnC,MAAM;CACN,aAAa;CACb,SAAS,EACP,OAAO;EAAE,MAAM;EAAU,aAAa;EAAgC,OAAO;EAAK,UAAU;EAAM,EACnG;CACD,MAAM,IAAI,EAAE,UAAU;EACpB,MAAM,EAAE,gBAAgB,MAAM,OAAO;AAErC,QAAM,YAAY;GAAE,OAAO,OAAO;GAAO;GAAS,CAAC;;CAEtD,CAAC"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_errors = require("./errors-CLCjoSg0.cjs");
|
|
3
3
|
const require_telemetry = require("./telemetry-D_Bi2E3I.cjs");
|
|
4
|
-
const require_jiti = require("./jiti-Cd3S0xwr.cjs");
|
|
5
4
|
let node_process = require("node:process");
|
|
6
5
|
node_process = require_chunk.__toESM(node_process, 1);
|
|
6
|
+
let _kubb_adapter_oas = require("@kubb/adapter-oas");
|
|
7
7
|
//#region src/runners/validate.ts
|
|
8
8
|
async function runValidate({ input, version }) {
|
|
9
|
-
let mod;
|
|
10
|
-
try {
|
|
11
|
-
mod = await require_jiti.jiti.import("@kubb/oas", { default: true });
|
|
12
|
-
} catch (_e) {
|
|
13
|
-
console.error(`Import of '@kubb/oas' is required to do validation`);
|
|
14
|
-
node_process.default.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const { parse } = mod;
|
|
17
9
|
const hrStart = node_process.default.hrtime();
|
|
18
10
|
try {
|
|
19
|
-
await (await
|
|
11
|
+
await (0, _kubb_adapter_oas.validateDocument)(await (0, _kubb_adapter_oas.parseDocument)(input), { throwOnError: true });
|
|
20
12
|
await require_telemetry.sendTelemetry(require_telemetry.buildTelemetryEvent({
|
|
21
13
|
command: "validate",
|
|
22
14
|
kubbVersion: version,
|
|
@@ -39,4 +31,4 @@ async function runValidate({ input, version }) {
|
|
|
39
31
|
//#endregion
|
|
40
32
|
exports.runValidate = runValidate;
|
|
41
33
|
|
|
42
|
-
//# sourceMappingURL=validate-
|
|
34
|
+
//# sourceMappingURL=validate-CqwT945Z.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-CqwT945Z.cjs","names":["process","sendTelemetry","buildTelemetryEvent","getErrorMessage"],"sources":["../src/runners/validate.ts"],"sourcesContent":["import process from 'node:process'\nimport { getErrorMessage } from '@internals/utils'\nimport { parseDocument, validateDocument } from '@kubb/adapter-oas'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype ValidateOptions = {\n input: string\n version: string\n}\n\nexport async function runValidate({ input, version }: ValidateOptions): Promise<void> {\n const hrStart = process.hrtime()\n try {\n const document = await parseDocument(input)\n await validateDocument(document, { throwOnError: true })\n\n await sendTelemetry(buildTelemetryEvent({ command: 'validate', kubbVersion: version, hrStart, status: 'success' }))\n console.log('✅ Validation success')\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'validate', kubbVersion: version, hrStart, status: 'failed' }))\n console.error('❌ Validation failed')\n console.error(getErrorMessage(error))\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;;AAUA,eAAsB,YAAY,EAAE,OAAO,WAA2C;CACpF,MAAM,UAAUA,aAAAA,QAAQ,QAAQ;AAChC,KAAI;AAEF,SAAA,GAAA,kBAAA,kBADiB,OAAA,GAAA,kBAAA,eAAoB,MAAM,EACV,EAAE,cAAc,MAAM,CAAC;AAExD,QAAMC,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAY,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;AACnH,UAAQ,IAAI,uBAAuB;UAC5B,OAAO;AACd,QAAMD,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAY,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAClH,UAAQ,MAAM,sBAAsB;AACpC,UAAQ,MAAMC,eAAAA,gBAAgB,MAAM,CAAC;AACrC,eAAA,QAAQ,KAAK,EAAE"}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { t as getErrorMessage } from "./errors-CjPmyZHy.js";
|
|
3
3
|
import { r as sendTelemetry, t as buildTelemetryEvent } from "./telemetry-CBISr5w4.js";
|
|
4
|
-
import { t as jiti } from "./jiti-e08mD2Ph.js";
|
|
5
4
|
import process from "node:process";
|
|
5
|
+
import { parseDocument, validateDocument } from "@kubb/adapter-oas";
|
|
6
6
|
//#region src/runners/validate.ts
|
|
7
7
|
async function runValidate({ input, version }) {
|
|
8
|
-
let mod;
|
|
9
|
-
try {
|
|
10
|
-
mod = await jiti.import("@kubb/oas", { default: true });
|
|
11
|
-
} catch (_e) {
|
|
12
|
-
console.error(`Import of '@kubb/oas' is required to do validation`);
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
const { parse } = mod;
|
|
16
8
|
const hrStart = process.hrtime();
|
|
17
9
|
try {
|
|
18
|
-
await (await
|
|
10
|
+
await validateDocument(await parseDocument(input), { throwOnError: true });
|
|
19
11
|
await sendTelemetry(buildTelemetryEvent({
|
|
20
12
|
command: "validate",
|
|
21
13
|
kubbVersion: version,
|
|
@@ -38,4 +30,4 @@ async function runValidate({ input, version }) {
|
|
|
38
30
|
//#endregion
|
|
39
31
|
export { runValidate };
|
|
40
32
|
|
|
41
|
-
//# sourceMappingURL=validate-
|
|
33
|
+
//# sourceMappingURL=validate-NZ0mduJ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-NZ0mduJ3.js","names":[],"sources":["../src/runners/validate.ts"],"sourcesContent":["import process from 'node:process'\nimport { getErrorMessage } from '@internals/utils'\nimport { parseDocument, validateDocument } from '@kubb/adapter-oas'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype ValidateOptions = {\n input: string\n version: string\n}\n\nexport async function runValidate({ input, version }: ValidateOptions): Promise<void> {\n const hrStart = process.hrtime()\n try {\n const document = await parseDocument(input)\n await validateDocument(document, { throwOnError: true })\n\n await sendTelemetry(buildTelemetryEvent({ command: 'validate', kubbVersion: version, hrStart, status: 'success' }))\n console.log('✅ Validation success')\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'validate', kubbVersion: version, hrStart, status: 'failed' }))\n console.error('❌ Validation failed')\n console.error(getErrorMessage(error))\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;AAUA,eAAsB,YAAY,EAAE,OAAO,WAA2C;CACpF,MAAM,UAAU,QAAQ,QAAQ;AAChC,KAAI;AAEF,QAAM,iBADW,MAAM,cAAc,MAAM,EACV,EAAE,cAAc,MAAM,CAAC;AAExD,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAY,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;AACnH,UAAQ,IAAI,uBAAuB;UAC5B,OAAO;AACd,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAY,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAClH,UAAQ,MAAM,sBAAsB;AACpC,UAAQ,MAAM,gBAAgB,MAAM,CAAC;AACrC,UAAQ,KAAK,EAAE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/cli",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.39",
|
|
4
4
|
"description": "Command-line interface for Kubb, enabling easy generation of TypeScript, React-Query, Zod, and other code from OpenAPI specifications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"types": "./dist/index.d.ts",
|
|
37
37
|
"bin": {
|
|
38
|
-
"kubb": "bin/kubb.
|
|
38
|
+
"kubb": "bin/kubb.js"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"src",
|
|
@@ -58,14 +58,13 @@
|
|
|
58
58
|
"cosmiconfig": "^9.0.1",
|
|
59
59
|
"jiti": "2.5.1",
|
|
60
60
|
"tinyexec": "^1.1.1",
|
|
61
|
-
"@kubb/
|
|
61
|
+
"@kubb/adapter-oas": "5.0.0-alpha.39",
|
|
62
|
+
"@kubb/core": "5.0.0-alpha.39"
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
|
-
"source-map-support": "^0.5.21",
|
|
65
65
|
"@internals/utils": "0.0.0",
|
|
66
|
-
"@kubb/agent": "5.0.0-alpha.
|
|
67
|
-
"@kubb/mcp": "5.0.0-alpha.
|
|
68
|
-
"@kubb/oas": "5.0.0-alpha.36"
|
|
66
|
+
"@kubb/agent": "5.0.0-alpha.39",
|
|
67
|
+
"@kubb/mcp": "5.0.0-alpha.39"
|
|
69
68
|
},
|
|
70
69
|
"engines": {
|
|
71
70
|
"node": ">=22"
|
package/src/runners/agent.ts
CHANGED
|
@@ -17,6 +17,47 @@ type AgentStartOptions = {
|
|
|
17
17
|
version: string
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
type ResolvedAgentStartEnvironment = {
|
|
21
|
+
port: string
|
|
22
|
+
host: string
|
|
23
|
+
allowWrite: boolean
|
|
24
|
+
allowAll: boolean
|
|
25
|
+
agentConfigPath: string
|
|
26
|
+
env: NodeJS.ProcessEnv
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Resolves the environment passed to the detached agent process using CLI values first, then environment values, then CLI defaults.
|
|
31
|
+
*/
|
|
32
|
+
function resolveAgentStartEnvironment({ port, host, configPath, allowWrite, allowAll }: Omit<AgentStartOptions, 'version'>): ResolvedAgentStartEnvironment {
|
|
33
|
+
const resolvedPort = port ?? process.env.PORT ?? agentDefaults.port
|
|
34
|
+
const resolvedHost = host !== agentDefaults.host ? host : (process.env.HOST ?? agentDefaults.host)
|
|
35
|
+
const resolvedAllowAll = allowAll || process.env.KUBB_AGENT_ALLOW_ALL === 'true'
|
|
36
|
+
const resolvedAllowWrite = resolvedAllowAll || allowWrite || process.env.KUBB_AGENT_ALLOW_WRITE === 'true'
|
|
37
|
+
const agentRoot = process.env.KUBB_AGENT_ROOT ?? process.cwd()
|
|
38
|
+
const agentConfigPath = path.resolve(process.cwd(), configPath || process.env.KUBB_AGENT_CONFIG || agentDefaults.configFile)
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
port: resolvedPort,
|
|
42
|
+
host: resolvedHost,
|
|
43
|
+
allowWrite: resolvedAllowWrite,
|
|
44
|
+
allowAll: resolvedAllowAll,
|
|
45
|
+
agentConfigPath,
|
|
46
|
+
env: {
|
|
47
|
+
...process.env,
|
|
48
|
+
PORT: resolvedPort,
|
|
49
|
+
HOST: resolvedHost,
|
|
50
|
+
KUBB_AGENT_ROOT: agentRoot,
|
|
51
|
+
KUBB_AGENT_CONFIG: agentConfigPath,
|
|
52
|
+
KUBB_AGENT_ALLOW_WRITE: String(resolvedAllowWrite),
|
|
53
|
+
KUBB_AGENT_ALLOW_ALL: String(resolvedAllowAll),
|
|
54
|
+
KUBB_AGENT_TOKEN: process.env.KUBB_AGENT_TOKEN,
|
|
55
|
+
KUBB_AGENT_RETRY_TIMEOUT: process.env.KUBB_AGENT_RETRY_TIMEOUT ?? agentDefaults.retryTimeout,
|
|
56
|
+
KUBB_STUDIO_URL: process.env.KUBB_STUDIO_URL ?? agentDefaults.studioUrl,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
20
61
|
function isPortAvailable(port: number, host: string): Promise<boolean> {
|
|
21
62
|
return new Promise((resolve) => {
|
|
22
63
|
const server = net.createServer()
|
|
@@ -46,47 +87,31 @@ export async function runAgentStart({ port, host, configPath, allowWrite, allowA
|
|
|
46
87
|
const agentDir = path.dirname(agentPkgPath)
|
|
47
88
|
const serverPath = path.join(agentDir, agentDefaults.serverEntryPath)
|
|
48
89
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const PORT = port !== undefined ? port : (process.env.PORT ?? agentDefaults.port)
|
|
52
|
-
const HOST = host !== agentDefaults.host ? host : (process.env.HOST ?? agentDefaults.host)
|
|
53
|
-
const KUBB_AGENT_ROOT = process.env.KUBB_AGENT_ROOT ?? process.cwd()
|
|
54
|
-
const KUBB_AGENT_CONFIG = path.resolve(process.cwd(), configPath || process.env.KUBB_AGENT_CONFIG || agentDefaults.configFile)
|
|
55
|
-
const KUBB_AGENT_ALLOW_WRITE = allowAll || allowWrite ? 'true' : (process.env.KUBB_AGENT_ALLOW_WRITE ?? 'false')
|
|
56
|
-
const KUBB_AGENT_ALLOW_ALL = allowAll ? 'true' : (process.env.KUBB_AGENT_ALLOW_ALL ?? 'false')
|
|
57
|
-
const KUBB_AGENT_TOKEN = process.env.KUBB_AGENT_TOKEN
|
|
58
|
-
const KUBB_AGENT_RETRY_TIMEOUT = process.env.KUBB_AGENT_RETRY_TIMEOUT ?? agentDefaults.retryTimeout
|
|
59
|
-
const KUBB_STUDIO_URL = process.env.KUBB_STUDIO_URL ?? agentDefaults.studioUrl
|
|
90
|
+
const resolvedEnv = resolveAgentStartEnvironment({ port, host, configPath, allowWrite, allowAll })
|
|
91
|
+
const numericPort = Number(resolvedEnv.port)
|
|
60
92
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
PORT,
|
|
64
|
-
HOST,
|
|
65
|
-
KUBB_AGENT_ROOT,
|
|
66
|
-
KUBB_AGENT_CONFIG,
|
|
67
|
-
KUBB_AGENT_ALLOW_WRITE,
|
|
68
|
-
KUBB_AGENT_ALLOW_ALL,
|
|
69
|
-
KUBB_AGENT_TOKEN,
|
|
70
|
-
KUBB_AGENT_RETRY_TIMEOUT,
|
|
71
|
-
KUBB_STUDIO_URL,
|
|
93
|
+
if (!Number.isInteger(numericPort) || numericPort <= 0) {
|
|
94
|
+
throw new Error(`Invalid port "${resolvedEnv.port}". Provide a positive integer with --port or PORT.`)
|
|
72
95
|
}
|
|
73
96
|
|
|
74
97
|
clack.log.step(styleText('cyan', 'Starting agent server...'))
|
|
75
|
-
clack.log.info(styleText('dim', `Config: ${
|
|
76
|
-
clack.log.info(styleText('dim', `Host: ${
|
|
77
|
-
clack.log.info(styleText('dim', `Port: ${
|
|
78
|
-
if (!
|
|
98
|
+
clack.log.info(styleText('dim', `Config: ${resolvedEnv.agentConfigPath}`))
|
|
99
|
+
clack.log.info(styleText('dim', `Host: ${resolvedEnv.host}`))
|
|
100
|
+
clack.log.info(styleText('dim', `Port: ${resolvedEnv.port}`))
|
|
101
|
+
if (!resolvedEnv.allowWrite && !resolvedEnv.allowAll) {
|
|
79
102
|
clack.log.warn(styleText('yellow', 'Filesystem writes disabled. Use --allow-write or --allow-all to enable.'))
|
|
80
103
|
}
|
|
81
104
|
|
|
82
|
-
if (!(await isPortAvailable(
|
|
83
|
-
clack.log.error(
|
|
105
|
+
if (!(await isPortAvailable(numericPort, resolvedEnv.host))) {
|
|
106
|
+
clack.log.error(
|
|
107
|
+
styleText('red', `Port ${resolvedEnv.port} is already in use. Stop the existing process or choose a different port with --port.`),
|
|
108
|
+
)
|
|
84
109
|
process.exit(1)
|
|
85
110
|
}
|
|
86
111
|
|
|
87
112
|
// Spawns the server as a detached background process so the CLI can exit independently.
|
|
88
113
|
await spawnAsync('node', [serverPath], {
|
|
89
|
-
env,
|
|
114
|
+
env: resolvedEnv.env,
|
|
90
115
|
cwd: process.cwd(),
|
|
91
116
|
})
|
|
92
117
|
|
package/src/runners/generate.ts
CHANGED
|
@@ -4,17 +4,13 @@ import process from 'node:process'
|
|
|
4
4
|
import { styleText } from 'node:util'
|
|
5
5
|
import * as clack from '@clack/prompts'
|
|
6
6
|
import type { AsyncEventEmitter } from '@internals/utils'
|
|
7
|
-
import { AsyncEventEmitter as AsyncEventEmitterClass, executeIfOnline, toError } from '@internals/utils'
|
|
7
|
+
import { AsyncEventEmitter as AsyncEventEmitterClass, detectFormatter, detectLinter, executeIfOnline, formatters, linters, toError } from '@internals/utils'
|
|
8
8
|
import {
|
|
9
9
|
type CLIOptions,
|
|
10
10
|
type Config,
|
|
11
11
|
createKubb,
|
|
12
|
-
detectFormatter,
|
|
13
|
-
detectLinter,
|
|
14
|
-
formatters,
|
|
15
12
|
isInputPath,
|
|
16
13
|
type KubbHooks,
|
|
17
|
-
linters,
|
|
18
14
|
logLevel as logLevelMap,
|
|
19
15
|
} from '@kubb/core'
|
|
20
16
|
import { version } from '../../package.json'
|
package/src/runners/validate.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import process from 'node:process'
|
|
2
2
|
import { getErrorMessage } from '@internals/utils'
|
|
3
|
-
import
|
|
4
|
-
import { jiti } from '../utils/jiti.ts'
|
|
3
|
+
import { parseDocument, validateDocument } from '@kubb/adapter-oas'
|
|
5
4
|
import { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'
|
|
6
5
|
|
|
7
6
|
type ValidateOptions = {
|
|
@@ -10,19 +9,10 @@ type ValidateOptions = {
|
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
export async function runValidate({ input, version }: ValidateOptions): Promise<void> {
|
|
13
|
-
let mod: typeof OasModule
|
|
14
|
-
try {
|
|
15
|
-
mod = (await jiti.import('@kubb/oas', { default: true })) as typeof OasModule
|
|
16
|
-
} catch (_e) {
|
|
17
|
-
console.error(`Import of '@kubb/oas' is required to do validation`)
|
|
18
|
-
process.exit(1)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const { parse } = mod
|
|
22
12
|
const hrStart = process.hrtime()
|
|
23
13
|
try {
|
|
24
|
-
const
|
|
25
|
-
await
|
|
14
|
+
const document = await parseDocument(input)
|
|
15
|
+
await validateDocument(document, { throwOnError: true })
|
|
26
16
|
|
|
27
17
|
await sendTelemetry(buildTelemetryEvent({ command: 'validate', kubbVersion: version, hrStart, status: 'success' }))
|
|
28
18
|
console.log('✅ Validation success')
|
package/src/utils/getSummary.ts
CHANGED
|
@@ -27,7 +27,7 @@ export function getSummary({ failedPlugins, filesCreated, status, hrStart, confi
|
|
|
27
27
|
pluginsFailed: status === 'failed' ? [...failedPlugins].map(({ plugin }) => randomCliColor(plugin.name)).join(', ') : undefined,
|
|
28
28
|
filesCreated,
|
|
29
29
|
time: styleText('green', duration),
|
|
30
|
-
output: path.
|
|
30
|
+
output: path.resolve(config.root, config.output.path),
|
|
31
31
|
} as const
|
|
32
32
|
|
|
33
33
|
const labels = {
|
package/bin/kubb.cjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
try {
|
|
3
|
-
const cachedSourceMaps = new Map()
|
|
4
|
-
|
|
5
|
-
require('source-map-support').install({
|
|
6
|
-
retrieveSourceMap(source) {
|
|
7
|
-
if (cachedSourceMaps.has(source)) {
|
|
8
|
-
return cachedSourceMaps.get(source)
|
|
9
|
-
}
|
|
10
|
-
return null
|
|
11
|
-
},
|
|
12
|
-
})
|
|
13
|
-
} catch (_err) {}
|
|
14
|
-
|
|
15
|
-
import('../dist/index.js').then(({ run }) => {
|
|
16
|
-
process.title = 'Kubb'
|
|
17
|
-
run(process.argv)
|
|
18
|
-
})
|