@adddog/build-configs 0.0.5 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.mjs +3 -4
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/tsup.config.d.mts +1 -1
- package/dist/tsup.config.d.ts +1 -1
- package/dist/tsup.config.mjs +2 -4
- package/dist/tsup.config.mjs.map +1 -1
- package/package.json +14 -13
package/dist/cli/index.mjs
CHANGED
|
@@ -14,10 +14,9 @@ import { consola } from 'consola';
|
|
|
14
14
|
import pc from 'picocolors';
|
|
15
15
|
import * as p from '@clack/prompts';
|
|
16
16
|
import { z } from 'zod';
|
|
17
|
-
import 'tsup';
|
|
18
17
|
import 'unbuild';
|
|
19
18
|
|
|
20
|
-
const version = "0.0.
|
|
19
|
+
const version = "0.0.8";
|
|
21
20
|
|
|
22
21
|
const logger = consola.create({
|
|
23
22
|
formatOptions: {
|
|
@@ -605,14 +604,14 @@ async function initCommand(options) {
|
|
|
605
604
|
if (pkg) {
|
|
606
605
|
const scripts = generatePackageJsonScripts(bundler);
|
|
607
606
|
const formatArray = Array.isArray(finalConfig.format) ? finalConfig.format : finalConfig.format ? [finalConfig.format] : ["esm", "cjs"];
|
|
608
|
-
const exports = generatePackageJsonExports(
|
|
607
|
+
const exports$1 = generatePackageJsonExports(
|
|
609
608
|
bundler,
|
|
610
609
|
formatArray
|
|
611
610
|
);
|
|
612
611
|
const pkgScripts = typeof pkg.scripts === "object" && pkg.scripts !== null ? pkg.scripts : {};
|
|
613
612
|
await updatePackageJson({
|
|
614
613
|
scripts: { ...pkgScripts, ...scripts },
|
|
615
|
-
exports,
|
|
614
|
+
exports: exports$1,
|
|
616
615
|
main: formatArray.includes("cjs") || finalConfig.rollup?.emitCJS ? "./dist/index.cjs" : void 0,
|
|
617
616
|
module: "./dist/index.mjs",
|
|
618
617
|
types: "./dist/index.d.ts",
|
package/dist/cli/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/cli/utils/logger.ts","../../src/cli/utils/config-loader.ts","../../src/cli/commands/build.ts","../../src/cli/commands/info.ts","../../src/cli/templates/index.ts","../../src/cli/commands/init.ts","../../src/cli/utils/validators.ts","../../src/cli/commands/validate.ts","../../src/cli/commands/watch.ts","../../src/cli/index.ts"],"sourcesContent":["import { consola } from \"consola\";\nimport pc from \"picocolors\";\n\n/**\n * Custom logger instance with colorized output\n */\nexport const logger = consola.create({\n formatOptions: {\n colors: true,\n compact: false,\n date: false,\n },\n});\n\n/**\n * Color utilities for consistent styling\n */\nexport const colors = {\n primary: pc.cyan,\n success: pc.green,\n warning: pc.yellow,\n error: pc.red,\n info: pc.blue,\n dim: pc.dim,\n bold: pc.bold,\n bundler: pc.magenta,\n file: pc.yellow,\n command: pc.green,\n};\n\n/**\n * Log a formatted success message\n */\nexport function logSuccess(message: string): void {\n logger.success(colors.success(message));\n}\n\n/**\n * Log a formatted error message\n */\nexport function logError(message: string, error?: Error): void {\n logger.error(colors.error(message));\n if (error) {\n logger.error(colors.dim(error.message));\n if (error.stack) {\n logger.error(colors.dim(error.stack));\n }\n }\n}\n\n/**\n * Log a formatted warning message\n */\nexport function logWarning(message: string): void {\n logger.warn(colors.warning(message));\n}\n\n/**\n * Log a formatted info message\n */\nexport function logInfo(message: string): void {\n logger.info(colors.info(message));\n}\n\n/**\n * Log a formatted step message\n */\nexport function logStep(step: number, total: number, message: string): void {\n logger.info(\n `${colors.dim(`[${step}/${total}]`)} ${colors.primary(message)}`,\n );\n}\n\n/**\n * Log a formatted file path\n */\nexport function logFile(action: string, path: string): void {\n logger.info(`${colors.success(action)} ${colors.file(path)}`);\n}\n\n/**\n * Log bundler selection\n */\nexport function logBundler(bundler: \"tsup\" | \"unbuild\"): void {\n logger.info(`Using bundler: ${colors.bundler(bundler)}`);\n}\n\n/**\n * Create a box for prominent messages\n */\nexport function logBox(title: string, content: string[]): void {\n const maxLength = Math.max(\n title.length,\n ...content.map(line => line.length),\n );\n const border = \"─\".repeat(maxLength + 4);\n\n console.log(colors.primary(`┌${border}┐`));\n console.log(\n colors.primary(`│ ${colors.bold(title.padEnd(maxLength))} │`),\n );\n console.log(colors.primary(`├${border}┤`));\n content.forEach(line => {\n console.log(colors.primary(`│ ${line.padEnd(maxLength)} │`));\n });\n console.log(colors.primary(`└${border}┘`));\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport process from \"node:process\";\nimport { defu } from \"defu\";\nimport { createJiti } from \"jiti\";\nimport { getPreset } from \"../../presets\";\nimport { logger } from \"./logger\";\n\n/**\n * Config file names to search for (in order of priority)\n */\nconst CONFIG_FILES = [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n \"build.config.cjs\",\n \"tsup.config.ts\",\n \"tsup.config.js\",\n \"tsup.config.mjs\",\n \".radbuildrc.ts\",\n \".radbuildrc.js\",\n \".radbuildrc.json\",\n];\n\n/**\n * Detect which bundler is being used based on existing config files\n */\nexport async function detectBundler(\n cwd: string = process.cwd(),\n): Promise<\"tsup\" | \"unbuild\" | null> {\n // Check for tsup config\n for (const file of [\"tsup.config.ts\", \"tsup.config.js\", \"tsup.config.mjs\"]) {\n if (existsSync(join(cwd, file))) {\n return \"tsup\";\n }\n }\n\n // Check for unbuild config\n for (const file of [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n ]) {\n if (existsSync(join(cwd, file))) {\n const configPath = join(cwd, file);\n try {\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n const config = (await jiti.import(configPath)) as TsupOptions | UnbuildConfig;\n\n // Check if config has unbuild-specific properties\n if (\n \"entries\" in config ||\n \"rollup\" in config ||\n (Array.isArray(config) && config[0] && \"entries\" in config[0])\n ) {\n return \"unbuild\";\n }\n } catch {\n // If we can't load the config, continue\n }\n }\n }\n\n // Check package.json scripts\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.scripts?.build) {\n if (pkg.scripts.build.includes(\"tsup\")) return \"tsup\";\n if (pkg.scripts.build.includes(\"unbuild\")) return \"unbuild\";\n }\n }\n } catch {\n // Ignore errors\n }\n\n return null;\n}\n\n/**\n * Discover config file in the current working directory\n */\nexport async function discoverConfigFile(\n cwd: string = process.cwd(),\n customPath?: string,\n): Promise<string | null> {\n // If custom path provided, use it\n if (customPath) {\n const fullPath = resolve(cwd, customPath);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n logger.warn(`Custom config file not found: ${customPath}`);\n return null;\n }\n\n // Search for config files\n for (const file of CONFIG_FILES) {\n const fullPath = join(cwd, file);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n // Check package.json for config\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.radbuild) {\n return pkgPath;\n }\n } catch {\n // Ignore errors\n }\n }\n\n return null;\n}\n\n/**\n * Load config from a file\n */\nexport async function loadConfigFile<T = TsupOptions | UnbuildConfig>(\n configPath: string,\n cwd: string = process.cwd(),\n): Promise<T | null> {\n try {\n // Handle package.json config\n if (configPath.endsWith(\"package.json\")) {\n const pkg = JSON.parse(await readFile(configPath, \"utf-8\"));\n return (pkg.radbuild as T) || null;\n }\n\n // Handle JSON config\n if (configPath.endsWith(\".json\")) {\n return JSON.parse(await readFile(configPath, \"utf-8\")) as T;\n }\n\n // Handle JS/TS config with jiti\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n\n const config = (await jiti.import(configPath)) as T;\n\n return config;\n } catch (error) {\n logger.error(\n `Failed to load config from ${configPath}`,\n error as Error,\n );\n return null;\n }\n}\n\n/**\n * Load and merge configuration from multiple sources\n */\nexport async function loadConfig(options: {\n cwd?: string;\n configPath?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\" | \"auto\";\n cliFlags?: Partial<TsupOptions | UnbuildConfig>;\n}): Promise<{\n config: TsupOptions | UnbuildConfig;\n bundler: \"tsup\" | \"unbuild\";\n configPath: string | null;\n}> {\n const cwd = options.cwd ?? process.cwd();\n\n // 1. Detect bundler if not specified\n let bundler = options.bundler === \"auto\" ? null : options.bundler;\n if (!bundler) {\n bundler = (await detectBundler(cwd)) ?? \"unbuild\";\n }\n\n // 2. Load preset if specified\n let presetConfig = {};\n if (options.preset) {\n const preset = getPreset(options.preset);\n if (preset) {\n presetConfig =\n bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {};\n logger.info(`Using preset: ${preset.name}`);\n } else {\n logger.warn(`Preset not found: ${options.preset}`);\n }\n }\n\n // 3. Discover and load project config\n const configPath = await discoverConfigFile(cwd, options.configPath);\n let projectConfig = {};\n if (configPath) {\n const loaded = await loadConfigFile(configPath, cwd);\n if (loaded) {\n projectConfig = loaded;\n logger.info(`Loaded config from: ${configPath}`);\n }\n }\n\n // 4. Merge configs (right takes precedence)\n const config = defu(\n options.cliFlags ?? {},\n projectConfig,\n presetConfig,\n {}, // Default config is applied in the makers\n );\n\n return {\n config,\n bundler,\n configPath,\n };\n}\n\n/**\n * Get package.json from current directory\n */\nexport async function getPackageJson(\n cwd: string = process.cwd(),\n): Promise<Record<string, unknown> | null> {\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (!existsSync(pkgPath)) return null;\n\n return JSON.parse(await readFile(pkgPath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\n/**\n * Update package.json with new fields\n */\nexport async function updatePackageJson(\n updates: Record<string, unknown>,\n cwd: string = process.cwd(),\n): Promise<void> {\n const { writeFile } = await import(\"node:fs/promises\");\n const pkgPath = join(cwd, \"package.json\");\n\n const pkg = (await getPackageJson(cwd)) ?? {};\n const updated = defu(updates, pkg);\n\n await writeFile(pkgPath, `${JSON.stringify(updated, null, 2)}\\n`);\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { execa } from \"execa\";\nimport { makeTsupConfig } from \"../../tsup.config\";\nimport { makeUnbuildConfig } from \"../../unbuild.config\";\nimport { loadConfig } from \"../utils/config-loader\";\nimport { logBundler, logError, logger, logSuccess } from \"../utils/logger\";\n\ninterface BuildCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n format?: string;\n minify?: boolean;\n watch?: boolean;\n sourcemap?: boolean;\n dts?: boolean;\n clean?: boolean;\n}\n\n/**\n * Build command handler\n */\nexport async function buildCommand(\n entries: string[],\n options: BuildCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Building project...\");\n\n // Parse CLI flags\n const cliFlags: Partial<TsupOptions & UnbuildConfig> = {};\n if (options.format) {\n // Both tsup and unbuild support format\n cliFlags.format = options.format.split(\",\") as (\"esm\" | \"cjs\" | \"iife\")[];\n }\n if (options.minify !== undefined) {\n // Both tsup and unbuild support minify\n cliFlags.minify = options.minify;\n }\n if (options.sourcemap !== undefined) {\n cliFlags.sourcemap = options.sourcemap;\n }\n if (options.dts !== undefined) {\n // tsup uses dts, unbuild uses declaration\n (cliFlags as Partial<TsupOptions>).dts = options.dts;\n (cliFlags as Partial<UnbuildConfig>).declaration = options.dts;\n }\n if (options.clean !== undefined) {\n cliFlags.clean = options.clean;\n }\n if (entries.length > 0) {\n (cliFlags as Partial<TsupOptions>).entry = entries;\n (cliFlags as Partial<UnbuildConfig>).entries = entries;\n }\n\n // Load merged config\n const { config, bundler, configPath } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n ...(options.preset && { preset: options.preset }),\n bundler: options.bundler ?? \"auto\",\n cliFlags,\n });\n\n logBundler(bundler);\n\n // Create temporary config file for the build\n const tempConfigPath = join(\n process.cwd(),\n `.rad-build-temp.${bundler === \"tsup\" ? \"tsup\" : \"build\"}.config.js`,\n );\n\n try {\n // Generate final config\n const finalConfig =\n bundler === \"tsup\"\n ? makeTsupConfig(config as TsupOptions)\n : makeUnbuildConfig(config as UnbuildConfig);\n\n // Write temp config\n const configContent = `export default ${JSON.stringify(finalConfig, null, 2)}`;\n writeFileSync(tempConfigPath, configContent);\n\n // Run the appropriate bundler\n if (bundler === \"tsup\") {\n await execa(\n \"tsup\",\n [\n \"--config\",\n tempConfigPath,\n ...(options.watch ? [\"--watch\"] : []),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n } else {\n await execa(\n \"unbuild\",\n [\n ...(options.watch ? [\"--watch\"] : []),\n ...(configPath ? [] : [\"--config\", tempConfigPath]),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n }\n\n logSuccess(\"Build completed successfully!\");\n } finally {\n // Clean up temp config\n if (existsSync(tempConfigPath)) {\n try {\n const { unlinkSync } = await import(\"node:fs\");\n unlinkSync(tempConfigPath);\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n } catch (error) {\n logError(\"Build failed\", error as Error);\n process.exit(1);\n }\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport process from \"node:process\";\nimport { discoverConfigFile, getPackageJson, loadConfig } from \"../utils/config-loader\";\nimport { colors, logBox, logger } from \"../utils/logger\";\n\ninterface InfoCommandOptions {\n config?: string;\n}\n\n/**\n * Info command handler - Show build configuration and environment info\n */\nexport async function infoCommand(options: InfoCommandOptions): Promise<void> {\n try {\n logger.start(\"Gathering project information...\\n\");\n\n // Get package.json\n const pkg = await getPackageJson();\n const projectName = (pkg?.name as string | undefined) ?? \"unknown\";\n const projectVersion = (pkg?.version as string | undefined) ?? \"0.0.0\";\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n // Load config if exists\n let bundler: \"tsup\" | \"unbuild\" | \"none\" = \"none\";\n let config: TsupOptions | UnbuildConfig = {};\n\n if (configPath) {\n const loaded = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: \"auto\",\n });\n bundler = loaded.bundler;\n config = loaded.config;\n }\n\n // Display project info\n logBox(\"Project Information\", [\n `Name: ${colors.primary(projectName)}`,\n `Version: ${colors.primary(projectVersion)}`,\n `Config: ${configPath ? colors.file(configPath) : colors.dim(\"not found\")}`,\n `Bundler: ${bundler !== \"none\" ? colors.bundler(bundler) : colors.dim(\"not configured\")}`,\n ]);\n\n // Display build configuration\n if (bundler !== \"none\") {\n console.log(`\\n${colors.bold(\"Build Configuration:\")}`);\n\n if (bundler === \"tsup\") {\n const tsupConfig = config as TsupOptions;\n console.log(`${colors.dim(\"├─\")} Entry: ${JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"])}`);\n console.log(`${colors.dim(\"├─\")} Format: ${JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"])}`);\n console.log(\n `${colors.dim(\"├─\")} Target: ${tsupConfig.target ?? \"node18\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Platform: ${tsupConfig.platform ?? \"node\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} DTS: ${tsupConfig.dts !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Sourcemap: ${\n tsupConfig.sourcemap !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Minify: ${tsupConfig.minify ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"└─\")} Clean: ${\n tsupConfig.clean !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n } else {\n const unbuildConfig = config as UnbuildConfig;\n console.log(\n `${colors.dim(\"├─\")} Entries: ${\n JSON.stringify(unbuildConfig.entries ?? [\"src/index\"])}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Out Dir: ${unbuildConfig.outDir ?? \"dist\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Declaration: ${\n unbuildConfig.declaration !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Emit CJS: ${\n unbuildConfig.rollup?.emitCJS\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Sourcemap: ${\n unbuildConfig.sourcemap ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Parallel: ${\n unbuildConfig.parallel !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"└─\")} Clean: ${\n unbuildConfig.clean !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n }\n }\n\n // Display package.json exports\n if (pkg?.exports) {\n console.log(`\\n${colors.bold(\"Package Exports:\")}`);\n console.log(JSON.stringify(pkg.exports, null, 2));\n }\n\n // Display scripts\n if (pkg?.scripts) {\n const buildScripts = Object.entries(pkg.scripts).filter(\n ([key]) => key.includes(\"build\") || key.includes(\"watch\"),\n );\n\n if (buildScripts.length > 0) {\n console.log(`\\n${colors.bold(\"Build Scripts:\")}`);\n buildScripts.forEach(([name, script]) => {\n console.log(` ${colors.command(name.padEnd(20))} ${colors.dim(script as string)}`);\n });\n }\n }\n\n // Show next steps if not configured\n if (bundler === \"none\") {\n console.log(`\\n${colors.warning(\"⚠ No build configuration found\")}`);\n console.log(\n colors.info(\"\\nRun \") +\n colors.command(\"rad-build init\") +\n colors.info(\" to set up your project\"),\n );\n }\n } catch (error) {\n logger.error(\"Failed to gather information\", error as Error);\n process.exit(1);\n }\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\n\n/**\n * Generate tsup config file content\n */\nexport function generateTsupConfig(options: Partial<TsupOptions> = {}): string {\n const config = {\n entry: options.entry ?? [\"src/index.ts\"],\n format: options.format ?? [\"esm\", \"cjs\"],\n dts: options.dts ?? true,\n sourcemap: options.sourcemap ?? true,\n clean: options.clean ?? true,\n ...options,\n };\n\n return `import { makeTsupConfig } from \"@adddog/build-configs/tsup\";\n\nexport default makeTsupConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate unbuild config file content\n */\nexport function generateUnbuildConfig(\n options: Partial<UnbuildConfig> = {},\n): string {\n const config = {\n entries: options.entries ?? [\"src/index\"],\n declaration: options.declaration ?? true,\n rollup: {\n emitCJS: options.rollup?.emitCJS ?? false,\n ...options.rollup,\n },\n ...options,\n };\n\n return `import { makeUnbuildConfig } from \"@adddog/build-configs/unbuild\";\n\nexport default makeUnbuildConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate package.json scripts\n */\nexport function generatePackageJsonScripts(\n bundler: \"tsup\" | \"unbuild\",\n): Record<string, string> {\n const buildCommand = bundler === \"tsup\" ? \"tsup\" : \"unbuild\";\n const watchCommand =\n bundler === \"tsup\" ? \"tsup --watch\" : \"unbuild --watch\";\n\n return {\n \"build\": buildCommand,\n \"build:watch\": watchCommand,\n \"prepublishOnly\": \"pnpm build\",\n };\n}\n\n/**\n * Generate package.json exports based on bundler\n */\nexport function generatePackageJsonExports(\n _bundler: \"tsup\" | \"unbuild\",\n formats: string[],\n): Record<string, string | Record<string, string>> {\n const hasESM = formats.includes(\"esm\");\n const hasCJS = formats.includes(\"cjs\");\n\n if (hasESM && hasCJS) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n require: \"./dist/index.cjs\",\n },\n };\n } else if (hasESM) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n },\n };\n } else {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n require: \"./dist/index.cjs\",\n },\n };\n }\n}\n\n/**\n * Generate complete tsconfig.json for build\n */\nexport function generateTsConfig(): string {\n return `{\n \"extends\": \"@rad/config/base.tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"dist\",\n \"rootDir\": \"src\",\n \"declaration\": true,\n \"declarationMap\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/*.test.ts\", \"**/*.spec.ts\"]\n}\n`;\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync } from \"node:fs\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport { getPreset, listPresets } from \"../../presets\";\nimport {\n generatePackageJsonExports,\n generatePackageJsonScripts,\n generateTsupConfig,\n generateUnbuildConfig,\n} from \"../templates\";\nimport { getPackageJson, updatePackageJson } from \"../utils/config-loader\";\nimport { colors, logError } from \"../utils/logger\";\n\ninterface InitCommandOptions {\n bundler?: \"tsup\" | \"unbuild\";\n preset?: string;\n force?: boolean;\n}\n\n/**\n * Init command handler - Interactive project initialization\n */\nexport async function initCommand(options: InitCommandOptions): Promise<void> {\n try {\n p.intro(colors.bold(\"Welcome to @adddog/build-configs!\"));\n\n // Check if config already exists\n const tsupConfigExists = existsSync(\"tsup.config.ts\");\n const buildConfigExists = existsSync(\"build.config.ts\");\n\n if ((tsupConfigExists || buildConfigExists) && !options.force) {\n const shouldOverwrite = await p.confirm({\n message: \"Config file already exists. Overwrite?\",\n initialValue: false,\n });\n\n if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n // 1. Choose bundler\n const bundler =\n options.bundler ??\n (await p.select({\n message: \"Which bundler do you prefer?\",\n options: [\n {\n value: \"unbuild\",\n label: \"unbuild\",\n hint: \"Preserves file structure, better for libraries\",\n },\n {\n value: \"tsup\",\n label: \"tsup\",\n hint: \"Faster builds, bundles everything\",\n },\n ],\n }));\n\n if (p.isCancel(bundler)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // 2. Choose preset or custom\n const usePreset = await p.select({\n message: \"Start with a preset or custom config?\",\n options: [\n { value: \"preset\", label: \"Use a preset\" },\n { value: \"custom\", label: \"Custom configuration\" },\n ],\n });\n\n if (p.isCancel(usePreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n let selectedPreset: string | undefined;\n let finalConfig: Partial<TsupOptions & UnbuildConfig> = {};\n\n if (usePreset === \"preset\") {\n // Get presets for selected bundler\n const availablePresets = listPresets().filter(name => {\n const preset = getPreset(name);\n return (\n preset &&\n (preset.bundler === bundler || preset.bundler === \"both\")\n );\n });\n\n const presetChoice = await p.select({\n message: \"Select a preset:\",\n options: availablePresets.map(name => {\n const preset = getPreset(name)!;\n return {\n value: name,\n label: name,\n hint: preset.description,\n };\n }),\n });\n\n selectedPreset = String(presetChoice);\n\n if (p.isCancel(selectedPreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const preset = getPreset(selectedPreset as string);\n if (preset) {\n finalConfig = (bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {}) as Partial<TsupOptions & UnbuildConfig>;\n }\n } else {\n // Custom configuration\n const formats = await p.multiselect({\n message: \"Output formats?\",\n options: [\n { value: \"esm\", label: \"ESM (modern)\" },\n { value: \"cjs\", label: \"CommonJS (compatibility)\" },\n ...(bundler === \"tsup\"\n ? [{ value: \"iife\", label: \"IIFE (browser global)\" }]\n : []),\n ],\n initialValues: [\"esm\"],\n required: true,\n });\n\n if (p.isCancel(formats)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const features = await p.multiselect({\n message: \"Additional features?\",\n options: [\n { value: \"sourcemaps\", label: \"Generate sourcemaps\" },\n { value: \"minify\", label: \"Minify output\" },\n { value: \"declarations\", label: \"TypeScript declarations\" },\n ],\n initialValues: [\"sourcemaps\", \"declarations\"],\n });\n\n if (p.isCancel(features)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Build config from answers\n const formatsArray = formats as string[];\n finalConfig = {\n format: formatsArray as TsupOptions[\"format\"],\n sourcemap: (features as string[]).includes(\"sourcemaps\"),\n minify: (features as string[]).includes(\"minify\"),\n };\n\n if (bundler === \"tsup\") {\n finalConfig.dts = (features as string[]).includes(\"declarations\");\n } else {\n finalConfig.declaration = (features as string[]).includes(\n \"declarations\",\n );\n finalConfig.rollup = {\n emitCJS: (formats as string[]).includes(\"cjs\"),\n };\n }\n }\n\n // Generate and write config file\n const spinner = p.spinner();\n spinner.start(\"Creating configuration files...\");\n\n try {\n // Write config file\n const configFileName =\n bundler === \"tsup\" ? \"tsup.config.ts\" : \"build.config.ts\";\n const configContent =\n bundler === \"tsup\"\n ? generateTsupConfig(finalConfig as Partial<TsupOptions>)\n : generateUnbuildConfig(finalConfig as Partial<UnbuildConfig>);\n\n await writeFile(join(process.cwd(), configFileName), configContent);\n\n // Update package.json\n const pkg = await getPackageJson();\n if (pkg) {\n const scripts = generatePackageJsonScripts(bundler);\n const formatArray = Array.isArray(finalConfig.format)\n ? finalConfig.format\n : finalConfig.format\n ? [finalConfig.format]\n : [\"esm\", \"cjs\"];\n const exports = generatePackageJsonExports(\n bundler,\n formatArray as string[],\n );\n\n const pkgScripts = typeof pkg.scripts === \"object\" && pkg.scripts !== null\n ? (pkg.scripts as Record<string, string>)\n : {};\n\n await updatePackageJson({\n scripts: { ...pkgScripts, ...scripts },\n exports,\n main:\n formatArray.includes(\"cjs\") ||\n finalConfig.rollup?.emitCJS\n ? \"./dist/index.cjs\"\n : undefined,\n module: \"./dist/index.mjs\",\n types: \"./dist/index.d.ts\",\n files: [\"dist\"],\n });\n }\n\n spinner.stop(\"Configuration created successfully!\");\n\n p.outro(\n colors.success(`\nNext steps:\n 1. ${colors.command(\"pnpm install\")} - Install dependencies\n 2. ${colors.command(\"pnpm build\")} - Build your project\n 3. Edit ${colors.file(configFileName)} to customize\n\n${selectedPreset ? `Using preset: ${colors.primary(selectedPreset)}` : \"\"}\n\nHappy building! 🚀\n `),\n );\n } catch (error) {\n spinner.stop(\"Failed to create configuration\");\n throw error;\n }\n } catch (error) {\n logError(\"Initialization failed\", error as Error);\n process.exit(1);\n }\n}\n","import { z } from \"zod\";\n\n/**\n * Zod schema for tsup format\n */\nconst TsupFormatSchema = z.enum([\"cjs\", \"esm\", \"iife\"]);\n\n/**\n * Zod schema for tsup platform\n */\nconst TsupPlatformSchema = z.enum([\"node\", \"browser\", \"neutral\"]);\n\n/**\n * Zod schema for tsup DTS configuration\n */\nconst TsupDtsSchema = z.union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n resolve: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n only: z.boolean().optional(),\n banner: z.string().optional(),\n footer: z.string().optional(),\n compilerOptions: z.any().optional(),\n }),\n]);\n\n/**\n * Zod schema for tsup entry\n */\nconst TsupEntrySchema = z.union([\n z.array(z.string()),\n z.record(z.string(), z.string()),\n]);\n\n/**\n * Zod schema for tsup configuration\n */\nexport const TsupConfigSchema = z.object({\n name: z.string().optional(),\n entry: TsupEntrySchema.optional(),\n entryPoints: TsupEntrySchema.optional(),\n format: z.union([TsupFormatSchema, z.array(TsupFormatSchema)]).optional(),\n outDir: z.string().optional(),\n target: z.union([z.string(), z.array(z.string())]).optional(),\n platform: TsupPlatformSchema.optional(),\n dts: TsupDtsSchema.optional(),\n experimentalDts: z\n .union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n compilerOptions: z.any().optional(),\n }),\n ])\n .optional(),\n sourcemap: z.union([z.boolean(), z.literal(\"inline\")]).optional(),\n minify: z.union([z.boolean(), z.literal(\"terser\")]).optional(),\n bundle: z.boolean().optional(),\n splitting: z.boolean().optional(),\n clean: z.union([z.boolean(), z.array(z.string())]).optional(),\n treeshake: z.any().optional(),\n external: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n noExternal: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n skipNodeModulesBundle: z.boolean().optional(),\n keepNames: z.boolean().optional(),\n watch: z\n .union([z.boolean(), z.string(), z.array(z.union([z.string(), z.boolean()]))])\n .optional(),\n ignoreWatch: z.union([z.array(z.string()), z.string()]).optional(),\n tsconfig: z.string().optional(),\n shims: z.boolean().optional(),\n cjsInterop: z.boolean().optional(),\n removeNodeProtocol: z.boolean().optional(),\n});\n\n/**\n * Zod schema for unbuild builder types\n */\nconst UnbuildBuilderSchema = z.enum([\"rollup\", \"mkdist\", \"copy\", \"untyped\"]);\n\n/**\n * Zod schema for unbuild declaration\n */\nconst UnbuildDeclarationSchema = z.union([\n z.boolean(),\n z.literal(\"compatible\"),\n z.literal(\"node16\"),\n]);\n\n/**\n * Zod schema for unbuild entry\n */\nconst UnbuildEntrySchema = z.union([\n z.string(),\n z.object({\n builder: UnbuildBuilderSchema.optional(),\n input: z.string(),\n name: z.string().optional(),\n outDir: z.string().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n format: z.enum([\"esm\", \"cjs\"]).optional(),\n ext: z.string().optional(),\n }),\n]);\n\n/**\n * Zod schema for unbuild configuration\n */\nexport const UnbuildConfigSchema = z.object({\n name: z.string().optional(),\n rootDir: z.string().optional(),\n entries: z.array(UnbuildEntrySchema).optional(),\n outDir: z.string().optional(),\n clean: z.boolean().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n sourcemap: z.boolean().optional(),\n stub: z.boolean().optional(),\n watch: z.boolean().optional(),\n parallel: z.boolean().optional(),\n externals: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n alias: z.record(z.string(), z.string()).optional(),\n replace: z.record(z.string(), z.string()).optional(),\n failOnWarn: z.boolean().optional(),\n rollup: z\n .object({\n emitCJS: z.boolean().optional(),\n cjsBridge: z.boolean().optional(),\n preserveDynamicImports: z.boolean().optional(),\n inlineDependencies: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n })\n .optional(),\n});\n\n/**\n * Validate a tsup configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateTsupConfig(config: unknown) {\n return TsupConfigSchema.safeParse(config);\n}\n\n/**\n * Validate an unbuild configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateUnbuildConfig(config: unknown) {\n return UnbuildConfigSchema.safeParse(config);\n}\n\n/**\n * Validate a configuration based on bundler type\n * @param config - Configuration to validate\n * @param bundler - Bundler type\n * @returns Validation result\n */\nexport function validateConfig(config: unknown, bundler: \"tsup\" | \"unbuild\") {\n if (bundler === \"tsup\") {\n return validateTsupConfig(config);\n }\n return validateUnbuildConfig(config);\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport process from \"node:process\";\nimport { discoverConfigFile, loadConfig } from \"../utils/config-loader\";\nimport { colors, logError, logger, logSuccess } from \"../utils/logger\";\nimport { validateConfig } from \"../utils/validators\";\n\ninterface ValidateCommandOptions {\n config?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Validate command handler - Validate build configuration\n */\nexport async function validateCommand(\n options: ValidateCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Validating configuration...\");\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n if (!configPath) {\n logError(\"No configuration file found\");\n logger.info(\"Run 'rad-build init' to create a configuration file\");\n process.exit(1);\n }\n\n logger.info(`Found config: ${colors.file(configPath)}`);\n\n // Load config\n const { config, bundler } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: options.bundler ?? \"auto\",\n });\n\n logger.info(`Detected bundler: ${colors.bundler(bundler)}`);\n\n // Validate config\n const result = validateConfig(config, bundler);\n\n if (result.success) {\n logSuccess(\"✓ Configuration is valid!\");\n\n // Show some config details\n logger.info(\"\\nConfiguration summary:\");\n if (bundler === \"tsup\") {\n const tsupConfig = config as TsupOptions;\n logger.info(` Entry: ${JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"])}`);\n logger.info(` Format: ${JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"])}`);\n logger.info(` DTS: ${tsupConfig.dts !== false ? \"enabled\" : \"disabled\"}`);\n logger.info(\n ` Sourcemap: ${tsupConfig.sourcemap !== false ? \"enabled\" : \"disabled\"}`,\n );\n } else {\n const unbuildConfig = config as UnbuildConfig;\n logger.info(\n ` Entries: ${JSON.stringify(unbuildConfig.entries ?? [\"src/index\"])}`,\n );\n logger.info(\n ` Declaration: ${unbuildConfig.declaration !== false ? \"enabled\" : \"disabled\"}`,\n );\n logger.info(\n ` CJS: ${unbuildConfig.rollup?.emitCJS ? \"enabled\" : \"disabled\"}`,\n );\n }\n } else {\n logError(\"✗ Configuration validation failed\");\n\n // Show validation errors\n if (result.error) {\n logger.error(\"\\nValidation errors:\");\n result.error.issues.forEach(err => {\n logger.error(` ${colors.error(\"•\")} ${String(err.path.join(\".\"))}: ${err.message}`);\n });\n }\n\n process.exit(1);\n }\n } catch (error) {\n logError(\"Validation failed\", error as Error);\n process.exit(1);\n }\n}\n","import { logger } from \"../utils/logger\";\nimport { buildCommand } from \"./build\";\n\ninterface WatchCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Watch command handler - Rebuild on file changes\n */\nexport async function watchCommand(options: WatchCommandOptions): Promise<void> {\n logger.info(\"Starting watch mode...\");\n\n // Delegate to build command with watch flag\n await buildCommand([], {\n ...options,\n watch: true,\n });\n}\n","#!/usr/bin/env node\n\nimport process from \"node:process\";\nimport { cac } from \"cac\";\nimport { version } from \"../../package.json\";\n// Import commands (will be created next)\nimport { buildCommand } from \"./commands/build\";\n\nimport { infoCommand } from \"./commands/info\";\nimport { initCommand } from \"./commands/init\";\nimport { validateCommand } from \"./commands/validate\";\nimport { watchCommand } from \"./commands/watch\";\nimport { colors, logBox, logger } from \"./utils/logger\";\n\nconst cli = cac(\"rad-build\");\n\n// Global version and help\ncli.version(version).help();\n\n// Build command (default)\ncli\n .command(\"[...entries]\", \"Build your project\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--format <formats>\", \"Output formats (comma-separated)\")\n .option(\"--minify\", \"Minify output\")\n .option(\"--watch\", \"Watch mode\")\n .option(\"--sourcemap\", \"Generate sourcemaps\")\n .option(\"--dts\", \"Generate TypeScript declarations\")\n .option(\"--clean\", \"Clean output directory before build\")\n .action(buildCommand);\n\n// Init command\ncli\n .command(\"init\", \"Initialize build configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--force\", \"Overwrite existing config\")\n .action(initCommand);\n\n// Validate command\ncli\n .command(\"validate\", \"Validate build configuration\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(validateCommand);\n\n// Info command\ncli\n .command(\"info\", \"Show build configuration and environment info\")\n .option(\"--config <path>\", \"Path to config file\")\n .action(infoCommand);\n\n// Watch command\ncli\n .command(\"watch\", \"Watch and rebuild on file changes\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(watchCommand);\n\n// List presets command\ncli.command(\"list-presets\", \"List all available presets\").action(async () => {\n const { presetCategories } = await import(\"../presets\");\n\n logBox(\"Available Presets\", [\n \"\",\n ...Object.entries(presetCategories).flatMap(([category, presets]) => [\n colors.bold(category.toUpperCase()),\n ...Object.entries(presets).map(\n ([name, preset]) =>\n ` ${colors.primary(name.padEnd(25))} - ${colors.dim(preset.description)}`,\n ),\n \"\",\n ]),\n ]);\n});\n\n// Parse CLI arguments\ncli.parse();\n\n// Handle errors\nprocess.on(\"unhandledRejection\", error => {\n logger.error(\"Unhandled error:\", error as Error);\n process.exit(1);\n});\n"],"names":["preset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/cli/utils/logger.ts","../../src/cli/utils/config-loader.ts","../../src/cli/commands/build.ts","../../src/cli/commands/info.ts","../../src/cli/templates/index.ts","../../src/cli/commands/init.ts","../../src/cli/utils/validators.ts","../../src/cli/commands/validate.ts","../../src/cli/commands/watch.ts","../../src/cli/index.ts"],"sourcesContent":["import { consola } from \"consola\";\nimport pc from \"picocolors\";\n\n/**\n * Custom logger instance with colorized output\n */\nexport const logger = consola.create({\n formatOptions: {\n colors: true,\n compact: false,\n date: false,\n },\n});\n\n/**\n * Color utilities for consistent styling\n */\nexport const colors = {\n primary: pc.cyan,\n success: pc.green,\n warning: pc.yellow,\n error: pc.red,\n info: pc.blue,\n dim: pc.dim,\n bold: pc.bold,\n bundler: pc.magenta,\n file: pc.yellow,\n command: pc.green,\n};\n\n/**\n * Log a formatted success message\n */\nexport function logSuccess(message: string): void {\n logger.success(colors.success(message));\n}\n\n/**\n * Log a formatted error message\n */\nexport function logError(message: string, error?: Error): void {\n logger.error(colors.error(message));\n if (error) {\n logger.error(colors.dim(error.message));\n if (error.stack) {\n logger.error(colors.dim(error.stack));\n }\n }\n}\n\n/**\n * Log a formatted warning message\n */\nexport function logWarning(message: string): void {\n logger.warn(colors.warning(message));\n}\n\n/**\n * Log a formatted info message\n */\nexport function logInfo(message: string): void {\n logger.info(colors.info(message));\n}\n\n/**\n * Log a formatted step message\n */\nexport function logStep(step: number, total: number, message: string): void {\n logger.info(\n `${colors.dim(`[${step}/${total}]`)} ${colors.primary(message)}`,\n );\n}\n\n/**\n * Log a formatted file path\n */\nexport function logFile(action: string, path: string): void {\n logger.info(`${colors.success(action)} ${colors.file(path)}`);\n}\n\n/**\n * Log bundler selection\n */\nexport function logBundler(bundler: \"tsup\" | \"unbuild\"): void {\n logger.info(`Using bundler: ${colors.bundler(bundler)}`);\n}\n\n/**\n * Create a box for prominent messages\n */\nexport function logBox(title: string, content: string[]): void {\n const maxLength = Math.max(\n title.length,\n ...content.map(line => line.length),\n );\n const border = \"─\".repeat(maxLength + 4);\n\n console.log(colors.primary(`┌${border}┐`));\n console.log(\n colors.primary(`│ ${colors.bold(title.padEnd(maxLength))} │`),\n );\n console.log(colors.primary(`├${border}┤`));\n content.forEach(line => {\n console.log(colors.primary(`│ ${line.padEnd(maxLength)} │`));\n });\n console.log(colors.primary(`└${border}┘`));\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport process from \"node:process\";\nimport { defu } from \"defu\";\nimport { createJiti } from \"jiti\";\nimport { getPreset } from \"../../presets\";\nimport { logger } from \"./logger\";\n\n/**\n * Config file names to search for (in order of priority)\n */\nconst CONFIG_FILES = [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n \"build.config.cjs\",\n \"tsup.config.ts\",\n \"tsup.config.js\",\n \"tsup.config.mjs\",\n \".radbuildrc.ts\",\n \".radbuildrc.js\",\n \".radbuildrc.json\",\n];\n\n/**\n * Detect which bundler is being used based on existing config files\n */\nexport async function detectBundler(\n cwd: string = process.cwd(),\n): Promise<\"tsup\" | \"unbuild\" | null> {\n // Check for tsup config\n for (const file of [\"tsup.config.ts\", \"tsup.config.js\", \"tsup.config.mjs\"]) {\n if (existsSync(join(cwd, file))) {\n return \"tsup\";\n }\n }\n\n // Check for unbuild config\n for (const file of [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n ]) {\n if (existsSync(join(cwd, file))) {\n const configPath = join(cwd, file);\n try {\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n const config = (await jiti.import(configPath)) as TsupOptions | UnbuildConfig;\n\n // Check if config has unbuild-specific properties\n if (\n \"entries\" in config ||\n \"rollup\" in config ||\n (Array.isArray(config) && config[0] && \"entries\" in config[0])\n ) {\n return \"unbuild\";\n }\n } catch {\n // If we can't load the config, continue\n }\n }\n }\n\n // Check package.json scripts\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.scripts?.build) {\n if (pkg.scripts.build.includes(\"tsup\")) return \"tsup\";\n if (pkg.scripts.build.includes(\"unbuild\")) return \"unbuild\";\n }\n }\n } catch {\n // Ignore errors\n }\n\n return null;\n}\n\n/**\n * Discover config file in the current working directory\n */\nexport async function discoverConfigFile(\n cwd: string = process.cwd(),\n customPath?: string,\n): Promise<string | null> {\n // If custom path provided, use it\n if (customPath) {\n const fullPath = resolve(cwd, customPath);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n logger.warn(`Custom config file not found: ${customPath}`);\n return null;\n }\n\n // Search for config files\n for (const file of CONFIG_FILES) {\n const fullPath = join(cwd, file);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n // Check package.json for config\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.radbuild) {\n return pkgPath;\n }\n } catch {\n // Ignore errors\n }\n }\n\n return null;\n}\n\n/**\n * Load config from a file\n */\nexport async function loadConfigFile<T = TsupOptions | UnbuildConfig>(\n configPath: string,\n cwd: string = process.cwd(),\n): Promise<T | null> {\n try {\n // Handle package.json config\n if (configPath.endsWith(\"package.json\")) {\n const pkg = JSON.parse(await readFile(configPath, \"utf-8\"));\n return (pkg.radbuild as T) || null;\n }\n\n // Handle JSON config\n if (configPath.endsWith(\".json\")) {\n return JSON.parse(await readFile(configPath, \"utf-8\")) as T;\n }\n\n // Handle JS/TS config with jiti\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n\n const config = (await jiti.import(configPath)) as T;\n\n return config;\n } catch (error) {\n logger.error(\n `Failed to load config from ${configPath}`,\n error as Error,\n );\n return null;\n }\n}\n\n/**\n * Load and merge configuration from multiple sources\n */\nexport async function loadConfig(options: {\n cwd?: string;\n configPath?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\" | \"auto\";\n cliFlags?: Partial<TsupOptions | UnbuildConfig>;\n}): Promise<{\n config: TsupOptions | UnbuildConfig;\n bundler: \"tsup\" | \"unbuild\";\n configPath: string | null;\n}> {\n const cwd = options.cwd ?? process.cwd();\n\n // 1. Detect bundler if not specified\n let bundler = options.bundler === \"auto\" ? null : options.bundler;\n if (!bundler) {\n bundler = (await detectBundler(cwd)) ?? \"unbuild\";\n }\n\n // 2. Load preset if specified\n let presetConfig = {};\n if (options.preset) {\n const preset = getPreset(options.preset);\n if (preset) {\n presetConfig =\n bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {};\n logger.info(`Using preset: ${preset.name}`);\n } else {\n logger.warn(`Preset not found: ${options.preset}`);\n }\n }\n\n // 3. Discover and load project config\n const configPath = await discoverConfigFile(cwd, options.configPath);\n let projectConfig = {};\n if (configPath) {\n const loaded = await loadConfigFile(configPath, cwd);\n if (loaded) {\n projectConfig = loaded;\n logger.info(`Loaded config from: ${configPath}`);\n }\n }\n\n // 4. Merge configs (right takes precedence)\n const config = defu(\n options.cliFlags ?? {},\n projectConfig,\n presetConfig,\n {}, // Default config is applied in the makers\n );\n\n return {\n config,\n bundler,\n configPath,\n };\n}\n\n/**\n * Get package.json from current directory\n */\nexport async function getPackageJson(\n cwd: string = process.cwd(),\n): Promise<Record<string, unknown> | null> {\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (!existsSync(pkgPath)) return null;\n\n return JSON.parse(await readFile(pkgPath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\n/**\n * Update package.json with new fields\n */\nexport async function updatePackageJson(\n updates: Record<string, unknown>,\n cwd: string = process.cwd(),\n): Promise<void> {\n const { writeFile } = await import(\"node:fs/promises\");\n const pkgPath = join(cwd, \"package.json\");\n\n const pkg = (await getPackageJson(cwd)) ?? {};\n const updated = defu(updates, pkg);\n\n await writeFile(pkgPath, `${JSON.stringify(updated, null, 2)}\\n`);\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { execa } from \"execa\";\nimport { makeTsupConfig } from \"../../tsup.config\";\nimport { makeUnbuildConfig } from \"../../unbuild.config\";\nimport { loadConfig } from \"../utils/config-loader\";\nimport { logBundler, logError, logger, logSuccess } from \"../utils/logger\";\n\ninterface BuildCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n format?: string;\n minify?: boolean;\n watch?: boolean;\n sourcemap?: boolean;\n dts?: boolean;\n clean?: boolean;\n}\n\n/**\n * Build command handler\n */\nexport async function buildCommand(\n entries: string[],\n options: BuildCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Building project...\");\n\n // Parse CLI flags\n const cliFlags: Partial<TsupOptions & UnbuildConfig> = {};\n if (options.format) {\n // Both tsup and unbuild support format\n cliFlags.format = options.format.split(\",\") as (\"esm\" | \"cjs\" | \"iife\")[];\n }\n if (options.minify !== undefined) {\n // Both tsup and unbuild support minify\n cliFlags.minify = options.minify;\n }\n if (options.sourcemap !== undefined) {\n cliFlags.sourcemap = options.sourcemap;\n }\n if (options.dts !== undefined) {\n // tsup uses dts, unbuild uses declaration\n (cliFlags as Partial<TsupOptions>).dts = options.dts;\n (cliFlags as Partial<UnbuildConfig>).declaration = options.dts;\n }\n if (options.clean !== undefined) {\n cliFlags.clean = options.clean;\n }\n if (entries.length > 0) {\n (cliFlags as Partial<TsupOptions>).entry = entries;\n (cliFlags as Partial<UnbuildConfig>).entries = entries;\n }\n\n // Load merged config\n const { config, bundler, configPath } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n ...(options.preset && { preset: options.preset }),\n bundler: options.bundler ?? \"auto\",\n cliFlags,\n });\n\n logBundler(bundler);\n\n // Create temporary config file for the build\n const tempConfigPath = join(\n process.cwd(),\n `.rad-build-temp.${bundler === \"tsup\" ? \"tsup\" : \"build\"}.config.js`,\n );\n\n try {\n // Generate final config\n const finalConfig =\n bundler === \"tsup\"\n ? makeTsupConfig(config as TsupOptions)\n : makeUnbuildConfig(config as UnbuildConfig);\n\n // Write temp config\n const configContent = `export default ${JSON.stringify(finalConfig, null, 2)}`;\n writeFileSync(tempConfigPath, configContent);\n\n // Run the appropriate bundler\n if (bundler === \"tsup\") {\n await execa(\n \"tsup\",\n [\n \"--config\",\n tempConfigPath,\n ...(options.watch ? [\"--watch\"] : []),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n } else {\n await execa(\n \"unbuild\",\n [\n ...(options.watch ? [\"--watch\"] : []),\n ...(configPath ? [] : [\"--config\", tempConfigPath]),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n }\n\n logSuccess(\"Build completed successfully!\");\n } finally {\n // Clean up temp config\n if (existsSync(tempConfigPath)) {\n try {\n const { unlinkSync } = await import(\"node:fs\");\n unlinkSync(tempConfigPath);\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n } catch (error) {\n logError(\"Build failed\", error as Error);\n process.exit(1);\n }\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport process from \"node:process\";\nimport { discoverConfigFile, getPackageJson, loadConfig } from \"../utils/config-loader\";\nimport { colors, logBox, logger } from \"../utils/logger\";\n\ninterface InfoCommandOptions {\n config?: string;\n}\n\n/**\n * Info command handler - Show build configuration and environment info\n */\nexport async function infoCommand(options: InfoCommandOptions): Promise<void> {\n try {\n logger.start(\"Gathering project information...\\n\");\n\n // Get package.json\n const pkg = await getPackageJson();\n const projectName = (pkg?.name as string | undefined) ?? \"unknown\";\n const projectVersion = (pkg?.version as string | undefined) ?? \"0.0.0\";\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n // Load config if exists\n let bundler: \"tsup\" | \"unbuild\" | \"none\" = \"none\";\n let config: TsupOptions | UnbuildConfig = {};\n\n if (configPath) {\n const loaded = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: \"auto\",\n });\n bundler = loaded.bundler;\n config = loaded.config;\n }\n\n // Display project info\n logBox(\"Project Information\", [\n `Name: ${colors.primary(projectName)}`,\n `Version: ${colors.primary(projectVersion)}`,\n `Config: ${configPath ? colors.file(configPath) : colors.dim(\"not found\")}`,\n `Bundler: ${bundler !== \"none\" ? colors.bundler(bundler) : colors.dim(\"not configured\")}`,\n ]);\n\n // Display build configuration\n if (bundler !== \"none\") {\n console.log(`\\n${colors.bold(\"Build Configuration:\")}`);\n\n if (bundler === \"tsup\") {\n const tsupConfig = config as TsupOptions;\n console.log(`${colors.dim(\"├─\")} Entry: ${JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"])}`);\n console.log(`${colors.dim(\"├─\")} Format: ${JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"])}`);\n console.log(\n `${colors.dim(\"├─\")} Target: ${tsupConfig.target ?? \"node18\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Platform: ${tsupConfig.platform ?? \"node\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} DTS: ${tsupConfig.dts !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Sourcemap: ${\n tsupConfig.sourcemap !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Minify: ${tsupConfig.minify ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"└─\")} Clean: ${\n tsupConfig.clean !== false ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n } else {\n const unbuildConfig = config as UnbuildConfig;\n console.log(\n `${colors.dim(\"├─\")} Entries: ${\n JSON.stringify(unbuildConfig.entries ?? [\"src/index\"])}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Out Dir: ${unbuildConfig.outDir ?? \"dist\"}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Declaration: ${\n unbuildConfig.declaration !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Emit CJS: ${\n unbuildConfig.rollup?.emitCJS\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Sourcemap: ${\n unbuildConfig.sourcemap ? colors.success(\"✓\") : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"├─\")} Parallel: ${\n unbuildConfig.parallel !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n console.log(\n `${colors.dim(\"└─\")} Clean: ${\n unbuildConfig.clean !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")}`,\n );\n }\n }\n\n // Display package.json exports\n if (pkg?.exports) {\n console.log(`\\n${colors.bold(\"Package Exports:\")}`);\n console.log(JSON.stringify(pkg.exports, null, 2));\n }\n\n // Display scripts\n if (pkg?.scripts) {\n const buildScripts = Object.entries(pkg.scripts).filter(\n ([key]) => key.includes(\"build\") || key.includes(\"watch\"),\n );\n\n if (buildScripts.length > 0) {\n console.log(`\\n${colors.bold(\"Build Scripts:\")}`);\n buildScripts.forEach(([name, script]) => {\n console.log(` ${colors.command(name.padEnd(20))} ${colors.dim(script as string)}`);\n });\n }\n }\n\n // Show next steps if not configured\n if (bundler === \"none\") {\n console.log(`\\n${colors.warning(\"⚠ No build configuration found\")}`);\n console.log(\n colors.info(\"\\nRun \") +\n colors.command(\"rad-build init\") +\n colors.info(\" to set up your project\"),\n );\n }\n } catch (error) {\n logger.error(\"Failed to gather information\", error as Error);\n process.exit(1);\n }\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\n\n/**\n * Generate tsup config file content\n */\nexport function generateTsupConfig(options: Partial<TsupOptions> = {}): string {\n const config = {\n entry: options.entry ?? [\"src/index.ts\"],\n format: options.format ?? [\"esm\", \"cjs\"],\n dts: options.dts ?? true,\n sourcemap: options.sourcemap ?? true,\n clean: options.clean ?? true,\n ...options,\n };\n\n return `import { makeTsupConfig } from \"@adddog/build-configs/tsup\";\n\nexport default makeTsupConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate unbuild config file content\n */\nexport function generateUnbuildConfig(\n options: Partial<UnbuildConfig> = {},\n): string {\n const config = {\n entries: options.entries ?? [\"src/index\"],\n declaration: options.declaration ?? true,\n rollup: {\n emitCJS: options.rollup?.emitCJS ?? false,\n ...options.rollup,\n },\n ...options,\n };\n\n return `import { makeUnbuildConfig } from \"@adddog/build-configs/unbuild\";\n\nexport default makeUnbuildConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate package.json scripts\n */\nexport function generatePackageJsonScripts(\n bundler: \"tsup\" | \"unbuild\",\n): Record<string, string> {\n const buildCommand = bundler === \"tsup\" ? \"tsup\" : \"unbuild\";\n const watchCommand =\n bundler === \"tsup\" ? \"tsup --watch\" : \"unbuild --watch\";\n\n return {\n \"build\": buildCommand,\n \"build:watch\": watchCommand,\n \"prepublishOnly\": \"pnpm build\",\n };\n}\n\n/**\n * Generate package.json exports based on bundler\n */\nexport function generatePackageJsonExports(\n _bundler: \"tsup\" | \"unbuild\",\n formats: string[],\n): Record<string, string | Record<string, string>> {\n const hasESM = formats.includes(\"esm\");\n const hasCJS = formats.includes(\"cjs\");\n\n if (hasESM && hasCJS) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n require: \"./dist/index.cjs\",\n },\n };\n } else if (hasESM) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n },\n };\n } else {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n require: \"./dist/index.cjs\",\n },\n };\n }\n}\n\n/**\n * Generate complete tsconfig.json for build\n */\nexport function generateTsConfig(): string {\n return `{\n \"extends\": \"@rad/config/base.tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"dist\",\n \"rootDir\": \"src\",\n \"declaration\": true,\n \"declarationMap\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/*.test.ts\", \"**/*.spec.ts\"]\n}\n`;\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { existsSync } from \"node:fs\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport { getPreset, listPresets } from \"../../presets\";\nimport {\n generatePackageJsonExports,\n generatePackageJsonScripts,\n generateTsupConfig,\n generateUnbuildConfig,\n} from \"../templates\";\nimport { getPackageJson, updatePackageJson } from \"../utils/config-loader\";\nimport { colors, logError } from \"../utils/logger\";\n\ninterface InitCommandOptions {\n bundler?: \"tsup\" | \"unbuild\";\n preset?: string;\n force?: boolean;\n}\n\n/**\n * Init command handler - Interactive project initialization\n */\nexport async function initCommand(options: InitCommandOptions): Promise<void> {\n try {\n p.intro(colors.bold(\"Welcome to @adddog/build-configs!\"));\n\n // Check if config already exists\n const tsupConfigExists = existsSync(\"tsup.config.ts\");\n const buildConfigExists = existsSync(\"build.config.ts\");\n\n if ((tsupConfigExists || buildConfigExists) && !options.force) {\n const shouldOverwrite = await p.confirm({\n message: \"Config file already exists. Overwrite?\",\n initialValue: false,\n });\n\n if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n // 1. Choose bundler\n const bundler =\n options.bundler ??\n (await p.select({\n message: \"Which bundler do you prefer?\",\n options: [\n {\n value: \"unbuild\",\n label: \"unbuild\",\n hint: \"Preserves file structure, better for libraries\",\n },\n {\n value: \"tsup\",\n label: \"tsup\",\n hint: \"Faster builds, bundles everything\",\n },\n ],\n }));\n\n if (p.isCancel(bundler)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // 2. Choose preset or custom\n const usePreset = await p.select({\n message: \"Start with a preset or custom config?\",\n options: [\n { value: \"preset\", label: \"Use a preset\" },\n { value: \"custom\", label: \"Custom configuration\" },\n ],\n });\n\n if (p.isCancel(usePreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n let selectedPreset: string | undefined;\n let finalConfig: Partial<TsupOptions & UnbuildConfig> = {};\n\n if (usePreset === \"preset\") {\n // Get presets for selected bundler\n const availablePresets = listPresets().filter(name => {\n const preset = getPreset(name);\n return (\n preset &&\n (preset.bundler === bundler || preset.bundler === \"both\")\n );\n });\n\n const presetChoice = await p.select({\n message: \"Select a preset:\",\n options: availablePresets.map(name => {\n const preset = getPreset(name)!;\n return {\n value: name,\n label: name,\n hint: preset.description,\n };\n }),\n });\n\n selectedPreset = String(presetChoice);\n\n if (p.isCancel(selectedPreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const preset = getPreset(selectedPreset as string);\n if (preset) {\n finalConfig = (bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {}) as Partial<TsupOptions & UnbuildConfig>;\n }\n } else {\n // Custom configuration\n const formats = await p.multiselect({\n message: \"Output formats?\",\n options: [\n { value: \"esm\", label: \"ESM (modern)\" },\n { value: \"cjs\", label: \"CommonJS (compatibility)\" },\n ...(bundler === \"tsup\"\n ? [{ value: \"iife\", label: \"IIFE (browser global)\" }]\n : []),\n ],\n initialValues: [\"esm\"],\n required: true,\n });\n\n if (p.isCancel(formats)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const features = await p.multiselect({\n message: \"Additional features?\",\n options: [\n { value: \"sourcemaps\", label: \"Generate sourcemaps\" },\n { value: \"minify\", label: \"Minify output\" },\n { value: \"declarations\", label: \"TypeScript declarations\" },\n ],\n initialValues: [\"sourcemaps\", \"declarations\"],\n });\n\n if (p.isCancel(features)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Build config from answers\n const formatsArray = formats as string[];\n finalConfig = {\n format: formatsArray as TsupOptions[\"format\"],\n sourcemap: (features as string[]).includes(\"sourcemaps\"),\n minify: (features as string[]).includes(\"minify\"),\n };\n\n if (bundler === \"tsup\") {\n finalConfig.dts = (features as string[]).includes(\"declarations\");\n } else {\n finalConfig.declaration = (features as string[]).includes(\n \"declarations\",\n );\n finalConfig.rollup = {\n emitCJS: (formats as string[]).includes(\"cjs\"),\n };\n }\n }\n\n // Generate and write config file\n const spinner = p.spinner();\n spinner.start(\"Creating configuration files...\");\n\n try {\n // Write config file\n const configFileName =\n bundler === \"tsup\" ? \"tsup.config.ts\" : \"build.config.ts\";\n const configContent =\n bundler === \"tsup\"\n ? generateTsupConfig(finalConfig as Partial<TsupOptions>)\n : generateUnbuildConfig(finalConfig as Partial<UnbuildConfig>);\n\n await writeFile(join(process.cwd(), configFileName), configContent);\n\n // Update package.json\n const pkg = await getPackageJson();\n if (pkg) {\n const scripts = generatePackageJsonScripts(bundler);\n const formatArray = Array.isArray(finalConfig.format)\n ? finalConfig.format\n : finalConfig.format\n ? [finalConfig.format]\n : [\"esm\", \"cjs\"];\n const exports = generatePackageJsonExports(\n bundler,\n formatArray as string[],\n );\n\n const pkgScripts = typeof pkg.scripts === \"object\" && pkg.scripts !== null\n ? (pkg.scripts as Record<string, string>)\n : {};\n\n await updatePackageJson({\n scripts: { ...pkgScripts, ...scripts },\n exports,\n main:\n formatArray.includes(\"cjs\") ||\n finalConfig.rollup?.emitCJS\n ? \"./dist/index.cjs\"\n : undefined,\n module: \"./dist/index.mjs\",\n types: \"./dist/index.d.ts\",\n files: [\"dist\"],\n });\n }\n\n spinner.stop(\"Configuration created successfully!\");\n\n p.outro(\n colors.success(`\nNext steps:\n 1. ${colors.command(\"pnpm install\")} - Install dependencies\n 2. ${colors.command(\"pnpm build\")} - Build your project\n 3. Edit ${colors.file(configFileName)} to customize\n\n${selectedPreset ? `Using preset: ${colors.primary(selectedPreset)}` : \"\"}\n\nHappy building! 🚀\n `),\n );\n } catch (error) {\n spinner.stop(\"Failed to create configuration\");\n throw error;\n }\n } catch (error) {\n logError(\"Initialization failed\", error as Error);\n process.exit(1);\n }\n}\n","import { z } from \"zod\";\n\n/**\n * Zod schema for tsup format\n */\nconst TsupFormatSchema = z.enum([\"cjs\", \"esm\", \"iife\"]);\n\n/**\n * Zod schema for tsup platform\n */\nconst TsupPlatformSchema = z.enum([\"node\", \"browser\", \"neutral\"]);\n\n/**\n * Zod schema for tsup DTS configuration\n */\nconst TsupDtsSchema = z.union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n resolve: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n only: z.boolean().optional(),\n banner: z.string().optional(),\n footer: z.string().optional(),\n compilerOptions: z.any().optional(),\n }),\n]);\n\n/**\n * Zod schema for tsup entry\n */\nconst TsupEntrySchema = z.union([\n z.array(z.string()),\n z.record(z.string(), z.string()),\n]);\n\n/**\n * Zod schema for tsup configuration\n */\nexport const TsupConfigSchema = z.object({\n name: z.string().optional(),\n entry: TsupEntrySchema.optional(),\n entryPoints: TsupEntrySchema.optional(),\n format: z.union([TsupFormatSchema, z.array(TsupFormatSchema)]).optional(),\n outDir: z.string().optional(),\n target: z.union([z.string(), z.array(z.string())]).optional(),\n platform: TsupPlatformSchema.optional(),\n dts: TsupDtsSchema.optional(),\n experimentalDts: z\n .union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n compilerOptions: z.any().optional(),\n }),\n ])\n .optional(),\n sourcemap: z.union([z.boolean(), z.literal(\"inline\")]).optional(),\n minify: z.union([z.boolean(), z.literal(\"terser\")]).optional(),\n bundle: z.boolean().optional(),\n splitting: z.boolean().optional(),\n clean: z.union([z.boolean(), z.array(z.string())]).optional(),\n treeshake: z.any().optional(),\n external: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n noExternal: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n skipNodeModulesBundle: z.boolean().optional(),\n keepNames: z.boolean().optional(),\n watch: z\n .union([z.boolean(), z.string(), z.array(z.union([z.string(), z.boolean()]))])\n .optional(),\n ignoreWatch: z.union([z.array(z.string()), z.string()]).optional(),\n tsconfig: z.string().optional(),\n shims: z.boolean().optional(),\n cjsInterop: z.boolean().optional(),\n removeNodeProtocol: z.boolean().optional(),\n});\n\n/**\n * Zod schema for unbuild builder types\n */\nconst UnbuildBuilderSchema = z.enum([\"rollup\", \"mkdist\", \"copy\", \"untyped\"]);\n\n/**\n * Zod schema for unbuild declaration\n */\nconst UnbuildDeclarationSchema = z.union([\n z.boolean(),\n z.literal(\"compatible\"),\n z.literal(\"node16\"),\n]);\n\n/**\n * Zod schema for unbuild entry\n */\nconst UnbuildEntrySchema = z.union([\n z.string(),\n z.object({\n builder: UnbuildBuilderSchema.optional(),\n input: z.string(),\n name: z.string().optional(),\n outDir: z.string().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n format: z.enum([\"esm\", \"cjs\"]).optional(),\n ext: z.string().optional(),\n }),\n]);\n\n/**\n * Zod schema for unbuild configuration\n */\nexport const UnbuildConfigSchema = z.object({\n name: z.string().optional(),\n rootDir: z.string().optional(),\n entries: z.array(UnbuildEntrySchema).optional(),\n outDir: z.string().optional(),\n clean: z.boolean().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n sourcemap: z.boolean().optional(),\n stub: z.boolean().optional(),\n watch: z.boolean().optional(),\n parallel: z.boolean().optional(),\n externals: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n alias: z.record(z.string(), z.string()).optional(),\n replace: z.record(z.string(), z.string()).optional(),\n failOnWarn: z.boolean().optional(),\n rollup: z\n .object({\n emitCJS: z.boolean().optional(),\n cjsBridge: z.boolean().optional(),\n preserveDynamicImports: z.boolean().optional(),\n inlineDependencies: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n })\n .optional(),\n});\n\n/**\n * Validate a tsup configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateTsupConfig(config: unknown) {\n return TsupConfigSchema.safeParse(config);\n}\n\n/**\n * Validate an unbuild configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateUnbuildConfig(config: unknown) {\n return UnbuildConfigSchema.safeParse(config);\n}\n\n/**\n * Validate a configuration based on bundler type\n * @param config - Configuration to validate\n * @param bundler - Bundler type\n * @returns Validation result\n */\nexport function validateConfig(config: unknown, bundler: \"tsup\" | \"unbuild\") {\n if (bundler === \"tsup\") {\n return validateTsupConfig(config);\n }\n return validateUnbuildConfig(config);\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport process from \"node:process\";\nimport { discoverConfigFile, loadConfig } from \"../utils/config-loader\";\nimport { colors, logError, logger, logSuccess } from \"../utils/logger\";\nimport { validateConfig } from \"../utils/validators\";\n\ninterface ValidateCommandOptions {\n config?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Validate command handler - Validate build configuration\n */\nexport async function validateCommand(\n options: ValidateCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Validating configuration...\");\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n if (!configPath) {\n logError(\"No configuration file found\");\n logger.info(\"Run 'rad-build init' to create a configuration file\");\n process.exit(1);\n }\n\n logger.info(`Found config: ${colors.file(configPath)}`);\n\n // Load config\n const { config, bundler } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: options.bundler ?? \"auto\",\n });\n\n logger.info(`Detected bundler: ${colors.bundler(bundler)}`);\n\n // Validate config\n const result = validateConfig(config, bundler);\n\n if (result.success) {\n logSuccess(\"✓ Configuration is valid!\");\n\n // Show some config details\n logger.info(\"\\nConfiguration summary:\");\n if (bundler === \"tsup\") {\n const tsupConfig = config as TsupOptions;\n logger.info(` Entry: ${JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"])}`);\n logger.info(` Format: ${JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"])}`);\n logger.info(` DTS: ${tsupConfig.dts !== false ? \"enabled\" : \"disabled\"}`);\n logger.info(\n ` Sourcemap: ${tsupConfig.sourcemap !== false ? \"enabled\" : \"disabled\"}`,\n );\n } else {\n const unbuildConfig = config as UnbuildConfig;\n logger.info(\n ` Entries: ${JSON.stringify(unbuildConfig.entries ?? [\"src/index\"])}`,\n );\n logger.info(\n ` Declaration: ${unbuildConfig.declaration !== false ? \"enabled\" : \"disabled\"}`,\n );\n logger.info(\n ` CJS: ${unbuildConfig.rollup?.emitCJS ? \"enabled\" : \"disabled\"}`,\n );\n }\n } else {\n logError(\"✗ Configuration validation failed\");\n\n // Show validation errors\n if (result.error) {\n logger.error(\"\\nValidation errors:\");\n result.error.issues.forEach(err => {\n logger.error(` ${colors.error(\"•\")} ${String(err.path.join(\".\"))}: ${err.message}`);\n });\n }\n\n process.exit(1);\n }\n } catch (error) {\n logError(\"Validation failed\", error as Error);\n process.exit(1);\n }\n}\n","import { logger } from \"../utils/logger\";\nimport { buildCommand } from \"./build\";\n\ninterface WatchCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Watch command handler - Rebuild on file changes\n */\nexport async function watchCommand(options: WatchCommandOptions): Promise<void> {\n logger.info(\"Starting watch mode...\");\n\n // Delegate to build command with watch flag\n await buildCommand([], {\n ...options,\n watch: true,\n });\n}\n","#!/usr/bin/env node\n\nimport process from \"node:process\";\nimport { cac } from \"cac\";\nimport { version } from \"../../package.json\";\n// Import commands (will be created next)\nimport { buildCommand } from \"./commands/build\";\n\nimport { infoCommand } from \"./commands/info\";\nimport { initCommand } from \"./commands/init\";\nimport { validateCommand } from \"./commands/validate\";\nimport { watchCommand } from \"./commands/watch\";\nimport { colors, logBox, logger } from \"./utils/logger\";\n\nconst cli = cac(\"rad-build\");\n\n// Global version and help\ncli.version(version).help();\n\n// Build command (default)\ncli\n .command(\"[...entries]\", \"Build your project\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--format <formats>\", \"Output formats (comma-separated)\")\n .option(\"--minify\", \"Minify output\")\n .option(\"--watch\", \"Watch mode\")\n .option(\"--sourcemap\", \"Generate sourcemaps\")\n .option(\"--dts\", \"Generate TypeScript declarations\")\n .option(\"--clean\", \"Clean output directory before build\")\n .action(buildCommand);\n\n// Init command\ncli\n .command(\"init\", \"Initialize build configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--force\", \"Overwrite existing config\")\n .action(initCommand);\n\n// Validate command\ncli\n .command(\"validate\", \"Validate build configuration\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(validateCommand);\n\n// Info command\ncli\n .command(\"info\", \"Show build configuration and environment info\")\n .option(\"--config <path>\", \"Path to config file\")\n .action(infoCommand);\n\n// Watch command\ncli\n .command(\"watch\", \"Watch and rebuild on file changes\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(watchCommand);\n\n// List presets command\ncli.command(\"list-presets\", \"List all available presets\").action(async () => {\n const { presetCategories } = await import(\"../presets\");\n\n logBox(\"Available Presets\", [\n \"\",\n ...Object.entries(presetCategories).flatMap(([category, presets]) => [\n colors.bold(category.toUpperCase()),\n ...Object.entries(presets).map(\n ([name, preset]) =>\n ` ${colors.primary(name.padEnd(25))} - ${colors.dim(preset.description)}`,\n ),\n \"\",\n ]),\n ]);\n});\n\n// Parse CLI arguments\ncli.parse();\n\n// Handle errors\nprocess.on(\"unhandledRejection\", error => {\n logger.error(\"Unhandled error:\", error as Error);\n process.exit(1);\n});\n"],"names":["preset","exports"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMO,MAAM,MAAA,GAAS,QAAQ,MAAA,CAAO;AAAA,EACjC,aAAA,EAAe;AAAA,IACX,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAEd,CAAC,CAAA;AAKM,MAAM,MAAA,GAAS;AAAA,EAClB,SAAS,EAAA,CAAG,IAAA;AAAA,EACZ,SAAS,EAAA,CAAG,KAAA;AAAA,EACZ,SAAS,EAAA,CAAG,MAAA;AAAA,EACZ,OAAO,EAAA,CAAG,GAAA;AAAA,EACV,MAAM,EAAA,CAAG,IAAA;AAAA,EACT,KAAK,EAAA,CAAG,GAAA;AAAA,EACR,MAAM,EAAA,CAAG,IAAA;AAAA,EACT,SAAS,EAAA,CAAG,OAAA;AAAA,EACZ,MAAM,EAAA,CAAG,MAAA;AAAA,EACT,SAAS,EAAA,CAAG;AAChB,CAAA;AAKO,SAAS,WAAW,OAAA,EAAuB;AAC9C,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA;AAC1C;AAKO,SAAS,QAAA,CAAS,SAAiB,KAAA,EAAqB;AAC3D,EAAA,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAO,CAAC,CAAA;AAClC,EAAA,IAAI,KAAA,EAAO;AACP,IAAA,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,OAAO,CAAC,CAAA;AACtC,IAAA,IAAI,MAAM,KAAA,EAAO;AACb,MAAA,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IACxC;AAAA,EACJ;AACJ;AAmCO,SAAS,WAAW,OAAA,EAAmC;AAC1D,EAAA,MAAA,CAAO,KAAK,CAAA,eAAA,EAAkB,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,CAAA;AAC3D;AAKO,SAAS,MAAA,CAAO,OAAe,OAAA,EAAyB;AAC3D,EAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,IACnB,KAAA,CAAM,MAAA;AAAA,IACN,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,MAAM;AAAA,GACtC;AACA,EAAA,MAAM,MAAA,GAAS,QAAA,CAAI,MAAA,CAAO,SAAA,GAAY,CAAC,CAAA;AAEvC,EAAA,OAAA,CAAQ,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAA,MAAA,EAAI,MAAM,QAAG,CAAC,CAAA;AACzC,EAAA,OAAA,CAAQ,GAAA;AAAA,IACJ,MAAA,CAAO,OAAA,CAAQ,CAAA,QAAA,EAAM,MAAA,CAAO,IAAA,CAAK,MAAM,MAAA,CAAO,SAAS,CAAC,CAAC,CAAA,QAAA,CAAK;AAAA,GAClE;AACA,EAAA,OAAA,CAAQ,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAA,MAAA,EAAI,MAAM,QAAG,CAAC,CAAA;AACzC,EAAA,OAAA,CAAQ,QAAQ,CAAA,IAAA,KAAQ;AACpB,IAAA,OAAA,CAAQ,GAAA,CAAI,OAAO,OAAA,CAAQ,CAAA,QAAA,EAAM,KAAK,MAAA,CAAO,SAAS,CAAC,CAAA,QAAA,CAAK,CAAC,CAAA;AAAA,EACjE,CAAC,CAAA;AACD,EAAA,OAAA,CAAQ,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAA,MAAA,EAAI,MAAM,QAAG,CAAC,CAAA;AAC7C;;AC5FA,MAAM,YAAA,GAAe;AAAA,EACjB,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACJ,CAAA;AAKA,eAAsB,aAAA,CAClB,GAAA,GAAc,OAAA,CAAQ,GAAA,EAAI,EACQ;AAElC,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,gBAAA,EAAkB,gBAAA,EAAkB,iBAAiB,CAAA,EAAG;AACxE,IAAA,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,EAAK,IAAI,CAAC,CAAA,EAAG;AAC7B,MAAA,OAAO,MAAA;AAAA,IACX;AAAA,EACJ;AAGA,EAAA,KAAA,MAAW,IAAA,IAAQ;AAAA,IACf,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACJ,EAAG;AACC,IAAA,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,EAAK,IAAI,CAAC,CAAA,EAAG;AAC7B,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,EAAK,IAAI,CAAA;AACjC,MAAA,IAAI;AACA,QAAA,MAAM,IAAA,GAAO,WAAW,GAAA,EAAK;AAAA,UACzB,cAAA,EAAgB;AAAA,SACnB,CAAA;AACD,QAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAG5C,QAAA,IACI,SAAA,IAAa,MAAA,IACb,QAAA,IAAY,MAAA,IACX,MAAM,OAAA,CAAQ,MAAM,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,IAAK,SAAA,IAAa,MAAA,CAAO,CAAC,CAAA,EAC9D;AACE,UAAA,OAAO,SAAA;AAAA,QACX;AAAA,MACJ,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACJ;AAAA,EACJ;AAGA,EAAA,IAAI;AACA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AACxC,IAAA,IAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AACrB,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,OAAA,EAAS,OAAO,CAAC,CAAA;AACvD,MAAA,IAAI,GAAA,CAAI,SAAS,KAAA,EAAO;AACpB,QAAA,IAAI,IAAI,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS,MAAM,GAAG,OAAO,MAAA;AAC/C,QAAA,IAAI,IAAI,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS,SAAS,GAAG,OAAO,SAAA;AAAA,MACtD;AAAA,IACJ;AAAA,EACJ,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,IAAA;AACX;AAKA,eAAsB,kBAAA,CAClB,GAAA,GAAc,OAAA,CAAQ,GAAA,IACtB,UAAA,EACsB;AAEtB,EAAA,IAAI,UAAA,EAAY;AACZ,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,EAAK,UAAU,CAAA;AACxC,IAAA,IAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACtB,MAAA,OAAO,QAAA;AAAA,IACX;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,CAAA,8BAAA,EAAiC,UAAU,CAAA,CAAE,CAAA;AACzD,IAAA,OAAO,IAAA;AAAA,EACX;AAGA,EAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC7B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,EAAK,IAAI,CAAA;AAC/B,IAAA,IAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACtB,MAAA,OAAO,QAAA;AAAA,IACX;AAAA,EACJ;AAGA,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AACxC,EAAA,IAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AACrB,IAAA,IAAI;AACA,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,OAAA,EAAS,OAAO,CAAC,CAAA;AACvD,MAAA,IAAI,IAAI,QAAA,EAAU;AACd,QAAA,OAAO,OAAA;AAAA,MACX;AAAA,IACJ,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACJ;AAEA,EAAA,OAAO,IAAA;AACX;AAKA,eAAsB,cAAA,CAClB,UAAA,EACA,GAAA,GAAc,OAAA,CAAQ,KAAI,EACT;AACjB,EAAA,IAAI;AAEA,IAAA,IAAI,UAAA,CAAW,QAAA,CAAS,cAAc,CAAA,EAAG;AACrC,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,UAAA,EAAY,OAAO,CAAC,CAAA;AAC1D,MAAA,OAAQ,IAAI,QAAA,IAAkB,IAAA;AAAA,IAClC;AAGA,IAAA,IAAI,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AAC9B,MAAA,OAAO,KAAK,KAAA,CAAM,MAAM,QAAA,CAAS,UAAA,EAAY,OAAO,CAAC,CAAA;AAAA,IACzD;AAGA,IAAA,MAAM,IAAA,GAAO,WAAW,GAAA,EAAK;AAAA,MACzB,cAAA,EAAgB;AAAA,KACnB,CAAA;AAED,IAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAE5C,IAAA,OAAO,MAAA;AAAA,EACX,SAAS,KAAA,EAAO;AACZ,IAAA,MAAA,CAAO,KAAA;AAAA,MACH,8BAA8B,UAAU,CAAA,CAAA;AAAA,MACxC;AAAA,KACJ;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AACJ;AAKA,eAAsB,WAAW,OAAA,EAU9B;AACC,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AAGvC,EAAA,IAAI,OAAA,GAAU,OAAA,CAAQ,OAAA,KAAY,MAAA,GAAS,OAAO,OAAA,CAAQ,OAAA;AAC1D,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,OAAA,GAAW,MAAM,aAAA,CAAc,GAAG,CAAA,IAAM,SAAA;AAAA,EAC5C;AAGA,EAAA,IAAI,eAAe,EAAC;AACpB,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAChB,IAAA,MAAM,MAAA,GAAS,SAAA,CAAU,OAAA,CAAQ,MAAM,CAAA;AACvC,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,YAAA,GACI,OAAA,KAAY,SAAS,MAAA,CAAO,IAAA,IAAQ,EAAC,GAAI,MAAA,CAAO,WAAW,EAAC;AAChE,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,IAC9C,CAAA,MAAO;AACH,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,kBAAA,EAAqB,OAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAAA,IACrD;AAAA,EACJ;AAGA,EAAA,MAAM,UAAA,GAAa,MAAM,kBAAA,CAAmB,GAAA,EAAK,QAAQ,UAAU,CAAA;AACnE,EAAA,IAAI,gBAAgB,EAAC;AACrB,EAAA,IAAI,UAAA,EAAY;AACZ,IAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,UAAA,EAAY,GAAG,CAAA;AACnD,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,aAAA,GAAgB,MAAA;AAChB,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,oBAAA,EAAuB,UAAU,CAAA,CAAE,CAAA;AAAA,IACnD;AAAA,EACJ;AAGA,EAAA,MAAM,MAAA,GAAS,IAAA;AAAA,IACX,OAAA,CAAQ,YAAY,EAAC;AAAA,IACrB,aAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAC;AAAA,GACL;AAEA,EAAA,OAAO;AAAA,IACH,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACJ;AACJ;AAKA,eAAsB,cAAA,CAClB,GAAA,GAAc,OAAA,CAAQ,GAAA,EAAI,EACa;AACvC,EAAA,IAAI;AACA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AACxC,IAAA,IAAI,CAAC,UAAA,CAAW,OAAO,CAAA,EAAG,OAAO,IAAA;AAEjC,IAAA,OAAO,KAAK,KAAA,CAAM,MAAM,QAAA,CAAS,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,EACtD,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,IAAA;AAAA,EACX;AACJ;AAKA,eAAsB,iBAAA,CAClB,OAAA,EACA,GAAA,GAAc,OAAA,CAAQ,KAAI,EACb;AACb,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,OAAO,kBAAkB,CAAA;AACrD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AAExC,EAAA,MAAM,GAAA,GAAO,MAAM,cAAA,CAAe,GAAG,KAAM,EAAC;AAC5C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,GAAG,CAAA;AAEjC,EAAA,MAAM,SAAA,CAAU,SAAS,CAAA,EAAG,IAAA,CAAK,UAAU,OAAA,EAAS,IAAA,EAAM,CAAC,CAAC;AAAA,CAAI,CAAA;AACpE;;ACnOA,eAAsB,YAAA,CAClB,SACA,OAAA,EACa;AACb,EAAA,IAAI;AACA,IAAA,MAAA,CAAO,MAAM,qBAAqB,CAAA;AAGlC,IAAA,MAAM,WAAiD,EAAC;AACxD,IAAA,IAAI,QAAQ,MAAA,EAAQ;AAEhB,MAAA,QAAA,CAAS,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAAA,IAC9C;AACA,IAAA,IAAI,OAAA,CAAQ,WAAW,KAAA,CAAA,EAAW;AAE9B,MAAA,QAAA,CAAS,SAAS,OAAA,CAAQ,MAAA;AAAA,IAC9B;AACA,IAAA,IAAI,OAAA,CAAQ,cAAc,KAAA,CAAA,EAAW;AACjC,MAAA,QAAA,CAAS,YAAY,OAAA,CAAQ,SAAA;AAAA,IACjC;AACA,IAAA,IAAI,OAAA,CAAQ,QAAQ,KAAA,CAAA,EAAW;AAE3B,MAAC,QAAA,CAAkC,MAAM,OAAA,CAAQ,GAAA;AACjD,MAAC,QAAA,CAAoC,cAAc,OAAA,CAAQ,GAAA;AAAA,IAC/D;AACA,IAAA,IAAI,OAAA,CAAQ,UAAU,KAAA,CAAA,EAAW;AAC7B,MAAA,QAAA,CAAS,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC7B;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpB,MAAC,SAAkC,KAAA,GAAQ,OAAA;AAC3C,MAAC,SAAoC,OAAA,GAAU,OAAA;AAAA,IACnD;AAGA,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAW,GAAI,MAAM,UAAA,CAAW;AAAA,MACrD,GAAI,OAAA,CAAQ,MAAA,IAAU,EAAE,UAAA,EAAY,QAAQ,MAAA,EAAO;AAAA,MACnD,GAAI,OAAA,CAAQ,MAAA,IAAU,EAAE,MAAA,EAAQ,QAAQ,MAAA,EAAO;AAAA,MAC/C,OAAA,EAAS,QAAQ,OAAA,IAAW,MAAA;AAAA,MAC5B;AAAA,KACH,CAAA;AAED,IAAA,UAAA,CAAW,OAAO,CAAA;AAGlB,IAAA,MAAM,cAAA,GAAiB,IAAA;AAAA,MACnB,QAAQ,GAAA,EAAI;AAAA,MACZ,CAAA,gBAAA,EAAmB,OAAA,KAAY,MAAA,GAAS,MAAA,GAAS,OAAO,CAAA,UAAA;AAAA,KAC5D;AAEA,IAAA,IAAI;AAEA,MAAA,MAAM,cACF,OAAA,KAAY,MAAA,GACN,eAAe,MAAqB,CAAA,GACpC,kBAAkB,MAAuB,CAAA;AAGnD,MAAA,MAAM,gBAAgB,CAAA,eAAA,EAAkB,IAAA,CAAK,UAAU,WAAA,EAAa,IAAA,EAAM,CAAC,CAAC,CAAA,CAAA;AAC5E,MAAA,aAAA,CAAc,gBAAgB,aAAa,CAAA;AAG3C,MAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,QAAA,MAAM,KAAA;AAAA,UACF,MAAA;AAAA,UACA;AAAA,YACI,UAAA;AAAA,YACA,cAAA;AAAA,YACA,GAAI,OAAA,CAAQ,KAAA,GAAQ,CAAC,SAAS,IAAI;AAAC,WACvC;AAAA,UACA;AAAA,YACI,KAAA,EAAO,SAAA;AAAA,YACP,GAAA,EAAK,QAAQ,GAAA;AAAI;AACrB,SACJ;AAAA,MACJ,CAAA,MAAO;AACH,QAAA,MAAM,KAAA;AAAA,UACF,SAAA;AAAA,UACA;AAAA,YACI,GAAI,OAAA,CAAQ,KAAA,GAAQ,CAAC,SAAS,IAAI,EAAC;AAAA,YACnC,GAAI,UAAA,GAAa,EAAC,GAAI,CAAC,YAAY,cAAc;AAAA,WACrD;AAAA,UACA;AAAA,YACI,KAAA,EAAO,SAAA;AAAA,YACP,GAAA,EAAK,QAAQ,GAAA;AAAI;AACrB,SACJ;AAAA,MACJ;AAEA,MAAA,UAAA,CAAW,+BAA+B,CAAA;AAAA,IAC9C,CAAA,SAAE;AAEE,MAAA,IAAI,UAAA,CAAW,cAAc,CAAA,EAAG;AAC5B,QAAA,IAAI;AACA,UAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,SAAS,CAAA;AAC7C,UAAA,UAAA,CAAW,cAAc,CAAA;AAAA,QAC7B,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,SAAS,KAAA,EAAO;AACZ,IAAA,QAAA,CAAS,gBAAgB,KAAc,CAAA;AACvC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAClB;AACJ;;ACrHA,eAAsB,YAAY,OAAA,EAA4C;AAC1E,EAAA,IAAI;AACA,IAAA,MAAA,CAAO,MAAM,oCAAoC,CAAA;AAGjD,IAAA,MAAM,GAAA,GAAM,MAAM,cAAA,EAAe;AACjC,IAAA,MAAM,WAAA,GAAe,KAAK,IAAA,IAA+B,SAAA;AACzD,IAAA,MAAM,cAAA,GAAkB,KAAK,OAAA,IAAkC,OAAA;AAG/D,IAAA,MAAM,aAAa,MAAM,kBAAA;AAAA,MACrB,QAAQ,GAAA,EAAI;AAAA,MACZ,OAAA,CAAQ;AAAA,KACZ;AAGA,IAAA,IAAI,OAAA,GAAuC,MAAA;AAC3C,IAAA,IAAI,SAAsC,EAAC;AAE3C,IAAA,IAAI,UAAA,EAAY;AACZ,MAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW;AAAA,QAC5B,GAAI,OAAA,CAAQ,MAAA,IAAU,EAAE,UAAA,EAAY,QAAQ,MAAA,EAAO;AAAA,QACnD,OAAA,EAAS;AAAA,OACZ,CAAA;AACD,MAAA,OAAA,GAAU,MAAA,CAAO,OAAA;AACjB,MAAA,MAAA,GAAS,MAAA,CAAO,MAAA;AAAA,IACpB;AAGA,IAAA,MAAA,CAAO,qBAAA,EAAuB;AAAA,MAC1B,CAAA,SAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAC,CAAA,CAAA;AAAA,MACvC,CAAA,SAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAC,CAAA,CAAA;AAAA,MAC1C,CAAA,SAAA,EAAY,aAAa,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,WAAW,CAAC,CAAA,CAAA;AAAA,MAC1E,CAAA,SAAA,EAAY,OAAA,KAAY,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,gBAAgB,CAAC,CAAA;AAAA,KAC1F,CAAA;AAGD,IAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,MAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAK,MAAA,CAAO,IAAA,CAAK,sBAAsB,CAAC,CAAA,CAAE,CAAA;AAEtD,MAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,QAAA,MAAM,UAAA,GAAa,MAAA;AACnB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,CAAA,aAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,WAAW,KAAA,IAAS,CAAC,cAAc,CAAC,CAAC,CAAA,CAAE,CAAA;AACrG,QAAA,OAAA,CAAQ,IAAI,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,CAAA,aAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,UAAU,CAAC,KAAA,EAAO,KAAK,CAAC,CAAC,CAAA,CAAE,CAAA;AACpG,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,OAAO,GAAA,CAAI,cAAI,CAAC,CAAA,aAAA,EAAgB,UAAA,CAAW,UAAU,QAAQ,CAAA;AAAA,SACpE;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,OAAO,GAAA,CAAI,cAAI,CAAC,CAAA,aAAA,EAAgB,UAAA,CAAW,YAAY,MAAM,CAAA;AAAA,SACpE;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,gBAAgB,UAAA,CAAW,GAAA,KAAQ,KAAA,GAAQ,MAAA,CAAO,QAAQ,QAAG,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SACvG;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,gBACf,UAAA,CAAW,SAAA,KAAc,KAAA,GAAQ,MAAA,CAAO,QAAQ,QAAG,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC9E;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,CAAA,aAAA,EAAgB,UAAA,CAAW,MAAA,GAAS,MAAA,CAAO,QAAQ,QAAG,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAChG;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,gBACf,UAAA,CAAW,KAAA,KAAU,KAAA,GAAQ,MAAA,CAAO,QAAQ,QAAG,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC1E;AAAA,MACJ,CAAA,MAAO;AACH,QAAA,MAAM,aAAA,GAAgB,MAAA;AACtB,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,CAAA,eAAA,EACf,IAAA,CAAK,SAAA,CAAU,aAAA,CAAc,OAAA,IAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AAAA,SAC9D;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,OAAO,GAAA,CAAI,cAAI,CAAC,CAAA,eAAA,EAAkB,aAAA,CAAc,UAAU,MAAM,CAAA;AAAA,SACvE;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,kBACf,aAAA,CAAc,WAAA,KAAgB,KAAA,GACxB,MAAA,CAAO,QAAQ,QAAG,CAAA,GAClB,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC7B;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,kBACf,aAAA,CAAc,MAAA,EAAQ,OAAA,GAChB,MAAA,CAAO,QAAQ,QAAG,CAAA,GAClB,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC7B;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,CAAA,eAAA,EACf,aAAA,CAAc,SAAA,GAAY,MAAA,CAAO,QAAQ,QAAG,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SACvE;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,kBACf,aAAA,CAAc,QAAA,KAAa,KAAA,GACrB,MAAA,CAAO,QAAQ,QAAG,CAAA,GAClB,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC7B;AACA,QAAA,OAAA,CAAQ,GAAA;AAAA,UACJ,GAAG,MAAA,CAAO,GAAA,CAAI,cAAI,CAAC,kBACf,aAAA,CAAc,KAAA,KAAU,KAAA,GAClB,MAAA,CAAO,QAAQ,QAAG,CAAA,GAClB,MAAA,CAAO,GAAA,CAAI,QAAG,CAAC,CAAA;AAAA,SAC7B;AAAA,MACJ;AAAA,IACJ;AAGA,IAAA,IAAI,KAAK,OAAA,EAAS;AACd,MAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAK,MAAA,CAAO,IAAA,CAAK,kBAAkB,CAAC,CAAA,CAAE,CAAA;AAClD,MAAA,OAAA,CAAQ,IAAI,IAAA,CAAK,SAAA,CAAU,IAAI,OAAA,EAAS,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,IACpD;AAGA,IAAA,IAAI,KAAK,OAAA,EAAS;AACd,MAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,CAAE,MAAA;AAAA,QAC7C,CAAC,CAAC,GAAG,CAAA,KAAM,GAAA,CAAI,SAAS,OAAO,CAAA,IAAK,GAAA,CAAI,QAAA,CAAS,OAAO;AAAA,OAC5D;AAEA,MAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AACzB,QAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAK,MAAA,CAAO,IAAA,CAAK,gBAAgB,CAAC,CAAA,CAAE,CAAA;AAChD,QAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KAAM;AACrC,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,GAAA,CAAI,MAAgB,CAAC,CAAA,CAAE,CAAA;AAAA,QACtF,CAAC,CAAA;AAAA,MACL;AAAA,IACJ;AAGA,IAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,MAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,qCAAgC,CAAC,CAAA,CAAE,CAAA;AACnE,MAAA,OAAA,CAAQ,GAAA;AAAA,QACJ,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,GACpB,MAAA,CAAO,QAAQ,gBAAgB,CAAA,GAC/B,MAAA,CAAO,IAAA,CAAK,yBAAyB;AAAA,OACzC;AAAA,IACJ;AAAA,EACJ,SAAS,KAAA,EAAO;AACZ,IAAA,MAAA,CAAO,KAAA,CAAM,gCAAgC,KAAc,CAAA;AAC3D,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAClB;AACJ;;AChJO,SAAS,kBAAA,CAAmB,OAAA,GAAgC,EAAC,EAAW;AAC3E,EAAA,MAAM,MAAA,GAAS;AAAA,IACX,KAAA,EAAO,OAAA,CAAQ,KAAA,IAAS,CAAC,cAAc,CAAA;AAAA,IACvC,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,CAAC,OAAO,KAAK,CAAA;AAAA,IACvC,GAAA,EAAK,QAAQ,GAAA,IAAO,IAAA;AAAA,IACpB,SAAA,EAAW,QAAQ,SAAA,IAAa,IAAA;AAAA,IAChC,KAAA,EAAO,QAAQ,KAAA,IAAS,IAAA;AAAA,IACxB,GAAG;AAAA,GACP;AAEA,EAAA,OAAO,CAAA;;AAAA,8BAAA,EAEqB,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,CAAA;AAE/D;AAKO,SAAS,qBAAA,CACZ,OAAA,GAAkC,EAAC,EAC7B;AACN,EAAA,MAAM,MAAA,GAAS;AAAA,IACX,OAAA,EAAS,OAAA,CAAQ,OAAA,IAAW,CAAC,WAAW,CAAA;AAAA,IACxC,WAAA,EAAa,QAAQ,WAAA,IAAe,IAAA;AAAA,IACpC,MAAA,EAAQ;AAAA,MACJ,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,OAAA,IAAW,KAAA;AAAA,MACpC,GAAG,OAAA,CAAQ;AAAA,KACf;AAAA,IACA,GAAG;AAAA,GACP;AAEA,EAAA,OAAO,CAAA;;AAAA,iCAAA,EAEwB,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,CAAA;AAElE;AAKO,SAAS,2BACZ,OAAA,EACsB;AACtB,EAAA,MAAM,YAAA,GAAe,OAAA,KAAY,MAAA,GAAS,MAAA,GAAS,SAAA;AACnD,EAAA,MAAM,YAAA,GACF,OAAA,KAAY,MAAA,GAAS,cAAA,GAAiB,iBAAA;AAE1C,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,YAAA;AAAA,IACT,aAAA,EAAe,YAAA;AAAA,IACf,gBAAA,EAAkB;AAAA,GACtB;AACJ;AAKO,SAAS,0BAAA,CACZ,UACA,OAAA,EAC+C;AAC/C,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA;AAErC,EAAA,IAAI,UAAU,MAAA,EAAQ;AAClB,IAAA,OAAO;AAAA,MACH,GAAA,EAAK;AAAA,QACD,KAAA,EAAO,mBAAA;AAAA,QACP,MAAA,EAAQ,kBAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACb,KACJ;AAAA,EACJ,WAAW,MAAA,EAAQ;AACf,IAAA,OAAO;AAAA,MACH,GAAA,EAAK;AAAA,QACD,KAAA,EAAO,mBAAA;AAAA,QACP,MAAA,EAAQ;AAAA;AACZ,KACJ;AAAA,EACJ,CAAA,MAAO;AACH,IAAA,OAAO;AAAA,MACH,GAAA,EAAK;AAAA,QACD,KAAA,EAAO,mBAAA;AAAA,QACP,OAAA,EAAS;AAAA;AACb,KACJ;AAAA,EACJ;AACJ;;ACpEA,eAAsB,YAAY,OAAA,EAA4C;AAC1E,EAAA,IAAI;AACA,IAAA,CAAA,CAAE,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,mCAAmC,CAAC,CAAA;AAGxD,IAAA,MAAM,gBAAA,GAAmB,WAAW,gBAAgB,CAAA;AACpD,IAAA,MAAM,iBAAA,GAAoB,WAAW,iBAAiB,CAAA;AAEtD,IAAA,IAAA,CAAK,gBAAA,IAAoB,iBAAA,KAAsB,CAAC,OAAA,CAAQ,KAAA,EAAO;AAC3D,MAAA,MAAM,eAAA,GAAkB,MAAM,CAAA,CAAE,OAAA,CAAQ;AAAA,QACpC,OAAA,EAAS,wCAAA;AAAA,QACT,YAAA,EAAc;AAAA,OACjB,CAAA;AAED,MAAA,IAAI,CAAA,CAAE,QAAA,CAAS,eAAe,CAAA,IAAK,CAAC,eAAA,EAAiB;AACjD,QAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAClB;AAAA,IACJ;AAGA,IAAA,MAAM,OAAA,GACF,OAAA,CAAQ,OAAA,IACP,MAAM,EAAE,MAAA,CAAO;AAAA,MACZ,OAAA,EAAS,8BAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACL;AAAA,UACI,KAAA,EAAO,SAAA;AAAA,UACP,KAAA,EAAO,SAAA;AAAA,UACP,IAAA,EAAM;AAAA,SACV;AAAA,QACA;AAAA,UACI,KAAA,EAAO,MAAA;AAAA,UACP,KAAA,EAAO,MAAA;AAAA,UACP,IAAA,EAAM;AAAA;AACV;AACJ,KACH,CAAA;AAEL,IAAA,IAAI,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,EAAG;AACrB,MAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAClB;AAGA,IAAA,MAAM,SAAA,GAAY,MAAM,CAAA,CAAE,MAAA,CAAO;AAAA,MAC7B,OAAA,EAAS,uCAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACL,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,cAAA,EAAe;AAAA,QACzC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,sBAAA;AAAuB;AACrD,KACH,CAAA;AAED,IAAA,IAAI,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAClB;AAEA,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,cAAoD,EAAC;AAEzD,IAAA,IAAI,cAAc,QAAA,EAAU;AAExB,MAAA,MAAM,gBAAA,GAAmB,WAAA,EAAY,CAAE,MAAA,CAAO,CAAA,IAAA,KAAQ;AAClD,QAAA,MAAMA,OAAAA,GAAS,UAAU,IAAI,CAAA;AAC7B,QAAA,OACIA,OAAAA,KACCA,OAAAA,CAAO,OAAA,KAAY,OAAA,IAAWA,QAAO,OAAA,KAAY,MAAA,CAAA;AAAA,MAE1D,CAAC,CAAA;AAED,MAAA,MAAM,YAAA,GAAe,MAAM,CAAA,CAAE,MAAA,CAAO;AAAA,QAChC,OAAA,EAAS,kBAAA;AAAA,QACT,OAAA,EAAS,gBAAA,CAAiB,GAAA,CAAI,CAAA,IAAA,KAAQ;AAClC,UAAA,MAAMA,OAAAA,GAAS,UAAU,IAAI,CAAA;AAC7B,UAAA,OAAO;AAAA,YACH,KAAA,EAAO,IAAA;AAAA,YACP,KAAA,EAAO,IAAA;AAAA,YACP,MAAMA,OAAAA,CAAO;AAAA,WACjB;AAAA,QACJ,CAAC;AAAA,OACJ,CAAA;AAED,MAAA,cAAA,GAAiB,OAAO,YAAY,CAAA;AAEpC,MAAA,IAAI,CAAA,CAAE,QAAA,CAAS,cAAc,CAAA,EAAG;AAC5B,QAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAClB;AAEA,MAAA,MAAM,MAAA,GAAS,UAAU,cAAwB,CAAA;AACjD,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,WAAA,GAAe,OAAA,KAAY,SAAS,MAAA,CAAO,IAAA,IAAQ,EAAC,GAAI,MAAA,CAAO,WAAW,EAAC;AAAA,MAC/E;AAAA,IACJ,CAAA,MAAO;AAEH,MAAA,MAAM,OAAA,GAAU,MAAM,CAAA,CAAE,WAAA,CAAY;AAAA,QAChC,OAAA,EAAS,iBAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACL,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,cAAA,EAAe;AAAA,UACtC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,0BAAA,EAA2B;AAAA,UAClD,GAAI,OAAA,KAAY,MAAA,GACV,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,uBAAA,EAAyB,CAAA,GAClD;AAAC,SACX;AAAA,QACA,aAAA,EAAe,CAAC,KAAK,CAAA;AAAA,QACrB,QAAA,EAAU;AAAA,OACb,CAAA;AAED,MAAA,IAAI,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,EAAG;AACrB,QAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAClB;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,WAAA,CAAY;AAAA,QACjC,OAAA,EAAS,sBAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACL,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,qBAAA,EAAsB;AAAA,UACpD,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,eAAA,EAAgB;AAAA,UAC1C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,yBAAA;AAA0B,SAC9D;AAAA,QACA,aAAA,EAAe,CAAC,YAAA,EAAc,cAAc;AAAA,OAC/C,CAAA;AAED,MAAA,IAAI,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA,EAAG;AACtB,QAAA,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC9B,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAClB;AAGA,MAAA,MAAM,YAAA,GAAe,OAAA;AACrB,MAAA,WAAA,GAAc;AAAA,QACV,MAAA,EAAQ,YAAA;AAAA,QACR,SAAA,EAAY,QAAA,CAAsB,QAAA,CAAS,YAAY,CAAA;AAAA,QACvD,MAAA,EAAS,QAAA,CAAsB,QAAA,CAAS,QAAQ;AAAA,OACpD;AAEA,MAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,QAAA,WAAA,CAAY,GAAA,GAAO,QAAA,CAAsB,QAAA,CAAS,cAAc,CAAA;AAAA,MACpE,CAAA,MAAO;AACH,QAAA,WAAA,CAAY,cAAe,QAAA,CAAsB,QAAA;AAAA,UAC7C;AAAA,SACJ;AACA,QAAA,WAAA,CAAY,MAAA,GAAS;AAAA,UACjB,OAAA,EAAU,OAAA,CAAqB,QAAA,CAAS,KAAK;AAAA,SACjD;AAAA,MACJ;AAAA,IACJ;AAGA,IAAA,MAAM,OAAA,GAAU,EAAE,OAAA,EAAQ;AAC1B,IAAA,OAAA,CAAQ,MAAM,iCAAiC,CAAA;AAE/C,IAAA,IAAI;AAEA,MAAA,MAAM,cAAA,GACF,OAAA,KAAY,MAAA,GAAS,gBAAA,GAAmB,iBAAA;AAC5C,MAAA,MAAM,gBACF,OAAA,KAAY,MAAA,GACN,mBAAmB,WAAmC,CAAA,GACtD,sBAAsB,WAAqC,CAAA;AAErE,MAAA,MAAM,UAAU,IAAA,CAAK,OAAA,CAAQ,KAAI,EAAG,cAAc,GAAG,aAAa,CAAA;AAGlE,MAAA,MAAM,GAAA,GAAM,MAAM,cAAA,EAAe;AACjC,MAAA,IAAI,GAAA,EAAK;AACL,QAAA,MAAM,OAAA,GAAU,2BAA2B,OAAO,CAAA;AAClD,QAAA,MAAM,cAAc,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,MAAM,IAC9C,WAAA,CAAY,MAAA,GACZ,WAAA,CAAY,MAAA,GACR,CAAC,WAAA,CAAY,MAAM,CAAA,GACnB,CAAC,OAAO,KAAK,CAAA;AACvB,QAAA,MAAMC,SAAA,GAAU,0BAAA;AAAA,UACZ,OAAA;AAAA,UACA;AAAA,SACJ;AAEA,QAAA,MAAM,UAAA,GAAa,OAAO,GAAA,CAAI,OAAA,KAAY,QAAA,IAAY,IAAI,OAAA,KAAY,IAAA,GAC/D,GAAA,CAAI,OAAA,GACL,EAAC;AAEP,QAAA,MAAM,iBAAA,CAAkB;AAAA,UACpB,OAAA,EAAS,EAAE,GAAG,UAAA,EAAY,GAAG,OAAA,EAAQ;AAAA,mBACrCA,SAAA;AAAA,UACA,IAAA,EACI,YAAY,QAAA,CAAS,KAAK,KAC1B,WAAA,CAAY,MAAA,EAAQ,UACd,kBAAA,GACA,KAAA,CAAA;AAAA,UACV,MAAA,EAAQ,kBAAA;AAAA,UACR,KAAA,EAAO,mBAAA;AAAA,UACP,KAAA,EAAO,CAAC,MAAM;AAAA,SACjB,CAAA;AAAA,MACL;AAEA,MAAA,OAAA,CAAQ,KAAK,qCAAqC,CAAA;AAElD,MAAA,CAAA,CAAE,KAAA;AAAA,QACE,OAAO,OAAA,CAAQ;AAAA;AAAA,KAAA,EAExB,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAC,CAAA;AAAA,KAAA,EAC9B,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAC,CAAA;AAAA,UAAA,EACvB,MAAA,CAAO,IAAA,CAAK,cAAc,CAAC,CAAA;;AAAA,EAErC,iBAAiB,CAAA,cAAA,EAAiB,MAAA,CAAO,QAAQ,cAAc,CAAC,KAAK,EAAE;;AAAA;AAAA,YAAA,CAG5D;AAAA,OACD;AAAA,IACJ,SAAS,KAAA,EAAO;AACZ,MAAA,OAAA,CAAQ,KAAK,gCAAgC,CAAA;AAC7C,MAAA,MAAM,KAAA;AAAA,IACV;AAAA,EACJ,SAAS,KAAA,EAAO;AACZ,IAAA,QAAA,CAAS,yBAAyB,KAAc,CAAA;AAChD,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAClB;AACJ;;AC/OA,MAAM,mBAAmB,CAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,EAAO,MAAM,CAAC,CAAA;AAKtD,MAAM,qBAAqB,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAS,CAAC,CAAA;AAKhE,MAAM,aAAA,GAAgB,EAAE,KAAA,CAAM;AAAA,EAC1B,EAAE,OAAA,EAAQ;AAAA,EACV,EAAE,MAAA,EAAO;AAAA,EACT,EAAE,MAAA,CAAO;AAAA,IACL,KAAA,EAAO,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,IACxB,OAAA,EAAS,CAAA,CACJ,KAAA,CAAM,CAAC,CAAA,CAAE,SAAQ,EAAG,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAC,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,UAAA,CAAW,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CACzE,QAAA,EAAS;AAAA,IACd,IAAA,EAAM,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAC3B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,eAAA,EAAiB,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA;AAAS,GACrC;AACL,CAAC,CAAA;AAKD,MAAM,eAAA,GAAkB,EAAE,KAAA,CAAM;AAAA,EAC5B,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA;AAAA,EAClB,EAAE,MAAA,CAAO,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,QAAQ;AACnC,CAAC,CAAA;AAKM,MAAM,gBAAA,GAAmB,EAAE,MAAA,CAAO;AAAA,EACrC,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,KAAA,EAAO,gBAAgB,QAAA,EAAS;AAAA,EAChC,WAAA,EAAa,gBAAgB,QAAA,EAAS;AAAA,EACtC,MAAA,EAAQ,CAAA,CAAE,KAAA,CAAM,CAAC,gBAAA,EAAkB,CAAA,CAAE,KAAA,CAAM,gBAAgB,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACxE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,MAAA,EAAQ,CAAA,CAAE,KAAA,CAAM,CAAC,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC5D,QAAA,EAAU,mBAAmB,QAAA,EAAS;AAAA,EACtC,GAAA,EAAK,cAAc,QAAA,EAAS;AAAA,EAC5B,eAAA,EAAiB,EACZ,KAAA,CAAM;AAAA,IACH,EAAE,OAAA,EAAQ;AAAA,IACV,EAAE,MAAA,EAAO;AAAA,IACT,EAAE,MAAA,CAAO;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,MACxB,eAAA,EAAiB,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA;AAAS,KACrC;AAAA,GACJ,EACA,QAAA,EAAS;AAAA,EACd,SAAA,EAAW,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAChE,MAAA,EAAQ,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC7D,MAAA,EAAQ,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC7B,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,CAAC,EAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC5D,SAAA,EAAW,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,EAC5B,UAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EACxE,YAAY,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC1E,qBAAA,EAAuB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5C,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,KAAA,EAAO,CAAA,CACF,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAC,CAAA,CAC5E,QAAA,EAAS;AAAA,EACd,WAAA,EAAa,CAAA,CAAE,KAAA,CAAM,CAAC,EAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,GAAG,CAAA,CAAE,MAAA,EAAQ,CAAC,EAAE,QAAA,EAAS;AAAA,EACjE,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAO,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5B,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,kBAAA,EAAoB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACpC,CAAC,CAAA;AAKD,MAAM,oBAAA,GAAuB,EAAE,IAAA,CAAK,CAAC,UAAU,QAAA,EAAU,MAAA,EAAQ,SAAS,CAAC,CAAA;AAK3E,MAAM,wBAAA,GAA2B,EAAE,KAAA,CAAM;AAAA,EACrC,EAAE,OAAA,EAAQ;AAAA,EACV,CAAA,CAAE,QAAQ,YAAY,CAAA;AAAA,EACtB,CAAA,CAAE,QAAQ,QAAQ;AACtB,CAAC,CAAA;AAKD,MAAM,kBAAA,GAAqB,EAAE,KAAA,CAAM;AAAA,EAC/B,EAAE,MAAA,EAAO;AAAA,EACT,EAAE,MAAA,CAAO;AAAA,IACL,OAAA,EAAS,qBAAqB,QAAA,EAAS;AAAA,IACvC,KAAA,EAAO,EAAE,MAAA,EAAO;AAAA,IAChB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC1B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,WAAA,EAAa,yBAAyB,QAAA,EAAS;AAAA,IAC/C,MAAA,EAAQ,EAAE,IAAA,CAAK,CAAC,OAAO,KAAK,CAAC,EAAE,QAAA,EAAS;AAAA,IACxC,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC5B;AACL,CAAC,CAAA;AAKM,MAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,OAAA,EAAS,CAAA,CAAE,KAAA,CAAM,kBAAkB,EAAE,QAAA,EAAS;AAAA,EAC9C,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,KAAA,EAAO,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5B,WAAA,EAAa,yBAAyB,QAAA,EAAS;AAAA,EAC/C,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,IAAA,EAAM,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC3B,KAAA,EAAO,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5B,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,WAAW,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EACzE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS;AAAA,EACjD,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS;AAAA,EACnD,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,MAAA,EAAQ,EACH,MAAA,CAAO;AAAA,IACJ,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAC9B,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAChC,sBAAA,EAAwB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAC7C,kBAAA,EAAoB,CAAA,CACf,KAAA,CAAM,CAAC,CAAA,CAAE,SAAQ,EAAG,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAC,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,UAAA,CAAW,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CACzE,QAAA;AAAS,GACjB,EACA,QAAA;AACT,CAAC,CAAA;AAOM,SAAS,mBAAmB,MAAA,EAAiB;AAChD,EAAA,OAAO,gBAAA,CAAiB,UAAU,MAAM,CAAA;AAC5C;AAOO,SAAS,sBAAsB,MAAA,EAAiB;AACnD,EAAA,OAAO,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAC/C;AAQO,SAAS,cAAA,CAAe,QAAiB,OAAA,EAA6B;AACzE,EAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,IAAA,OAAO,mBAAmB,MAAM,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,sBAAsB,MAAM,CAAA;AACvC;;AC1JA,eAAsB,gBAClB,OAAA,EACa;AACb,EAAA,IAAI;AACA,IAAA,MAAA,CAAO,MAAM,6BAA6B,CAAA;AAG1C,IAAA,MAAM,aAAa,MAAM,kBAAA;AAAA,MACrB,QAAQ,GAAA,EAAI;AAAA,MACZ,OAAA,CAAQ;AAAA,KACZ;AAEA,IAAA,IAAI,CAAC,UAAA,EAAY;AACb,MAAA,QAAA,CAAS,6BAA6B,CAAA;AACtC,MAAA,MAAA,CAAO,KAAK,qDAAqD,CAAA;AACjE,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAClB;AAEA,IAAA,MAAA,CAAO,KAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,CAAA;AAGtD,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,MAAM,UAAA,CAAW;AAAA,MACzC,GAAI,OAAA,CAAQ,MAAA,IAAU,EAAE,UAAA,EAAY,QAAQ,MAAA,EAAO;AAAA,MACnD,OAAA,EAAS,QAAQ,OAAA,IAAW;AAAA,KAC/B,CAAA;AAED,IAAA,MAAA,CAAO,KAAK,CAAA,kBAAA,EAAqB,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,CAAA;AAG1D,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,MAAA,EAAQ,OAAO,CAAA;AAE7C,IAAA,IAAI,OAAO,OAAA,EAAS;AAChB,MAAA,UAAA,CAAW,gCAA2B,CAAA;AAGtC,MAAA,MAAA,CAAO,KAAK,0BAA0B,CAAA;AACtC,MAAA,IAAI,YAAY,MAAA,EAAQ;AACpB,QAAA,MAAM,UAAA,GAAa,MAAA;AACnB,QAAA,MAAA,CAAO,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA,CAAE,CAAA;AAC9E,QAAA,MAAA,CAAO,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,MAAA,IAAU,CAAC,KAAA,EAAO,KAAK,CAAC,CAAC,CAAA,CAAE,CAAA;AAC9E,QAAA,MAAA,CAAO,KAAK,CAAA,OAAA,EAAU,UAAA,CAAW,QAAQ,KAAA,GAAQ,SAAA,GAAY,UAAU,CAAA,CAAE,CAAA;AACzE,QAAA,MAAA,CAAO,IAAA;AAAA,UACH,CAAA,aAAA,EAAgB,UAAA,CAAW,SAAA,KAAc,KAAA,GAAQ,YAAY,UAAU,CAAA;AAAA,SAC3E;AAAA,MACJ,CAAA,MAAO;AACH,QAAA,MAAM,aAAA,GAAgB,MAAA;AACtB,QAAA,MAAA,CAAO,IAAA;AAAA,UACH,CAAA,WAAA,EAAc,KAAK,SAAA,CAAU,aAAA,CAAc,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AAAA,SACxE;AACA,QAAA,MAAA,CAAO,IAAA;AAAA,UACH,CAAA,eAAA,EAAkB,aAAA,CAAc,WAAA,KAAgB,KAAA,GAAQ,YAAY,UAAU,CAAA;AAAA,SAClF;AACA,QAAA,MAAA,CAAO,IAAA;AAAA,UACH,CAAA,OAAA,EAAU,aAAA,CAAc,MAAA,EAAQ,OAAA,GAAU,YAAY,UAAU,CAAA;AAAA,SACpE;AAAA,MACJ;AAAA,IACJ,CAAA,MAAO;AACH,MAAA,QAAA,CAAS,wCAAmC,CAAA;AAG5C,MAAA,IAAI,OAAO,KAAA,EAAO;AACd,QAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AACnC,QAAA,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,GAAA,KAAO;AAC/B,UAAA,MAAA,CAAO,MAAM,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,QAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,KAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAA,CAAI,OAAO,CAAA,CAAE,CAAA;AAAA,QACvF,CAAC,CAAA;AAAA,MACL;AAEA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAClB;AAAA,EACJ,SAAS,KAAA,EAAO;AACZ,IAAA,QAAA,CAAS,qBAAqB,KAAc,CAAA;AAC5C,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAClB;AACJ;;AC5EA,eAAsB,aAAa,OAAA,EAA6C;AAC5E,EAAA,MAAA,CAAO,KAAK,wBAAwB,CAAA;AAGpC,EAAA,MAAM,YAAA,CAAa,EAAC,EAAG;AAAA,IACnB,GAAG,OAAA;AAAA,IACH,KAAA,EAAO;AAAA,GACV,CAAA;AACL;;ACNA,MAAM,GAAA,GAAM,IAAI,WAAW,CAAA;AAG3B,GAAA,CAAI,OAAA,CAAQ,OAAO,CAAA,CAAE,IAAA,EAAK;AAG1B,GAAA,CACK,QAAQ,cAAA,EAAgB,oBAAoB,EAC5C,MAAA,CAAO,iBAAA,EAAmB,qBAAqB,CAAA,CAC/C,MAAA,CAAO,iBAAA,EAAmB,4BAA4B,EACtD,MAAA,CAAO,qBAAA,EAAuB,kCAAkC,CAAA,CAChE,MAAA,CAAO,sBAAsB,kCAAkC,CAAA,CAC/D,MAAA,CAAO,UAAA,EAAY,eAAe,CAAA,CAClC,MAAA,CAAO,WAAW,YAAY,CAAA,CAC9B,OAAO,aAAA,EAAe,qBAAqB,EAC3C,MAAA,CAAO,OAAA,EAAS,kCAAkC,CAAA,CAClD,MAAA,CAAO,WAAW,qCAAqC,CAAA,CACvD,OAAO,YAAY,CAAA;AAGxB,GAAA,CACK,QAAQ,MAAA,EAAQ,gCAAgC,CAAA,CAChD,MAAA,CAAO,uBAAuB,kCAAkC,CAAA,CAChE,MAAA,CAAO,iBAAA,EAAmB,4BAA4B,CAAA,CACtD,MAAA,CAAO,WAAW,2BAA2B,CAAA,CAC7C,OAAO,WAAW,CAAA;AAGvB,GAAA,CACK,OAAA,CAAQ,UAAA,EAAY,8BAA8B,CAAA,CAClD,MAAA,CAAO,iBAAA,EAAmB,qBAAqB,CAAA,CAC/C,MAAA,CAAO,qBAAA,EAAuB,kCAAkC,CAAA,CAChE,OAAO,eAAe,CAAA;AAG3B,GAAA,CACK,OAAA,CAAQ,QAAQ,+CAA+C,CAAA,CAC/D,OAAO,iBAAA,EAAmB,qBAAqB,CAAA,CAC/C,MAAA,CAAO,WAAW,CAAA;AAGvB,GAAA,CACK,QAAQ,OAAA,EAAS,mCAAmC,CAAA,CACpD,MAAA,CAAO,mBAAmB,qBAAqB,CAAA,CAC/C,MAAA,CAAO,iBAAA,EAAmB,4BAA4B,CAAA,CACtD,MAAA,CAAO,uBAAuB,kCAAkC,CAAA,CAChE,OAAO,YAAY,CAAA;AAGxB,GAAA,CAAI,OAAA,CAAQ,cAAA,EAAgB,4BAA4B,CAAA,CAAE,OAAO,YAAY;AACzE,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,MAAM,OAAO,sBAAY,CAAA;AAEtD,EAAA,MAAA,CAAO,mBAAA,EAAqB;AAAA,IACxB,EAAA;AAAA,IACA,GAAG,MAAA,CAAO,OAAA,CAAQ,gBAAgB,CAAA,CAAE,QAAQ,CAAC,CAAC,QAAA,EAAU,OAAO,CAAA,KAAM;AAAA,MACjE,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,WAAA,EAAa,CAAA;AAAA,MAClC,GAAG,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,GAAA;AAAA,QACvB,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KACV,CAAA,EAAA,EAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,GAAA,EAAM,OAAO,GAAA,CAAI,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,OAChF;AAAA,MACA;AAAA,KACH;AAAA,GACJ,CAAA;AACL,CAAC,CAAA;AAGD,GAAA,CAAI,KAAA,EAAM;AAGV,OAAA,CAAQ,EAAA,CAAG,sBAAsB,CAAA,KAAA,KAAS;AACtC,EAAA,MAAA,CAAO,KAAA,CAAM,oBAAoB,KAAc,CAAA;AAC/C,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAClB,CAAC,CAAA"}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { makeTsupConfig } from \"./tsup.config\";\nimport { makeUnbuildConfig } from \"./unbuild.config\";\n\n// Discriminated union types for type-safe config definition\nexport type TsupBuildConfig = {\n type: \"tsup\";\n options?: TsupOptions;\n};\n\nexport type UnbuildBuildConfig = {\n type: \"unbuild\";\n options?: UnbuildConfig;\n};\n\nexport type BuildConfigInput = TsupBuildConfig | UnbuildBuildConfig;\n\n/**\n * Define a build configuration with automatic bundler detection.\n *\n * This function provides a type-safe way to define build configurations\n * for either tsup or unbuild based on the `type` discriminator.\n *\n * @param config - Build configuration with type discriminator\n * @returns Configuration object for the selected bundler\n *\n * @example\n * ```ts\n * // For tsup\n * export default defineBuildConfig({\n * type: 'tsup',\n * options: {\n * entry: ['src/index.ts'],\n * format: ['esm', 'cjs'],\n * },\n * });\n *\n * // For unbuild\n * export default defineBuildConfig({\n * type: 'unbuild',\n * options: {\n * entries: ['src/index'],\n * },\n * });\n * ```\n */\nexport function defineBuildConfig(\n config: TsupBuildConfig,\n): ReturnType<typeof makeTsupConfig>;\nexport function defineBuildConfig(\n config: UnbuildBuildConfig,\n): ReturnType<typeof makeUnbuildConfig>;\nexport function defineBuildConfig(\n config: BuildConfigInput,\n): ReturnType<typeof makeTsupConfig> | ReturnType<typeof makeUnbuildConfig> {\n if (config.type === \"tsup\") {\n return makeTsupConfig(config.options ?? {});\n }\n return makeUnbuildConfig(config.options ?? {});\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { makeTsupConfig } from \"./tsup.config\";\nimport { makeUnbuildConfig } from \"./unbuild.config\";\n\n// Discriminated union types for type-safe config definition\nexport type TsupBuildConfig = {\n type: \"tsup\";\n options?: TsupOptions;\n};\n\nexport type UnbuildBuildConfig = {\n type: \"unbuild\";\n options?: UnbuildConfig;\n};\n\nexport type BuildConfigInput = TsupBuildConfig | UnbuildBuildConfig;\n\n/**\n * Define a build configuration with automatic bundler detection.\n *\n * This function provides a type-safe way to define build configurations\n * for either tsup or unbuild based on the `type` discriminator.\n *\n * @param config - Build configuration with type discriminator\n * @returns Configuration object for the selected bundler\n *\n * @example\n * ```ts\n * // For tsup\n * export default defineBuildConfig({\n * type: 'tsup',\n * options: {\n * entry: ['src/index.ts'],\n * format: ['esm', 'cjs'],\n * },\n * });\n *\n * // For unbuild\n * export default defineBuildConfig({\n * type: 'unbuild',\n * options: {\n * entries: ['src/index'],\n * },\n * });\n * ```\n */\nexport function defineBuildConfig(\n config: TsupBuildConfig,\n): ReturnType<typeof makeTsupConfig>;\nexport function defineBuildConfig(\n config: UnbuildBuildConfig,\n): ReturnType<typeof makeUnbuildConfig>;\nexport function defineBuildConfig(\n config: BuildConfigInput,\n): ReturnType<typeof makeTsupConfig> | ReturnType<typeof makeUnbuildConfig> {\n if (config.type === \"tsup\") {\n return makeTsupConfig(config.options ?? {});\n }\n return makeUnbuildConfig(config.options ?? {});\n}\n"],"names":[],"mappings":";;;;AAqDO,SAAS,kBACZ,MAAA,EACwE;AACxE,EAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AACxB,IAAA,OAAO,cAAA,CAAe,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,iBAAA,CAAkB,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AACjD;;;;"}
|
package/dist/tsup.config.d.mts
CHANGED
|
@@ -26,6 +26,6 @@ import { Options } from 'tsup';
|
|
|
26
26
|
* });
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
declare function makeTsupConfig(c?: Options): Options
|
|
29
|
+
declare function makeTsupConfig(c?: Options): Options;
|
|
30
30
|
|
|
31
31
|
export { makeTsupConfig };
|
package/dist/tsup.config.d.ts
CHANGED
|
@@ -26,6 +26,6 @@ import { Options } from 'tsup';
|
|
|
26
26
|
* });
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
declare function makeTsupConfig(c?: Options): Options
|
|
29
|
+
declare function makeTsupConfig(c?: Options): Options;
|
|
30
30
|
|
|
31
31
|
export { makeTsupConfig };
|
package/dist/tsup.config.mjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { defineConfig } from 'tsup';
|
|
2
|
-
|
|
3
1
|
function makeTsupConfig(c = {}) {
|
|
4
|
-
return
|
|
2
|
+
return {
|
|
5
3
|
// Entry points
|
|
6
4
|
entry: ["src/index.ts"],
|
|
7
5
|
// Output formats
|
|
@@ -37,7 +35,7 @@ function makeTsupConfig(c = {}) {
|
|
|
37
35
|
// Mark all node_modules as external
|
|
38
36
|
// Allow user overrides
|
|
39
37
|
...c
|
|
40
|
-
}
|
|
38
|
+
};
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
export { makeTsupConfig };
|
package/dist/tsup.config.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsup.config.mjs","sources":["../src/tsup.config.ts"],"sourcesContent":["import type { Options } from \"tsup\";\
|
|
1
|
+
{"version":3,"file":"tsup.config.mjs","sources":["../src/tsup.config.ts"],"sourcesContent":["import type { Options } from \"tsup\";\n\n/**\n * Creates a tsup configuration with sensible defaults for Node.js libraries.\n *\n * Default configuration:\n * - Entry: src/index.ts\n * - Formats: ESM and CJS\n * - TypeScript declarations with type resolution\n * - Source maps enabled\n * - Clean build directory\n * - Tree shaking enabled\n * - Target: node18\n * - Preserve function/class names\n *\n * @param c - Partial tsup options to override defaults\n * @returns Complete tsup configuration\n *\n * @example\n * ```ts\n * import { makeTsupConfig } from '@adddog/build-configs/tsup';\n *\n * export default makeTsupConfig({\n * entry: ['src/index.ts', 'src/cli.ts'],\n * format: ['esm'],\n * });\n * ```\n */\nexport function makeTsupConfig(c: Options = {}): Options {\n return {\n // Entry points\n entry: [\"src/index.ts\"],\n\n // Output formats\n format: [\"esm\", \"cjs\"],\n\n // TypeScript declarations\n dts: {\n resolve: true, // Resolve external types from node_modules\n compilerOptions: {\n strict: true,\n },\n },\n\n // Build behavior\n bundle: true,\n splitting: false, // Disable code splitting for better CJS compatibility\n treeshake: true,\n clean: true,\n\n // Source maps\n sourcemap: true,\n\n // Target environment\n target: \"node18\",\n platform: \"node\",\n\n // Optimization\n minify: false, // Let consumers minify if needed\n keepNames: true, // Preserve function/class names for debugging\n\n // Dependencies\n skipNodeModulesBundle: true, // Don't bundle node_modules\n external: [/node_modules/], // Mark all node_modules as external\n\n // Allow user overrides\n ...c,\n };\n}\n"],"names":[],"mappings":"AA4BO,SAAS,cAAA,CAAe,CAAA,GAAa,EAAC,EAAY;AACrD,EAAA,OAAO;AAAA;AAAA,IAEH,KAAA,EAAO,CAAC,cAAc,CAAA;AAAA;AAAA,IAGtB,MAAA,EAAQ,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA;AAAA,IAGrB,GAAA,EAAK;AAAA,MACD,OAAA,EAAS,IAAA;AAAA;AAAA,MACT,eAAA,EAAiB;AAAA,QACb,MAAA,EAAQ;AAAA;AACZ,KACJ;AAAA;AAAA,IAGA,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,KAAA;AAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,KAAA,EAAO,IAAA;AAAA;AAAA,IAGP,SAAA,EAAW,IAAA;AAAA;AAAA,IAGX,MAAA,EAAQ,QAAA;AAAA,IACR,QAAA,EAAU,MAAA;AAAA;AAAA,IAGV,MAAA,EAAQ,KAAA;AAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA;AAAA;AAAA,IAGX,qBAAA,EAAuB,IAAA;AAAA;AAAA,IACvB,QAAA,EAAU,CAAC,cAAc,CAAA;AAAA;AAAA;AAAA,IAGzB,GAAG;AAAA,GACP;AACJ;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adddog/build-configs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Reusable build configurations for tsup and unbuild",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Sam Elie <sam@add.dog>",
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
"bundler"
|
|
22
22
|
],
|
|
23
23
|
"main": "./dist/index.mjs",
|
|
24
|
-
"module": "./dist/index.mjs",
|
|
25
24
|
"types": "./dist/index.d.ts",
|
|
26
25
|
"bin": {
|
|
27
26
|
"rad-build": "./dist/cli/index.mjs"
|
|
@@ -50,24 +49,25 @@
|
|
|
50
49
|
"LICENSE"
|
|
51
50
|
],
|
|
52
51
|
"dependencies": {
|
|
53
|
-
"@clack/prompts": "^0.
|
|
52
|
+
"@clack/prompts": "^1.0.1",
|
|
54
53
|
"cac": "^6.7.14",
|
|
55
54
|
"consola": "^3.4.2",
|
|
56
55
|
"defu": "^6.1.4",
|
|
57
|
-
"execa": "^9.6.
|
|
56
|
+
"execa": "^9.6.1",
|
|
58
57
|
"jiti": "^2.6.1",
|
|
59
58
|
"picocolors": "^1.1.1",
|
|
60
|
-
"tsup": "^8.5.
|
|
59
|
+
"tsup": "^8.5.1",
|
|
61
60
|
"unbuild": "^3.6.1",
|
|
62
|
-
"zod": "^4.
|
|
61
|
+
"zod": "^4.3.6"
|
|
63
62
|
},
|
|
64
63
|
"devDependencies": {
|
|
65
|
-
"@types/node": "^
|
|
66
|
-
"bumpp": "^10.
|
|
67
|
-
"eslint": "^
|
|
64
|
+
"@types/node": "^25.3.0",
|
|
65
|
+
"bumpp": "^10.4.1",
|
|
66
|
+
"eslint": "^10.0.2",
|
|
68
67
|
"typescript": "^5.9.3",
|
|
69
|
-
"
|
|
70
|
-
"@
|
|
68
|
+
"vitest": "^4.0.18",
|
|
69
|
+
"@adddog/monorepo-consistency": "0.0.11",
|
|
70
|
+
"@adddog/vite": "0.0.3"
|
|
71
71
|
},
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public",
|
|
@@ -84,8 +84,9 @@
|
|
|
84
84
|
"lint:fix": "eslint --fix .",
|
|
85
85
|
"release": "bumpp --yes --no-push --no-tag --release patch",
|
|
86
86
|
"types": "tsc -p tsconfig.typecheck.json",
|
|
87
|
+
"test": "vitest --watch=false",
|
|
88
|
+
"dev": "tsx src/index.ts",
|
|
87
89
|
"knip": "knip",
|
|
88
|
-
"
|
|
89
|
-
"dev": "tsx src/index.ts"
|
|
90
|
+
"version:patch": "npm version patch --no-git-tag-version"
|
|
90
91
|
}
|
|
91
92
|
}
|