@better-fullstack/types 1.6.3 → 1.7.0
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/{defaults-C-sFuvss.d.mts → defaults-DYWPNKDb.d.mts} +2 -2
- package/dist/defaults-DYWPNKDb.d.mts.map +1 -0
- package/dist/{defaults-aGwVXJh5.mjs → defaults-DnrxiPa9.mjs} +1 -1
- package/dist/{defaults-aGwVXJh5.mjs.map → defaults-DnrxiPa9.mjs.map} +1 -1
- package/dist/defaults.d.mts +3 -3
- package/dist/defaults.mjs +1 -1
- package/dist/index.d.mts +5 -176
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -2811
- package/dist/index.mjs.map +1 -1
- package/dist/json-schema.mjs +1 -1
- package/dist/{schemas-BsdLtIDm.d.mts → schemas-9siFEKYg.d.mts} +1 -1
- package/dist/{schemas-BsdLtIDm.d.mts.map → schemas-9siFEKYg.d.mts.map} +1 -1
- package/dist/{schemas-CDxaaiIP.mjs → schemas-DDTcRKek.mjs} +1 -1
- package/dist/{schemas-CDxaaiIP.mjs.map → schemas-DDTcRKek.mjs.map} +1 -1
- package/dist/schemas.d.mts +1 -1
- package/dist/schemas.mjs +1 -1
- package/dist/stack-translation-CUd4T2bV.mjs +3798 -0
- package/dist/stack-translation-CUd4T2bV.mjs.map +1 -0
- package/dist/stack-translation-Ct4UaQX9.d.mts +301 -0
- package/dist/stack-translation-Ct4UaQX9.d.mts.map +1 -0
- package/dist/stack-translation.d.mts +5 -0
- package/dist/stack-translation.mjs +4 -0
- package/dist/{types-rP2wE60D.d.mts → types-Do72vki5.d.mts} +2 -2
- package/dist/{types-rP2wE60D.d.mts.map → types-Do72vki5.d.mts.map} +1 -1
- package/dist/types.d.mts +2 -2
- package/package.json +6 -2
- package/dist/defaults-C-sFuvss.d.mts.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["CAPABILITY_DEFINITIONS: {\n [K in CapabilityName]: readonly CapabilityDefinitionMap[K][];\n}","_exhaustive: never","CATEGORY_ORDER: CompatibilityCategory[]","rustCategoryNames: Record<string, string>","pythonCategoryNames: Record<string, string>","goCategoryNames: Record<string, string>","javaCategoryNames: Record<string, string>","tsCategoryNames: Record<string, string>","notes: CompatibilityAnalysisResult[\"notes\"]","changes: CompatibilityAdjustment[]","noneOverrides: Partial<CompatibilityInput>","WEB_FRAMEWORKS: readonly Frontend[]","UI_LIBRARY_COMPATIBILITY: Record<\n UILibrary,\n {\n frontends: readonly Frontend[];\n cssFrameworks: readonly CSSFramework[];\n }\n>","ADDON_COMPATIBILITY: Record<Addons, readonly Frontend[]>","base: API[]","all: Forms[]","issues: CompatibilityIssue[]","scalarChecks: Array<[CompatibilityCategory, string]>","CATEGORY_VALUE_IDS: Record<OptionCategory, readonly string[]>","EXACT_LABEL_OVERRIDES: Partial<Record<OptionCategory, Partial<Record<string, string>>>>","OPTION_ALIASES: Partial<Record<OptionCategory, Partial<Record<string, readonly string[]>>>>","CLI_VALUE_OVERRIDES: Partial<Record<OptionCategory, Partial<Record<string, string>>>>","TOKEN_LABELS: Record<string, string>","OPTION_CATEGORY_METADATA: Record<OptionCategory, OptionCategoryMetadata>"],"sources":["../src/capabilities.ts","../src/compatibility.ts","../src/option-metadata.ts","../src/local-dev.ts"],"sourcesContent":["import type { Auth, Ecosystem } from \"./types\";\n\nexport type CapabilityName = \"auth\";\n\nexport type CapabilityStackContext = {\n ecosystem?: Ecosystem;\n backend?: string;\n frontend?: readonly string[];\n webFrontend?: readonly string[];\n nativeFrontend?: readonly string[];\n};\n\nexport type CapabilityDefinitionBase = {\n id: string;\n label: string;\n description: string;\n promptHint: string;\n icon: string;\n color: string;\n default?: boolean;\n};\n\nexport type AuthCapabilityDefinition = CapabilityDefinitionBase & {\n id: Auth;\n};\n\ntype CapabilityDefinitionMap = {\n auth: AuthCapabilityDefinition;\n};\n\nexport type CapabilityDefinition<K extends CapabilityName = CapabilityName> =\n CapabilityDefinitionMap[K];\n\nexport type CapabilityNormalizationResult<K extends CapabilityName = CapabilityName> = {\n value: CapabilityDefinitionMap[K][\"id\"];\n normalized: boolean;\n reason: string | null;\n message: string | null;\n};\n\nconst AUTH_CAPABILITIES = [\n {\n id: \"better-auth\",\n label: \"Better-Auth\",\n description: \"The most comprehensive authentication framework for TypeScript\",\n promptHint: \"comprehensive auth framework for TypeScript\",\n icon: \"/icon/better-auth.svg\",\n color: \"from-green-400 to-green-600\",\n default: true,\n },\n {\n id: \"go-better-auth\",\n label: \"GoBetterAuth\",\n description: \"Embedded auth routes for Go applications\",\n promptHint: \"embedded auth routes for Go applications\",\n icon: \"https://cdn.simpleicons.org/go/00ADD8\",\n color: \"from-cyan-400 to-sky-600\",\n },\n {\n id: \"clerk\",\n label: \"Clerk\",\n description: \"More than authentication, Complete User Management\",\n promptHint: \"More than auth, Complete User Management\",\n icon: \"https://cdn.simpleicons.org/clerk/6C47FF\",\n color: \"from-blue-400 to-blue-600\",\n },\n {\n id: \"nextauth\",\n label: \"Auth.js (NextAuth)\",\n description: \"Open source authentication for Next.js\",\n promptHint: \"Authentication for Next.js (formerly NextAuth.js)\",\n icon: \"/icon/nextauth.png\",\n color: \"from-orange-400 to-orange-600\",\n },\n {\n id: \"stack-auth\",\n label: \"Stack Auth\",\n description: \"Open-source Auth0/Clerk alternative with user management\",\n promptHint: \"Open-source Auth0/Clerk alternative\",\n icon: \"/icon/stack-auth.svg\",\n color: \"from-purple-400 to-purple-600\",\n },\n {\n id: \"supabase-auth\",\n label: \"Supabase Auth\",\n description: \"Open-source Auth with Supabase platform integration\",\n promptHint: \"Auth with Supabase platform integration\",\n icon: \"https://cdn.simpleicons.org/supabase/3FCF8E\",\n color: \"from-emerald-400 to-emerald-600\",\n },\n {\n id: \"auth0\",\n label: \"Auth0\",\n description: \"Flexible identity platform for authentication and authorization\",\n promptHint: \"Flexible identity platform for authentication\",\n icon: \"https://cdn.simpleicons.org/auth0/EB5424\",\n color: \"from-orange-400 to-orange-600\",\n },\n {\n id: \"none\",\n label: \"No Auth\",\n description: \"Skip authentication\",\n promptHint: \"No authentication\",\n icon: \"\",\n color: \"from-red-400 to-red-600\",\n },\n] as const satisfies readonly AuthCapabilityDefinition[];\n\nconst CAPABILITY_DEFINITIONS: {\n [K in CapabilityName]: readonly CapabilityDefinitionMap[K][];\n} = {\n auth: AUTH_CAPABILITIES,\n};\n\nconst NATIVE_FRONTENDS = new Set([\"native-bare\", \"native-uniwind\", \"native-unistyles\"]);\nconst CONVEX_BETTER_AUTH_WEB = new Set([\"react-vite\", \"tanstack-router\", \"tanstack-start\", \"next\"]);\nconst CONVEX_CLERK_WEB = new Set([\n \"react-router\",\n \"react-vite\",\n \"tanstack-router\",\n \"tanstack-start\",\n \"next\",\n]);\n\nfunction capitalizeFirst(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dedupe(values: readonly string[]): string[] {\n return [...new Set(values)];\n}\n\nfunction getFrontendSets(context: CapabilityStackContext): {\n webFrontend: string[];\n nativeFrontend: string[];\n} {\n if (context.frontend) {\n const webFrontend = context.frontend.filter((frontend) => !NATIVE_FRONTENDS.has(frontend));\n const nativeFrontend = context.frontend.filter((frontend) => NATIVE_FRONTENDS.has(frontend));\n return {\n webFrontend: dedupe(webFrontend),\n nativeFrontend: dedupe(nativeFrontend),\n };\n }\n\n return {\n webFrontend: dedupe(context.webFrontend ?? []),\n nativeFrontend: dedupe(context.nativeFrontend ?? []),\n };\n}\n\nfunction isSelfBackend(backend?: string): boolean {\n return backend === \"self\" || backend?.startsWith(\"self-\") === true;\n}\n\nfunction getNextOnlyAuthLabel(optionId: Exclude<Auth, \"none\" | \"better-auth\" | \"go-better-auth\" | \"clerk\">): string {\n switch (optionId) {\n case \"nextauth\":\n return \"Auth.js (NextAuth)\";\n case \"stack-auth\":\n return \"Stack Auth\";\n case \"supabase-auth\":\n return \"Supabase Auth\";\n case \"auth0\":\n return \"Auth0\";\n default: {\n const _exhaustive: never = optionId;\n return String(_exhaustive);\n }\n }\n}\n\nfunction getAuthDisabledReason(context: CapabilityStackContext, optionId: Auth): string | null {\n if (optionId === \"none\") return null;\n\n const ecosystem = context.ecosystem ?? \"typescript\";\n const backend = context.backend;\n const { webFrontend, nativeFrontend } = getFrontendSets(context);\n const hasNextJs = webFrontend.includes(\"next\");\n const hasTanStackStart = webFrontend.includes(\"tanstack-start\");\n const hasNativeFrontend = nativeFrontend.some((frontend) => frontend !== \"none\");\n\n if (optionId === \"go-better-auth\") {\n return ecosystem === \"go\" ? null : \"GoBetterAuth is available only for Go stacks\";\n }\n\n if (ecosystem === \"go\") {\n return \"Go stacks currently support GoBetterAuth only\";\n }\n\n if (ecosystem !== \"typescript\") {\n return `${capitalizeFirst(ecosystem)} stacks do not support auth integrations yet`;\n }\n\n if (backend === \"none\") {\n return \"No backend selected\";\n }\n\n if (optionId === \"better-auth\") {\n if (backend === \"convex\") {\n const hasCompatibleFrontend =\n webFrontend.some((frontend) => CONVEX_BETTER_AUTH_WEB.has(frontend)) ||\n nativeFrontend.some((frontend) => NATIVE_FRONTENDS.has(frontend));\n\n if (!hasCompatibleFrontend) {\n return \"Better-Auth with Convex requires React + Vite, TanStack Router, TanStack Start, Next.js, or React Native\";\n }\n }\n\n return null;\n }\n\n if (optionId === \"clerk\") {\n if (backend === \"convex\") {\n const hasCompatibleFrontend =\n webFrontend.some((frontend) => CONVEX_CLERK_WEB.has(frontend)) ||\n nativeFrontend.some((frontend) => NATIVE_FRONTENDS.has(frontend));\n\n if (!hasCompatibleFrontend) {\n return \"Clerk with Convex requires React Router, React + Vite, TanStack Router, TanStack Start, Next.js, or React Native\";\n }\n\n return null;\n }\n\n if (isSelfBackend(backend)) {\n if ((hasNextJs || hasTanStackStart) && hasNativeFrontend) {\n return \"In Better-Fullstack, Clerk with self backend is currently supported only for web-only Next.js or TanStack Start projects (no native companion app)\";\n }\n\n if (hasNextJs || hasTanStackStart) {\n return null;\n }\n\n if (backend === \"self-astro\" || webFrontend.includes(\"astro\")) {\n return \"In Better-Fullstack, Clerk is not yet supported for Astro fullstack projects\";\n }\n if (backend === \"self-nuxt\" || webFrontend.includes(\"nuxt\")) {\n return \"In Better-Fullstack, Clerk is not yet supported for Nuxt fullstack projects\";\n }\n if (backend === \"self-svelte\" || webFrontend.includes(\"svelte\")) {\n return \"In Better-Fullstack, Clerk is not yet supported for SvelteKit fullstack projects\";\n }\n if (backend === \"self-solid-start\" || webFrontend.includes(\"solid-start\")) {\n return \"In Better-Fullstack, Clerk is not yet supported for SolidStart fullstack projects\";\n }\n\n return \"In Better-Fullstack, Clerk is currently supported with Convex, Next.js fullstack, or TanStack Start fullstack\";\n }\n\n return \"In Better-Fullstack, Clerk is currently supported with Convex, Next.js fullstack, or TanStack Start fullstack\";\n }\n\n const nextOnlyLabel = getNextOnlyAuthLabel(optionId);\n if (backend !== \"self\" && backend !== \"self-next\") {\n return `In Better-Fullstack, ${nextOnlyLabel} is currently supported only with the 'self' backend (fullstack Next.js)`;\n }\n\n if (!hasNextJs) {\n return `In Better-Fullstack, ${nextOnlyLabel} currently requires the Next.js frontend`;\n }\n\n return null;\n}\n\nexport function getCapabilityDefinitions<K extends CapabilityName>(\n capability: K,\n): readonly CapabilityDefinitionMap[K][] {\n return CAPABILITY_DEFINITIONS[capability];\n}\n\nexport function getCapabilityDisabledReason<K extends CapabilityName>(\n capability: K,\n context: CapabilityStackContext,\n optionId: CapabilityDefinitionMap[K][\"id\"],\n): string | null {\n if (capability === \"auth\") {\n return getAuthDisabledReason(context, optionId as Auth) as string | null;\n }\n\n return null;\n}\n\nexport function getSupportedCapabilityOptions<K extends CapabilityName>(\n capability: K,\n context: CapabilityStackContext,\n): readonly CapabilityDefinitionMap[K][] {\n return getCapabilityDefinitions(capability).filter(\n (definition) => getCapabilityDisabledReason(capability, context, definition.id) === null,\n );\n}\n\nexport function normalizeCapabilitySelection<K extends CapabilityName>(\n capability: K,\n context: CapabilityStackContext,\n optionId: CapabilityDefinitionMap[K][\"id\"] | undefined,\n): CapabilityNormalizationResult<K> {\n const fallbackValue = \"none\" as CapabilityDefinitionMap[K][\"id\"];\n\n if (!optionId || optionId === fallbackValue) {\n return {\n value: (optionId ?? fallbackValue) as CapabilityDefinitionMap[K][\"id\"],\n normalized: false,\n reason: null,\n message: null,\n };\n }\n\n const reason = getCapabilityDisabledReason(capability, context, optionId);\n if (!reason) {\n return {\n value: optionId,\n normalized: false,\n reason: null,\n message: null,\n };\n }\n\n return {\n value: fallbackValue,\n normalized: true,\n reason,\n message: `${capitalizeFirst(capability)} set to 'None' (${reason})`,\n };\n}\n","import type {\n Addons,\n API,\n AstroIntegration,\n Auth,\n Backend,\n CSSFramework,\n Forms,\n Frontend,\n Runtime,\n UILibrary,\n} from \"./types\";\nimport {\n getCapabilityDisabledReason,\n normalizeCapabilitySelection,\n} from \"./capabilities\";\n\nexport type CompatibilityCategory =\n | \"api\"\n | \"webFrontend\"\n | \"nativeFrontend\"\n | \"astroIntegration\"\n | \"runtime\"\n | \"backend\"\n | \"database\"\n | \"orm\"\n | \"dbSetup\"\n | \"webDeploy\"\n | \"serverDeploy\"\n | \"auth\"\n | \"payments\"\n | \"email\"\n | \"fileUpload\"\n | \"logging\"\n | \"observability\"\n | \"backendLibraries\"\n | \"stateManagement\"\n | \"forms\"\n | \"validation\"\n | \"testing\"\n | \"realtime\"\n | \"jobQueue\"\n | \"caching\"\n | \"i18n\"\n | \"search\"\n | \"fileStorage\"\n | \"animation\"\n | \"cssFramework\"\n | \"uiLibrary\"\n | \"cms\"\n | \"featureFlags\"\n | \"analytics\"\n | \"codeQuality\"\n | \"documentation\"\n | \"appPlatforms\"\n | \"packageManager\"\n | \"versionChannel\"\n | \"examples\"\n | \"ai\"\n | \"aiDocs\"\n | \"git\"\n | \"install\"\n | \"effect\"\n | \"rustWebFramework\"\n | \"rustFrontend\"\n | \"rustOrm\"\n | \"rustApi\"\n | \"rustCli\"\n | \"rustLibraries\"\n | \"pythonWebFramework\"\n | \"pythonOrm\"\n | \"pythonValidation\"\n | \"pythonAi\"\n | \"pythonAuth\"\n | \"pythonTaskQueue\"\n | \"pythonGraphql\"\n | \"pythonQuality\"\n | \"goWebFramework\"\n | \"goOrm\"\n | \"goApi\"\n | \"goCli\"\n | \"goLogging\"\n | \"goAuth\"\n | \"javaWebFramework\"\n | \"javaBuildTool\"\n | \"javaOrm\"\n | \"javaAuth\"\n | \"javaLibraries\"\n | \"javaTestingLibraries\";\n\nexport type CompatibilityIssue = {\n code: string;\n message: string;\n category?: CompatibilityCategory;\n optionId?: string;\n};\n\nexport type CompatibilityEvaluation = {\n issues: CompatibilityIssue[];\n};\n\nexport type CompatibilityAdjustment = {\n category: string;\n message: string;\n};\n\nexport type CompatibilityInput = {\n ecosystem: \"typescript\" | \"rust\" | \"python\" | \"go\" | \"java\";\n projectName: string | null;\n webFrontend: string[];\n nativeFrontend: string[];\n astroIntegration: string;\n runtime: string;\n backend: string;\n database: string;\n orm: string;\n dbSetup: string;\n auth: string;\n payments: string;\n email: string;\n fileUpload: string;\n logging: string;\n observability: string;\n featureFlags: string;\n analytics: string;\n backendLibraries: string;\n stateManagement: string;\n forms: string;\n validation: string;\n testing: string;\n realtime: string;\n jobQueue: string;\n caching: string;\n animation: string;\n cssFramework: string;\n uiLibrary: string;\n shadcnBase: string;\n shadcnStyle: string;\n shadcnIconLibrary: string;\n shadcnColorTheme: string;\n shadcnBaseColor: string;\n shadcnFont: string;\n shadcnRadius: string;\n cms: string;\n i18n: string;\n search: string;\n fileStorage: string;\n codeQuality: string[];\n documentation: string[];\n appPlatforms: string[];\n packageManager: string;\n versionChannel: string;\n examples: string[];\n aiSdk: string;\n aiDocs: string[];\n git: string;\n install: string;\n api: string;\n webDeploy: string;\n serverDeploy: string;\n yolo: string;\n rustWebFramework: string;\n rustFrontend: string;\n rustOrm: string;\n rustApi: string;\n rustCli: string;\n rustLibraries: string[];\n rustLogging: string;\n rustErrorHandling: string;\n rustCaching: string;\n rustAuth: string;\n pythonWebFramework: string;\n pythonOrm: string;\n pythonValidation: string;\n pythonAi: string[];\n pythonAuth: string;\n pythonTaskQueue: string;\n pythonGraphql: string;\n pythonQuality: string;\n goWebFramework: string;\n goOrm: string;\n goApi: string;\n goCli: string;\n goLogging: string;\n goAuth: string;\n javaWebFramework: string;\n javaBuildTool: string;\n javaOrm: string;\n javaAuth: string;\n javaLibraries: string[];\n javaTestingLibraries: string[];\n};\n\nconst TYPESCRIPT_CATEGORY_ORDER: CompatibilityCategory[] = [\n \"webFrontend\",\n \"nativeFrontend\",\n \"astroIntegration\",\n \"cssFramework\",\n \"uiLibrary\",\n \"backend\",\n \"backendLibraries\",\n \"runtime\",\n \"api\",\n \"database\",\n \"orm\",\n \"dbSetup\",\n \"webDeploy\",\n \"serverDeploy\",\n \"auth\",\n \"payments\",\n \"email\",\n \"fileUpload\",\n \"logging\",\n \"observability\",\n \"featureFlags\",\n \"analytics\",\n \"ai\",\n \"stateManagement\",\n \"forms\",\n \"validation\",\n \"testing\",\n \"realtime\",\n \"jobQueue\",\n \"caching\",\n \"i18n\",\n \"search\",\n \"fileStorage\",\n \"animation\",\n \"cms\",\n \"codeQuality\",\n \"documentation\",\n \"appPlatforms\",\n \"packageManager\",\n \"versionChannel\",\n \"examples\",\n \"aiDocs\",\n \"git\",\n \"install\",\n];\n\nconst CATEGORY_ORDER: CompatibilityCategory[] = [\n ...TYPESCRIPT_CATEGORY_ORDER,\n \"rustWebFramework\",\n \"rustFrontend\",\n \"rustOrm\",\n \"rustApi\",\n \"rustCli\",\n \"rustLibraries\",\n \"pythonWebFramework\",\n \"pythonOrm\",\n \"pythonValidation\",\n \"pythonAi\",\n \"pythonAuth\",\n \"pythonTaskQueue\",\n \"pythonGraphql\",\n \"pythonQuality\",\n \"goWebFramework\",\n \"goOrm\",\n \"goApi\",\n \"goCli\",\n \"goLogging\",\n \"goAuth\",\n \"javaWebFramework\",\n \"javaBuildTool\",\n \"javaOrm\",\n \"javaAuth\",\n \"javaLibraries\",\n \"javaTestingLibraries\",\n];\n\nconst DEFAULT_RUNTIME = \"bun\";\n\nexport function validateProjectName(name: string): string | undefined {\n const INVALID_CHARS = [\"<\", \">\", \":\", '\"', \"|\", \"?\", \"*\", \"/\", \"\\\\\"];\n const MAX_LENGTH = 255;\n\n if (name === \".\") return undefined;\n\n if (!name) return \"Project name cannot be empty\";\n if (name.length > MAX_LENGTH) {\n return `Project name must be less than ${MAX_LENGTH} characters`;\n }\n if (INVALID_CHARS.some((char) => name.includes(char))) {\n return \"Project name contains invalid characters\";\n }\n if (name.startsWith(\".\") || name.startsWith(\"-\")) {\n return \"Project name cannot start with a dot or dash\";\n }\n if (name.toLowerCase() === \"node_modules\" || name.toLowerCase() === \"favicon.ico\") {\n return \"Project name is reserved\";\n }\n return undefined;\n}\n\nexport const hasPWACompatibleFrontend = (webFrontend: string[]) =>\n webFrontend.some((f) =>\n [\"tanstack-router\", \"react-router\", \"react-vite\", \"solid\", \"next\", \"astro\"].includes(f),\n );\n\nexport const hasTauriCompatibleFrontend = (webFrontend: string[]) =>\n webFrontend.some((f) =>\n [\"tanstack-router\", \"react-router\", \"react-vite\", \"nuxt\", \"svelte\", \"solid\", \"next\", \"astro\"].includes(f),\n );\n\nexport const hasDockerComposeCompatibleFrontend = (webFrontend: string[]) =>\n webFrontend.some((f) =>\n [\"tanstack-router\", \"react-router\", \"react-vite\", \"solid\", \"next\", \"astro\"].includes(f),\n );\n\nconst isChatSdkExampleSupported = (stack: CompatibilityInput): boolean => {\n if (stack.ecosystem !== \"typescript\") return false;\n\n if (stack.backend === \"self-next\" || stack.backend === \"self-tanstack-start\") {\n return true;\n }\n\n if (stack.backend === \"self-nuxt\") {\n return true;\n }\n\n if (stack.backend === \"hono\") {\n return stack.runtime === \"node\";\n }\n\n return false;\n};\n\nexport const requiresChatSdkVercelAI = (stack: CompatibilityInput): boolean => {\n return (\n stack.examples.includes(\"chat-sdk\") &&\n (stack.backend === \"self-nuxt\" || (stack.backend === \"hono\" && stack.runtime === \"node\"))\n );\n};\n\nexport const getCategoryDisplayName = (categoryKey: string): string => {\n // Custom display names for Rust categories\n const rustCategoryNames: Record<string, string> = {\n rustWebFramework: \"Rust Web Framework\",\n rustFrontend: \"Rust Frontend (WASM)\",\n rustOrm: \"Rust ORM / Database\",\n rustApi: \"Rust API Layer\",\n rustCli: \"Rust CLI Tools\",\n rustLibraries: \"Rust Core Libraries\",\n rustLogging: \"Rust Logging\",\n rustErrorHandling: \"Rust Error Handling\",\n rustCaching: \"Rust Caching\",\n rustAuth: \"Rust Auth\",\n };\n\n // Custom display names for Python categories\n const pythonCategoryNames: Record<string, string> = {\n pythonWebFramework: \"Python Web Framework\",\n pythonOrm: \"Python ORM / Database\",\n pythonValidation: \"Python Validation\",\n pythonAi: \"Python AI / ML\",\n pythonAuth: \"Python Auth\",\n pythonTaskQueue: \"Python Task Queue\",\n pythonGraphql: \"Python GraphQL\",\n pythonQuality: \"Python Code Quality\",\n };\n\n // Custom display names for Go categories\n const goCategoryNames: Record<string, string> = {\n goWebFramework: \"Go Web Framework\",\n goOrm: \"Go ORM / Database\",\n goApi: \"Go API Layer\",\n goCli: \"Go CLI Tools\",\n goLogging: \"Go Logging\",\n goAuth: \"Go Auth\",\n };\n\n const javaCategoryNames: Record<string, string> = {\n javaWebFramework: \"Java Web Framework\",\n javaBuildTool: \"Java Build Tool\",\n javaOrm: \"Java ORM / Database\",\n javaAuth: \"Java Auth\",\n javaLibraries: \"Java Libraries\",\n javaTestingLibraries: \"Java Testing Libraries\",\n };\n\n if (rustCategoryNames[categoryKey]) {\n return rustCategoryNames[categoryKey];\n }\n\n if (pythonCategoryNames[categoryKey]) {\n return pythonCategoryNames[categoryKey];\n }\n\n if (goCategoryNames[categoryKey]) {\n return goCategoryNames[categoryKey];\n }\n\n if (javaCategoryNames[categoryKey]) {\n return javaCategoryNames[categoryKey];\n }\n\n // Custom display names for TypeScript categories\n const tsCategoryNames: Record<string, string> = {\n i18n: \"Internationalization (i18n)\",\n };\n\n if (tsCategoryNames[categoryKey]) {\n return tsCategoryNames[categoryKey];\n }\n\n const result = categoryKey.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n};\n\nexport type CompatibilityAnalysisResult = {\n adjustedStack: CompatibilityInput | null;\n notes: Record<string, { notes: string[]; hasIssue: boolean }>;\n changes: CompatibilityAdjustment[];\n};\n\n/**\n * Analyzes the stack and auto-adjusts incompatible selections.\n * This follows the CLI approach: when you make a selection, dependent items adjust automatically.\n * The flow is: frontend -> backend -> runtime -> database -> orm -> api -> auth -> etc.\n */\nexport const analyzeStackCompatibility = (\n stack: CompatibilityInput,\n): CompatibilityAnalysisResult => {\n // Skip all validation if YOLO mode is enabled\n if (stack.yolo === \"true\") {\n return {\n adjustedStack: null,\n notes: {},\n changes: [],\n };\n }\n\n const nextStack = { ...stack };\n let changed = false;\n const notes: CompatibilityAnalysisResult[\"notes\"] = {};\n const changes: CompatibilityAdjustment[] = [];\n\n for (const cat of CATEGORY_ORDER) {\n notes[cat] = { notes: [], hasIssue: false };\n }\n\n // ============================================\n // BACKEND CONSTRAINTS\n // ============================================\n\n if (nextStack.backend === \"convex\") {\n // Convex handles its own runtime, database, orm, api, dbSetup\n const convexOverrides: Partial<CompatibilityInput> = {\n runtime: \"none\",\n database: \"none\",\n orm: \"none\",\n api: \"none\",\n dbSetup: \"none\",\n serverDeploy: \"none\",\n search: \"none\",\n fileStorage: \"none\",\n };\n\n for (const [key, value] of Object.entries(convexOverrides)) {\n const catKey = key as keyof CompatibilityInput;\n if (nextStack[catKey] !== value) {\n nextStack[catKey] = value as never;\n changed = true;\n changes.push({\n category: \"backend\",\n message: `${getCategoryDisplayName(catKey)} set to '${value}' (Convex provides this)`,\n });\n }\n }\n\n // Remove incompatible frontends\n if (nextStack.webFrontend.includes(\"solid\")) {\n nextStack.webFrontend = nextStack.webFrontend.filter((f) => f !== \"solid\");\n if (nextStack.webFrontend.length === 0) nextStack.webFrontend = [\"none\"];\n changed = true;\n changes.push({ category: \"backend\", message: \"Removed Solid (incompatible with Convex)\" });\n }\n if (nextStack.webFrontend.includes(\"solid-start\")) {\n nextStack.webFrontend = nextStack.webFrontend.filter((f) => f !== \"solid-start\");\n if (nextStack.webFrontend.length === 0) nextStack.webFrontend = [\"none\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Removed SolidStart (incompatible with Convex)\",\n });\n }\n if (nextStack.webFrontend.includes(\"astro\")) {\n nextStack.webFrontend = nextStack.webFrontend.filter((f) => f !== \"astro\");\n if (nextStack.webFrontend.length === 0) nextStack.webFrontend = [\"none\"];\n nextStack.astroIntegration = \"none\";\n changed = true;\n changes.push({ category: \"backend\", message: \"Removed Astro (incompatible with Convex)\" });\n }\n\n // Remove AI example if incompatible frontends are selected (Convex AI supports React-based frontends, including React + Vite)\n if (nextStack.examples.includes(\"ai\")) {\n const hasIncompatibleFrontend = nextStack.webFrontend.some((f) =>\n [\"solid\", \"svelte\", \"nuxt\"].includes(f),\n );\n if (hasIncompatibleFrontend) {\n nextStack.examples = nextStack.examples.filter((e) => e !== \"ai\");\n if (nextStack.examples.length === 0) nextStack.examples = [\"none\"];\n changed = true;\n changes.push({\n category: \"examples\",\n message:\n \"AI example removed (Convex AI only supports React-based frontends including React + Vite)\",\n });\n }\n }\n\n }\n\n if (nextStack.backend === \"none\") {\n // No backend means no runtime, database, orm, api, auth, dbSetup, serverDeploy\n const noneOverrides: Partial<CompatibilityInput> = {\n runtime: \"none\",\n database: \"none\",\n orm: \"none\",\n api: \"none\",\n dbSetup: \"none\",\n serverDeploy: \"none\",\n payments: \"none\",\n search: \"none\",\n fileStorage: \"none\",\n };\n\n if (nextStack.ecosystem !== \"go\") {\n noneOverrides.auth = \"none\";\n }\n\n for (const [key, value] of Object.entries(noneOverrides)) {\n const catKey = key as keyof CompatibilityInput;\n if (nextStack[catKey] !== value) {\n nextStack[catKey] = value as never;\n changed = true;\n changes.push({\n category: \"backend\",\n message: `${getCategoryDisplayName(catKey)} set to '${value}' (no backend)`,\n });\n }\n }\n\n // Clear examples\n if (\n nextStack.examples.length > 0 &&\n !(nextStack.examples.length === 1 && nextStack.examples[0] === \"none\")\n ) {\n nextStack.examples = [\"none\"];\n changed = true;\n changes.push({ category: \"backend\", message: \"Examples cleared (no backend)\" });\n }\n }\n\n // Self (fullstack) backend constraints\n if (\n nextStack.backend === \"self-next\" ||\n nextStack.backend === \"self-tanstack-start\" ||\n nextStack.backend === \"self-astro\" ||\n nextStack.backend === \"self-nuxt\" ||\n nextStack.backend === \"self-svelte\" ||\n nextStack.backend === \"self-solid-start\"\n ) {\n // Fullstack uses frontend's API routes, no separate runtime needed\n if (nextStack.runtime !== \"none\") {\n nextStack.runtime = \"none\";\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Runtime set to 'None' (fullstack uses frontend's API routes)\",\n });\n }\n if (nextStack.serverDeploy !== \"none\") {\n nextStack.serverDeploy = \"none\";\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Server deploy set to 'None' (fullstack uses frontend deployment)\",\n });\n }\n\n // Ensure correct frontend is selected\n if (nextStack.backend === \"self-next\" && !nextStack.webFrontend.includes(\"next\")) {\n nextStack.webFrontend = [\"next\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'Next.js' (required for Next.js fullstack)\",\n });\n }\n if (\n nextStack.backend === \"self-tanstack-start\" &&\n !nextStack.webFrontend.includes(\"tanstack-start\")\n ) {\n nextStack.webFrontend = [\"tanstack-start\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'TanStack Start' (required for TanStack Start fullstack)\",\n });\n }\n if (nextStack.backend === \"self-astro\" && !nextStack.webFrontend.includes(\"astro\")) {\n nextStack.webFrontend = [\"astro\"];\n if (nextStack.astroIntegration === \"none\") {\n nextStack.astroIntegration = \"react\";\n }\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'Astro' (required for Astro fullstack)\",\n });\n }\n if (nextStack.backend === \"self-nuxt\" && !nextStack.webFrontend.includes(\"nuxt\")) {\n nextStack.webFrontend = [\"nuxt\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'Nuxt' (required for Nuxt fullstack)\",\n });\n }\n if (nextStack.backend === \"self-svelte\" && !nextStack.webFrontend.includes(\"svelte\")) {\n nextStack.webFrontend = [\"svelte\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'SvelteKit' (required for SvelteKit fullstack)\",\n });\n }\n if (\n nextStack.backend === \"self-solid-start\" &&\n !nextStack.webFrontend.includes(\"solid-start\")\n ) {\n nextStack.webFrontend = [\"solid-start\"];\n changed = true;\n changes.push({\n category: \"backend\",\n message: \"Frontend set to 'SolidStart' (required for SolidStart fullstack)\",\n });\n }\n }\n\n // ============================================\n // RUNTIME CONSTRAINTS\n // ============================================\n\n // Workers runtime requires Hono backend\n if (nextStack.runtime === \"workers\" && nextStack.backend !== \"hono\") {\n nextStack.backend = \"hono\";\n changed = true;\n changes.push({ category: \"runtime\", message: \"Backend set to 'Hono' (required for Workers)\" });\n }\n\n // Workers runtime requires server deployment\n if (nextStack.runtime === \"workers\" && nextStack.serverDeploy === \"none\") {\n nextStack.serverDeploy = \"cloudflare\";\n changed = true;\n changes.push({\n category: \"runtime\",\n message: \"Server deploy set to 'Cloudflare' (required for Workers)\",\n });\n }\n\n // Workers runtime is incompatible with MongoDB\n if (nextStack.runtime === \"workers\" && nextStack.database === \"mongodb\") {\n nextStack.database = \"sqlite\";\n nextStack.orm = \"drizzle\";\n nextStack.dbSetup = \"d1\";\n changed = true;\n changes.push({\n category: \"runtime\",\n message:\n \"Database changed to SQLite with D1 (Better-Fullstack doesn't support MongoDB with Workers)\",\n });\n }\n\n // Runtime \"none\" only for convex and fullstack backends\n if (\n nextStack.runtime === \"none\" &&\n nextStack.backend !== \"convex\" &&\n nextStack.backend !== \"none\" &&\n nextStack.backend !== \"self-next\" &&\n nextStack.backend !== \"self-tanstack-start\" &&\n nextStack.backend !== \"self-astro\" &&\n nextStack.backend !== \"self-nuxt\" &&\n nextStack.backend !== \"self-svelte\" &&\n nextStack.backend !== \"self-solid-start\"\n ) {\n nextStack.runtime = DEFAULT_RUNTIME;\n changed = true;\n changes.push({\n category: \"runtime\",\n message: `Runtime set to '${DEFAULT_RUNTIME}' (required for this backend)`,\n });\n }\n\n // ============================================\n // DATABASE & ORM CONSTRAINTS (CLI-like flow)\n // ============================================\n\n // Skip if backend doesn't use database\n if (nextStack.backend !== \"convex\" && nextStack.backend !== \"none\") {\n // If database is none, ORM and dbSetup must be none\n if (nextStack.database === \"none\") {\n if (nextStack.orm !== \"none\") {\n nextStack.orm = \"none\";\n changed = true;\n changes.push({ category: \"database\", message: \"ORM set to 'None' (no database selected)\" });\n }\n if (nextStack.dbSetup !== \"none\") {\n nextStack.dbSetup = \"none\";\n changed = true;\n changes.push({\n category: \"database\",\n message: \"DB Setup set to 'None' (no database selected)\",\n });\n }\n }\n\n // MongoDB requires Prisma or Mongoose\n if (nextStack.database === \"mongodb\") {\n if (nextStack.orm !== \"prisma\" && nextStack.orm !== \"mongoose\") {\n nextStack.orm = \"prisma\";\n changed = true;\n changes.push({\n category: \"database\",\n message: \"ORM set to 'Prisma' (required for MongoDB)\",\n });\n }\n // MongoDB only works with mongodb-atlas or none for dbSetup\n if (\n nextStack.dbSetup !== \"mongodb-atlas\" &&\n nextStack.dbSetup !== \"none\" &&\n nextStack.dbSetup !== \"docker\"\n ) {\n nextStack.dbSetup = \"none\";\n changed = true;\n changes.push({\n category: \"database\",\n message: \"DB Setup set to 'None' (incompatible with MongoDB)\",\n });\n }\n }\n\n // Relational databases (sqlite, postgres, mysql) need Drizzle or Prisma\n if ([\"sqlite\", \"postgres\", \"mysql\"].includes(nextStack.database)) {\n if (nextStack.orm === \"none\") {\n nextStack.orm = \"drizzle\";\n changed = true;\n changes.push({\n category: \"database\",\n message: \"ORM set to 'Drizzle' (required for database)\",\n });\n }\n if (nextStack.orm === \"mongoose\") {\n nextStack.orm = \"drizzle\";\n changed = true;\n changes.push({\n category: \"database\",\n message: \"ORM set to 'Drizzle' (Mongoose only works with MongoDB)\",\n });\n }\n }\n\n // ORM selected but no database - select appropriate database\n if (nextStack.orm !== \"none\" && nextStack.database === \"none\") {\n if (nextStack.orm === \"mongoose\") {\n nextStack.database = \"mongodb\";\n changed = true;\n changes.push({\n category: \"orm\",\n message: \"Database set to 'MongoDB' (required for Mongoose)\",\n });\n } else {\n nextStack.database = \"sqlite\";\n changed = true;\n changes.push({ category: \"orm\", message: \"Database set to 'SQLite' (required for ORM)\" });\n }\n }\n\n // DB Setup constraints\n if (nextStack.dbSetup === \"turso\" && nextStack.database !== \"sqlite\") {\n nextStack.database = \"sqlite\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'SQLite' (required for Turso)\",\n });\n }\n if (nextStack.dbSetup === \"d1\") {\n if (nextStack.database !== \"sqlite\") {\n nextStack.database = \"sqlite\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'SQLite' (required for D1)\",\n });\n }\n if (nextStack.runtime !== \"workers\") {\n nextStack.runtime = \"workers\";\n nextStack.backend = \"hono\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Runtime set to 'Workers' with 'Hono' (required for D1)\",\n });\n }\n }\n if (nextStack.dbSetup === \"neon\" && nextStack.database !== \"postgres\") {\n nextStack.database = \"postgres\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'PostgreSQL' (required for Neon)\",\n });\n }\n if (nextStack.dbSetup === \"supabase\" && nextStack.database !== \"postgres\") {\n nextStack.database = \"postgres\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'PostgreSQL' (required for Supabase)\",\n });\n }\n if (nextStack.dbSetup === \"prisma-postgres\" && nextStack.database !== \"postgres\") {\n nextStack.database = \"postgres\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'PostgreSQL' (required for Prisma Postgres)\",\n });\n }\n if (nextStack.dbSetup === \"mongodb-atlas\" && nextStack.database !== \"mongodb\") {\n nextStack.database = \"mongodb\";\n if (nextStack.orm !== \"prisma\" && nextStack.orm !== \"mongoose\") {\n nextStack.orm = \"prisma\";\n }\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'MongoDB' (required for MongoDB Atlas)\",\n });\n }\n if (\n nextStack.dbSetup === \"planetscale\" &&\n nextStack.database !== \"postgres\" &&\n nextStack.database !== \"mysql\"\n ) {\n nextStack.database = \"postgres\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"Database set to 'PostgreSQL' (required for PlanetScale)\",\n });\n }\n if (nextStack.dbSetup === \"docker\") {\n if (nextStack.database === \"sqlite\") {\n nextStack.dbSetup = \"none\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message: \"DB Setup set to 'None' (SQLite doesn't need Docker)\",\n });\n }\n if (nextStack.runtime === \"workers\") {\n nextStack.dbSetup = \"d1\";\n changed = true;\n changes.push({\n category: \"dbSetup\",\n message:\n \"DB Setup set to 'D1' (Better-Fullstack doesn't support Docker setup with Workers)\",\n });\n }\n }\n }\n\n // ============================================\n // API CONSTRAINTS\n // ============================================\n\n if (nextStack.backend !== \"convex\" && nextStack.backend !== \"none\") {\n // Nuxt, Svelte, Solid, SolidStart require oRPC (not tRPC)\n const needsOrpc = nextStack.webFrontend.some((f) =>\n [\"nuxt\", \"svelte\", \"solid\", \"solid-start\"].includes(f),\n );\n if (needsOrpc && nextStack.api === \"trpc\") {\n nextStack.api = \"orpc\";\n changed = true;\n changes.push({ category: \"api\", message: \"API set to 'oRPC' (required for this frontend)\" });\n }\n\n // Astro with non-React integration requires oRPC\n if (\n nextStack.webFrontend.includes(\"astro\") &&\n nextStack.astroIntegration !== \"react\" &&\n nextStack.api === \"trpc\"\n ) {\n nextStack.api = \"orpc\";\n changed = true;\n changes.push({\n category: \"api\",\n message: \"API set to 'oRPC' (tRPC requires React integration with Astro)\",\n });\n }\n }\n\n // ============================================\n // ASTRO INTEGRATION CONSTRAINTS\n // ============================================\n\n // If Astro is not selected, reset astroIntegration\n if (!nextStack.webFrontend.includes(\"astro\") && nextStack.astroIntegration !== \"none\") {\n nextStack.astroIntegration = \"none\";\n changed = true;\n changes.push({\n category: \"astroIntegration\",\n message: \"Astro integration reset (Astro not selected)\",\n });\n }\n\n // If Astro is selected but no integration is set, default to react\n if (nextStack.webFrontend.includes(\"astro\") && nextStack.astroIntegration === \"none\") {\n // Only set default if api is trpc (which requires react)\n if (nextStack.api === \"trpc\") {\n nextStack.astroIntegration = \"react\";\n changed = true;\n changes.push({\n category: \"astroIntegration\",\n message: \"Astro integration set to 'React' (required for tRPC)\",\n });\n }\n }\n\n // ============================================\n // AUTH CONSTRAINTS\n // ============================================\n\n // Redis is a key-value store without SQL support — better-auth requires SQL tables\n if (nextStack.auth === \"better-auth\" && nextStack.database === \"redis\") {\n nextStack.auth = \"none\";\n changed = true;\n changes.push({\n category: \"auth\",\n message: \"Auth set to 'None' (Better Auth requires a SQL database, not Redis)\",\n });\n }\n\n const ormsWithoutBetterAuth = [\"typeorm\", \"sequelize\", \"mikroorm\"];\n if (nextStack.auth === \"better-auth\" && ormsWithoutBetterAuth.includes(nextStack.orm)) {\n nextStack.auth = \"none\";\n changed = true;\n changes.push({\n category: \"auth\",\n message: `Auth set to 'None' (${nextStack.orm} has no Better Auth adapter)`,\n });\n }\n\n const normalizedAuth = normalizeCapabilitySelection(\n \"auth\",\n {\n ecosystem: nextStack.ecosystem,\n backend: nextStack.backend,\n webFrontend: nextStack.webFrontend,\n nativeFrontend: nextStack.nativeFrontend,\n },\n nextStack.auth as Auth,\n );\n\n if (normalizedAuth.normalized && nextStack.auth !== normalizedAuth.value) {\n nextStack.auth = normalizedAuth.value;\n changed = true;\n changes.push({\n category: \"auth\",\n message: normalizedAuth.message ?? \"Auth set to 'None'\",\n });\n }\n\n // ============================================\n // PAYMENTS CONSTRAINTS\n // ============================================\n\n if (nextStack.payments === \"dodo\" && nextStack.webFrontend.includes(\"react-vite\")) {\n nextStack.payments = \"none\";\n changed = true;\n changes.push({\n category: \"payments\",\n message:\n \"Payments set to 'None' (Dodo Payments support is not available for React + Vite yet)\",\n });\n }\n\n if (nextStack.payments === \"polar\") {\n if (nextStack.auth !== \"better-auth\") {\n nextStack.payments = \"none\";\n changed = true;\n changes.push({\n category: \"payments\",\n message: \"Payments set to 'None' (Polar requires Better Auth)\",\n });\n }\n const hasWebFrontend = nextStack.webFrontend.some((f) => f !== \"none\");\n if (!hasWebFrontend) {\n nextStack.payments = \"none\";\n changed = true;\n changes.push({\n category: \"payments\",\n message: \"Payments set to 'None' (Polar requires web frontend)\",\n });\n }\n }\n\n // ============================================\n // EMAIL CONSTRAINTS\n // ============================================\n\n if (nextStack.email !== \"none\") {\n if (nextStack.backend === \"convex\") {\n nextStack.email = \"none\";\n changed = true;\n changes.push({\n category: \"email\",\n message: \"Email set to 'None' (incompatible with Convex)\",\n });\n }\n if (nextStack.backend === \"none\") {\n nextStack.email = \"none\";\n changed = true;\n changes.push({\n category: \"email\",\n message: \"Email set to 'None' (requires backend)\",\n });\n }\n }\n\n // ============================================\n // CSS FRAMEWORK & UI LIBRARY CONSTRAINTS\n // ============================================\n\n // If no web frontend, reset CSS framework and UI library to none\n if (!nextStack.webFrontend.some((f) => f !== \"none\")) {\n if (nextStack.cssFramework !== \"none\") {\n nextStack.cssFramework = \"none\";\n changed = true;\n changes.push({\n category: \"cssFramework\",\n message: \"CSS framework set to 'None' (no web frontend)\",\n });\n }\n if (nextStack.uiLibrary !== \"none\") {\n nextStack.uiLibrary = \"none\";\n changed = true;\n changes.push({\n category: \"uiLibrary\",\n message: \"UI library set to 'None' (no web frontend)\",\n });\n }\n }\n\n // UI libraries requiring Tailwind - auto-adjust CSS framework or clear UI library\n const requiresTailwind = [\"shadcn-ui\", \"daisyui\", \"nextui\"].includes(nextStack.uiLibrary);\n if (requiresTailwind && nextStack.cssFramework !== \"tailwind\") {\n // Auto-set Tailwind when selecting a Tailwind-dependent UI library\n nextStack.cssFramework = \"tailwind\";\n changed = true;\n changes.push({\n category: \"cssFramework\",\n message: `CSS framework set to 'Tailwind' (required by ${nextStack.uiLibrary})`,\n });\n }\n\n // React-only UI libraries - check frontend compatibility\n const reactOnlyLibraries = [\"shadcn-ui\", \"radix-ui\", \"chakra-ui\", \"nextui\"];\n const reactFrontends = [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\"];\n if (reactOnlyLibraries.includes(nextStack.uiLibrary)) {\n const hasReactFrontend = nextStack.webFrontend.some((f) => reactFrontends.includes(f));\n const hasAstroReact =\n nextStack.webFrontend.includes(\"astro\") && nextStack.astroIntegration === \"react\";\n if (!hasReactFrontend && !hasAstroReact && nextStack.webFrontend.some((f) => f !== \"none\")) {\n // Reset to a compatible UI library (daisyui works with all frontends)\n nextStack.uiLibrary = \"daisyui\";\n changed = true;\n changes.push({\n category: \"uiLibrary\",\n message:\n \"UI library changed to 'daisyUI' (React-only library incompatible with this frontend)\",\n });\n }\n }\n\n // Headless UI requires React or Vue\n if (nextStack.uiLibrary === \"headless-ui\") {\n const hasReactFrontend = nextStack.webFrontend.some((f) => reactFrontends.includes(f));\n const hasVueFrontend = nextStack.webFrontend.includes(\"nuxt\");\n const hasAstroReactOrVue =\n nextStack.webFrontend.includes(\"astro\") &&\n [\"react\", \"vue\"].includes(nextStack.astroIntegration);\n if (!hasReactFrontend && !hasVueFrontend && !hasAstroReactOrVue) {\n nextStack.uiLibrary = \"daisyui\";\n changed = true;\n changes.push({\n category: \"uiLibrary\",\n message: \"UI library changed to 'daisyUI' (Headless UI requires React or Vue)\",\n });\n }\n }\n\n // Park UI requires React, Vue, or Solid\n if (nextStack.uiLibrary === \"park-ui\") {\n const hasReactFrontend = nextStack.webFrontend.some((f) => reactFrontends.includes(f));\n const hasVueFrontend = nextStack.webFrontend.includes(\"nuxt\");\n const hasSolidFrontend = nextStack.webFrontend.includes(\"solid\");\n const hasAstroCompatible =\n nextStack.webFrontend.includes(\"astro\") &&\n [\"react\", \"vue\", \"solid\"].includes(nextStack.astroIntegration);\n if (\n !hasReactFrontend &&\n !hasVueFrontend &&\n !hasSolidFrontend &&\n !hasAstroCompatible &&\n nextStack.webFrontend.some((f) => f !== \"none\")\n ) {\n nextStack.uiLibrary = \"daisyui\";\n changed = true;\n changes.push({\n category: \"uiLibrary\",\n message: \"UI library changed to 'daisyUI' (Park UI requires React, Vue, or Solid)\",\n });\n }\n }\n\n // ============================================\n // APP PLATFORMS CONSTRAINTS\n // ============================================\n\n const pwaCompat = hasPWACompatibleFrontend(nextStack.webFrontend);\n const tauriCompat = hasTauriCompatibleFrontend(nextStack.webFrontend);\n\n if (!pwaCompat && nextStack.appPlatforms.includes(\"pwa\")) {\n nextStack.appPlatforms = nextStack.appPlatforms.filter((a) => a !== \"pwa\");\n changed = true;\n changes.push({\n category: \"appPlatforms\",\n message: \"PWA removed (requires compatible frontend)\",\n });\n }\n if (!tauriCompat && nextStack.appPlatforms.includes(\"tauri\")) {\n nextStack.appPlatforms = nextStack.appPlatforms.filter((a) => a !== \"tauri\");\n changed = true;\n changes.push({\n category: \"appPlatforms\",\n message: \"Tauri removed (requires compatible frontend)\",\n });\n }\n\n // ============================================\n // EXAMPLES CONSTRAINTS\n // ============================================\n\n // AI example constraints\n if (nextStack.examples.includes(\"ai\")) {\n // Solid/SolidStart frontend is incompatible with AI example\n if (nextStack.webFrontend.includes(\"solid\") || nextStack.webFrontend.includes(\"solid-start\")) {\n nextStack.examples = nextStack.examples.filter((e) => e !== \"ai\");\n if (nextStack.examples.length === 0) nextStack.examples = [\"none\"];\n changed = true;\n changes.push({\n category: \"examples\",\n message: \"AI removed (not compatible with Solid frontend)\",\n });\n }\n // Convex AI only supports React-based frontends (not Svelte/Nuxt)\n if (nextStack.backend === \"convex\") {\n const hasIncompatibleFrontend = nextStack.webFrontend.some((f) =>\n [\"svelte\", \"nuxt\"].includes(f),\n );\n if (hasIncompatibleFrontend) {\n nextStack.examples = nextStack.examples.filter((e) => e !== \"ai\");\n if (nextStack.examples.length === 0) nextStack.examples = [\"none\"];\n changed = true;\n changes.push({\n category: \"examples\",\n message:\n \"AI removed (Convex AI only supports React-based frontends including React + Vite)\",\n });\n }\n }\n }\n\n // Chat SDK example constraints (framework-specific profiles in v1)\n if (nextStack.examples.includes(\"chat-sdk\")) {\n const hasReactVite = nextStack.webFrontend.includes(\"react-vite\");\n\n if (hasReactVite || !isChatSdkExampleSupported(nextStack)) {\n nextStack.examples = nextStack.examples.filter((e) => e !== \"chat-sdk\");\n if (nextStack.examples.length === 0) nextStack.examples = [\"none\"];\n changed = true;\n\n let reason = \"unsupported stack\";\n if (hasReactVite) {\n reason = \"React + Vite support is not available yet\";\n } else if (nextStack.ecosystem !== \"typescript\") {\n reason = \"TypeScript ecosystem only\";\n } else if (nextStack.backend === \"convex\") {\n reason = \"Convex backend not supported in v1\";\n } else if (nextStack.backend === \"none\") {\n reason = \"requires a backend\";\n } else if (nextStack.backend === \"hono\" && nextStack.runtime !== \"node\") {\n reason = \"Hono profile requires Node runtime\";\n } else if (nextStack.backend.startsWith(\"self-\")) {\n reason = \"self backend only supports Next.js, TanStack Start, or Nuxt in v1\";\n }\n\n changes.push({\n category: \"examples\",\n message: `Chat SDK removed (${reason})`,\n });\n } else if (requiresChatSdkVercelAI(nextStack) && nextStack.aiSdk !== \"vercel-ai\") {\n nextStack.aiSdk = \"vercel-ai\";\n changed = true;\n changes.push({\n category: \"ai\",\n message: \"AI SDK set to 'Vercel AI SDK' (required by Chat SDK Nuxt/Hono profile in v1)\",\n });\n }\n }\n\n // ============================================\n // FRESH FRONTEND CONSTRAINTS\n // Fresh is Preact-based and incompatible with React-specific packages\n // ============================================\n\n const isFresh = nextStack.webFrontend.includes(\"fresh\");\n\n if (isFresh) {\n // TanStack Form has no Preact adapter\n if (nextStack.forms === \"tanstack-form\") {\n nextStack.forms = \"none\";\n changed = true;\n changes.push({\n category: \"forms\",\n message: \"Forms set to 'None' (TanStack Form has no Preact adapter)\",\n });\n }\n\n // State management libraries that require React bindings\n const reactOnlyStateManagement = [\"nanostores\", \"xstate\", \"tanstack-store\"];\n if (reactOnlyStateManagement.includes(nextStack.stateManagement)) {\n const oldValue = nextStack.stateManagement;\n nextStack.stateManagement = \"none\";\n changed = true;\n changes.push({\n category: \"stateManagement\",\n message: `State management set to 'None' (${oldValue} requires React bindings)`,\n });\n }\n\n // Lottie uses lottie-react which requires React\n if (nextStack.animation === \"lottie\") {\n nextStack.animation = \"none\";\n changed = true;\n changes.push({\n category: \"animation\",\n message: \"Animation set to 'None' (Lottie requires lottie-react)\",\n });\n }\n }\n\n // ============================================\n // JAVA ECOSYSTEM CONSTRAINTS\n // ============================================\n\n if (nextStack.ecosystem === \"java\") {\n if (nextStack.javaBuildTool === \"none\") {\n if (nextStack.javaWebFramework !== \"none\") {\n nextStack.javaWebFramework = \"none\";\n changed = true;\n changes.push({\n category: \"javaBuildTool\",\n message: \"Java web framework set to 'None' (source-only Java does not use a framework)\",\n });\n }\n\n if (nextStack.javaTestingLibraries.some((library) => library !== \"none\")) {\n nextStack.javaTestingLibraries = [];\n changed = true;\n changes.push({\n category: \"javaBuildTool\",\n message: \"Java testing libraries cleared (a build tool is required for test dependencies)\",\n });\n }\n }\n\n if (nextStack.javaWebFramework !== \"spring-boot\" || nextStack.javaBuildTool === \"none\") {\n if (nextStack.javaOrm !== \"none\") {\n nextStack.javaOrm = \"none\";\n changed = true;\n changes.push({\n category: \"javaWebFramework\",\n message: \"Java ORM set to 'None' (current scaffold only supports it with Spring Boot)\",\n });\n }\n\n if (nextStack.javaAuth !== \"none\") {\n nextStack.javaAuth = \"none\";\n changed = true;\n changes.push({\n category: \"javaWebFramework\",\n message: \"Java auth set to 'None' (current scaffold only supports it with Spring Boot)\",\n });\n }\n\n if (nextStack.javaLibraries.some((library) => library !== \"none\")) {\n nextStack.javaLibraries = [];\n changed = true;\n changes.push({\n category: \"javaWebFramework\",\n message: \"Java libraries cleared (Spring libraries require Spring Boot)\",\n });\n }\n }\n\n if (nextStack.javaWebFramework === \"spring-boot\" && nextStack.javaBuildTool !== \"none\") {\n if (nextStack.javaOrm !== \"spring-data-jpa\") {\n const filteredLibraries = nextStack.javaLibraries.filter(\n (library) => library !== \"flyway\" && library !== \"liquibase\",\n );\n if (filteredLibraries.length !== nextStack.javaLibraries.length) {\n nextStack.javaLibraries = filteredLibraries;\n changed = true;\n changes.push({\n category: \"javaOrm\",\n message:\n \"Java migration libraries cleared (Flyway and Liquibase require Spring Data JPA)\",\n });\n }\n }\n\n if (\n nextStack.javaLibraries.includes(\"flyway\") &&\n nextStack.javaLibraries.includes(\"liquibase\")\n ) {\n nextStack.javaLibraries = nextStack.javaLibraries.filter(\n (library) => library !== \"liquibase\",\n );\n changed = true;\n changes.push({\n category: \"javaLibraries\",\n message: \"Liquibase cleared (Flyway and Liquibase cannot be combined)\",\n });\n }\n }\n }\n\n // ============================================\n // DEPLOYMENT CONSTRAINTS\n // ============================================\n\n // Web deploy requires web frontend\n if (nextStack.webDeploy !== \"none\" && !nextStack.webFrontend.some((f) => f !== \"none\")) {\n nextStack.webDeploy = \"none\";\n changed = true;\n changes.push({ category: \"webDeploy\", message: \"Web deploy set to 'None' (no web frontend)\" });\n }\n\n // Server deploy constraints\n if (nextStack.serverDeploy === \"cloudflare\") {\n if (nextStack.runtime !== \"workers\" || nextStack.backend !== \"hono\") {\n nextStack.serverDeploy = \"none\";\n changed = true;\n changes.push({\n category: \"serverDeploy\",\n message: \"Server deploy set to 'None' (Cloudflare requires Workers + Hono)\",\n });\n }\n }\n\n if (\n nextStack.serverDeploy !== \"none\" &&\n [\n \"none\",\n \"convex\",\n \"self-next\",\n \"self-tanstack-start\",\n \"self-astro\",\n \"self-nuxt\",\n \"self-svelte\",\n \"self-solid-start\",\n ].includes(nextStack.backend)\n ) {\n nextStack.serverDeploy = \"none\";\n changed = true;\n changes.push({\n category: \"serverDeploy\",\n message: \"Server deploy set to 'None' (not needed for this backend)\",\n });\n }\n\n return {\n adjustedStack: changed ? nextStack : null,\n notes,\n changes,\n };\n};\n\n/**\n * Returns a reason why an option is disabled, or null if it's enabled.\n *\n * PHILOSOPHY: Only disable options that are TRULY incompatible.\n * - Don't create circular dependencies\n * - Allow users to select options that will trigger auto-adjustments\n * - Follow CLI behavior: filter options based on UPSTREAM selections only\n */\nexport const getDisabledReason = (\n currentStack: CompatibilityInput,\n category: CompatibilityCategory,\n optionId: string,\n): string | null => {\n // ============================================\n // CONVEX BACKEND - locks down many options\n // ============================================\n if (currentStack.backend === \"convex\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"Convex provides its own runtime\";\n }\n if (category === \"database\" && optionId !== \"none\") {\n return \"Convex provides its own database\";\n }\n if (category === \"orm\" && optionId !== \"none\") {\n return \"Convex has built-in data access\";\n }\n if (category === \"api\" && optionId !== \"none\") {\n return \"Convex provides its own API layer\";\n }\n if (category === \"dbSetup\" && optionId !== \"none\") {\n return \"Convex handles database setup\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Convex has its own deployment\";\n }\n if (category === \"search\" && optionId !== \"none\") {\n return \"Search requires a standalone backend\";\n }\n if (category === \"fileStorage\" && optionId !== \"none\") {\n return \"File storage requires a standalone backend\";\n }\n if (category === \"webFrontend\" && optionId === \"solid\") {\n return \"In Better-Fullstack, the Convex backend is currently not available with Solid\";\n }\n if (category === \"webFrontend\" && optionId === \"astro\") {\n return \"In Better-Fullstack, the Convex backend is currently not available with Astro\";\n }\n if (category === \"examples\" && optionId === \"ai\") {\n const hasIncompatibleFrontend = currentStack.webFrontend.some((f) =>\n [\"solid\", \"svelte\", \"nuxt\"].includes(f),\n );\n if (hasIncompatibleFrontend) {\n const frontendName = currentStack.webFrontend.find((f) =>\n [\"solid\", \"svelte\", \"nuxt\"].includes(f),\n );\n return `Convex AI example only supports React-based frontends including React + Vite (not ${frontendName})`;\n }\n }\n }\n\n // ============================================\n // NO BACKEND - locks down backend-dependent options\n // ============================================\n if (currentStack.backend === \"none\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"database\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"orm\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"api\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"dbSetup\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"payments\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"search\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"fileStorage\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n if (category === \"examples\" && optionId !== \"none\") {\n return \"No backend selected\";\n }\n }\n\n // ============================================\n // FULLSTACK BACKEND CONSTRAINTS\n // ============================================\n if (currentStack.backend === \"self-next\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"Next.js fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"next\" && optionId !== \"none\") {\n return \"Next.js fullstack requires Next.js frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n if (currentStack.backend === \"self-tanstack-start\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"TanStack Start fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"tanstack-start\" && optionId !== \"none\") {\n return \"TanStack Start fullstack requires TanStack Start frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n if (currentStack.backend === \"self-astro\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"Astro fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"astro\" && optionId !== \"none\") {\n return \"Astro fullstack requires Astro frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n if (currentStack.backend === \"self-nuxt\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"Nuxt fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"nuxt\" && optionId !== \"none\") {\n return \"Nuxt fullstack requires Nuxt frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n if (currentStack.backend === \"self-svelte\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"SvelteKit fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"svelte\" && optionId !== \"none\") {\n return \"SvelteKit fullstack requires SvelteKit frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n if (currentStack.backend === \"self-solid-start\") {\n if (category === \"runtime\" && optionId !== \"none\") {\n return \"SolidStart fullstack uses built-in API routes\";\n }\n if (category === \"webFrontend\" && optionId !== \"solid-start\" && optionId !== \"none\") {\n return \"SolidStart fullstack requires SolidStart frontend\";\n }\n if (category === \"serverDeploy\" && optionId !== \"none\") {\n return \"Fullstack uses frontend deployment\";\n }\n }\n\n // ============================================\n // BACKEND SELECTION CONSTRAINTS\n // ============================================\n if (category === \"backend\") {\n if (optionId === \"self-next\" && !currentStack.webFrontend.includes(\"next\")) {\n return \"Requires Next.js frontend\";\n }\n if (\n optionId === \"self-tanstack-start\" &&\n !currentStack.webFrontend.includes(\"tanstack-start\")\n ) {\n return \"Requires TanStack Start frontend\";\n }\n if (optionId === \"self-astro\" && !currentStack.webFrontend.includes(\"astro\")) {\n return \"Requires Astro frontend\";\n }\n if (optionId === \"self-nuxt\" && !currentStack.webFrontend.includes(\"nuxt\")) {\n return \"Requires Nuxt frontend\";\n }\n if (optionId === \"self-svelte\" && !currentStack.webFrontend.includes(\"svelte\")) {\n return \"Requires SvelteKit frontend\";\n }\n if (optionId === \"self-solid-start\" && !currentStack.webFrontend.includes(\"solid-start\")) {\n return \"Requires SolidStart frontend\";\n }\n if (optionId === \"convex\" && currentStack.webFrontend.includes(\"solid\")) {\n return \"In Better-Fullstack, Convex is currently not available with Solid\";\n }\n if (optionId === \"convex\" && currentStack.webFrontend.includes(\"solid-start\")) {\n return \"In Better-Fullstack, Convex is currently not available with SolidStart\";\n }\n if (optionId === \"convex\" && currentStack.webFrontend.includes(\"astro\")) {\n return \"In Better-Fullstack, Convex is currently not available with Astro\";\n }\n // Workers runtime only works with Hono backend\n if (currentStack.runtime === \"workers\" && optionId !== \"hono\" && optionId !== \"none\") {\n return \"In Better-Fullstack, Workers runtime is currently supported only with Hono\";\n }\n }\n\n // ============================================\n // RUNTIME CONSTRAINTS\n // ============================================\n if (category === \"runtime\") {\n if (optionId === \"workers\" && currentStack.backend !== \"hono\") {\n return \"In Better-Fullstack, Workers runtime currently requires the Hono backend\";\n }\n if (optionId === \"none\") {\n const allowedBackends = [\n \"convex\",\n \"none\",\n \"self-next\",\n \"self-tanstack-start\",\n \"self-astro\",\n \"self-nuxt\",\n \"self-svelte\",\n \"self-solid-start\",\n ];\n if (!allowedBackends.includes(currentStack.backend)) {\n return \"Runtime 'None' only for Convex or fullstack backends\";\n }\n }\n }\n\n // ============================================\n // DATABASE CONSTRAINTS\n // ============================================\n if (category === \"database\") {\n if (optionId === \"mongodb\" && currentStack.runtime === \"workers\") {\n return \"In Better-Fullstack, MongoDB is currently not available with Workers runtime\";\n }\n // Allow all databases when ORM is none - system will auto-select ORM\n }\n\n // ============================================\n // ORM CONSTRAINTS\n // ============================================\n if (category === \"orm\") {\n if (optionId === \"mongoose\") {\n if (currentStack.runtime === \"workers\") {\n return \"Mongoose requires MongoDB, and Better-Fullstack currently doesn't support MongoDB with Workers runtime\";\n }\n // Only block if a non-MongoDB database is EXPLICITLY selected\n if (currentStack.database !== \"none\" && currentStack.database !== \"mongodb\") {\n return \"Mongoose only works with MongoDB\";\n }\n // Allow when database is \"none\" - system will auto-select MongoDB\n }\n if (optionId === \"drizzle\" && currentStack.database === \"mongodb\") {\n return \"Drizzle does not support MongoDB\";\n }\n if (optionId === \"none\" && currentStack.database !== \"none\") {\n return \"Database requires an ORM\";\n }\n }\n\n // ============================================\n // DB SETUP CONSTRAINTS\n // ============================================\n if (category === \"dbSetup\" && optionId !== \"none\") {\n if (currentStack.database === \"none\") {\n return \"Select a database first\";\n }\n\n // Database-specific setups\n if (optionId === \"turso\" && currentStack.database !== \"sqlite\") {\n return \"Turso requires SQLite\";\n }\n if (optionId === \"d1\") {\n if (currentStack.database !== \"sqlite\") return \"D1 requires SQLite\";\n if (currentStack.runtime !== \"workers\") return \"D1 requires Workers runtime\";\n }\n if (optionId === \"neon\" && currentStack.database !== \"postgres\") {\n return \"Neon requires PostgreSQL\";\n }\n if (optionId === \"supabase\" && currentStack.database !== \"postgres\") {\n return \"Supabase requires PostgreSQL\";\n }\n if (optionId === \"prisma-postgres\" && currentStack.database !== \"postgres\") {\n return \"Prisma Postgres requires PostgreSQL\";\n }\n if (optionId === \"mongodb-atlas\" && currentStack.database !== \"mongodb\") {\n return \"MongoDB Atlas requires MongoDB\";\n }\n if (\n optionId === \"planetscale\" &&\n currentStack.database !== \"postgres\" &&\n currentStack.database !== \"mysql\"\n ) {\n return \"PlanetScale requires PostgreSQL or MySQL\";\n }\n if (optionId === \"docker\") {\n if (currentStack.database === \"sqlite\") return \"SQLite doesn't need Docker\";\n if (currentStack.runtime === \"workers\") return \"Docker is incompatible with Workers\";\n }\n }\n\n // ============================================\n // API CONSTRAINTS\n // ============================================\n if (category === \"api\" && optionId === \"trpc\") {\n const needsOrpc = currentStack.webFrontend.some((f) =>\n [\"nuxt\", \"svelte\", \"solid\", \"solid-start\"].includes(f),\n );\n if (needsOrpc) {\n const frontendName = currentStack.webFrontend.find((f) =>\n [\"nuxt\", \"svelte\", \"solid\", \"solid-start\"].includes(f),\n );\n return `${frontendName} requires oRPC, not tRPC`;\n }\n // Astro with non-React integration requires oRPC\n if (\n currentStack.webFrontend.includes(\"astro\") &&\n currentStack.astroIntegration !== \"react\" &&\n currentStack.astroIntegration !== \"none\"\n ) {\n return `Astro with ${currentStack.astroIntegration} integration requires oRPC, not tRPC`;\n }\n }\n\n // ============================================\n // ASTRO INTEGRATION CONSTRAINTS\n // ============================================\n if (category === \"astroIntegration\") {\n if (!currentStack.webFrontend.includes(\"astro\") && optionId !== \"none\") {\n return \"Astro integration requires Astro frontend\";\n }\n // tRPC requires React integration\n if (currentStack.api === \"trpc\" && optionId !== \"react\" && optionId !== \"none\") {\n return \"tRPC requires React integration with Astro\";\n }\n }\n\n // ============================================\n // AUTH CONSTRAINTS\n // ============================================\n if (category === \"auth\") {\n if (optionId === \"better-auth\" && currentStack.database === \"redis\") {\n return \"Better Auth requires a SQL database (not Redis)\";\n }\n const ormsWithoutBetterAuth = [\"typeorm\", \"sequelize\", \"mikroorm\"];\n if (optionId === \"better-auth\" && ormsWithoutBetterAuth.includes(currentStack.orm)) {\n return `Better Auth has no ${currentStack.orm} adapter`;\n }\n return getCapabilityDisabledReason(\n \"auth\",\n {\n ecosystem: currentStack.ecosystem,\n backend: currentStack.backend,\n webFrontend: currentStack.webFrontend,\n nativeFrontend: currentStack.nativeFrontend,\n },\n optionId as Auth,\n );\n }\n\n // ============================================\n // PAYMENTS CONSTRAINTS\n // ============================================\n if (category === \"payments\" && optionId === \"polar\") {\n if (currentStack.auth !== \"better-auth\") {\n return \"Polar requires Better Auth\";\n }\n if (!currentStack.webFrontend.some((f) => f !== \"none\")) {\n return \"Polar requires a web frontend\";\n }\n }\n\n if (\n category === \"payments\" &&\n optionId !== \"none\" &&\n currentStack.webFrontend.includes(\"react-vite\") &&\n optionId === \"dodo\"\n ) {\n return \"Dodo Payments are not yet supported for React + Vite projects\";\n }\n\n // ============================================\n // CMS CONSTRAINTS\n // ============================================\n if (category === \"cms\" && optionId === \"payload\") {\n if (!currentStack.webFrontend.includes(\"next\")) {\n return \"Payload CMS v3 requires Next.js\";\n }\n }\n\n // ============================================\n // EMAIL CONSTRAINTS\n // ============================================\n if (category === \"email\" && optionId !== \"none\") {\n if (currentStack.backend === \"convex\") {\n return \"Email integration is not available with Convex backend\";\n }\n if (currentStack.backend === \"none\") {\n return \"Email integration requires a backend\";\n }\n }\n\n // ============================================\n // AI CONSTRAINTS\n // ============================================\n if (category === \"ai\" && requiresChatSdkVercelAI(currentStack) && optionId !== \"vercel-ai\") {\n return \"Chat SDK example (Nuxt/Hono profile) requires Vercel AI SDK in v1\";\n }\n\n // TanStack AI: React and Solid only (client adapter). Server-side core works anywhere.\n if (category === \"ai\" && optionId === \"tanstack-ai\") {\n const compatibleFrontends = [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"redwood\",\n \"solid\", \"solid-start\",\n ];\n const hasCompatible = currentStack.webFrontend.some((f) => compatibleFrontends.includes(f));\n\n if (!hasCompatible) {\n return \"TanStack AI requires React or Solid frontend (no Vue/Svelte/Angular adapter yet)\";\n }\n }\n\n // ============================================\n // APP PLATFORMS CONSTRAINTS\n // ============================================\n if (category === \"appPlatforms\") {\n if (optionId === \"pwa\" && !hasPWACompatibleFrontend(currentStack.webFrontend)) {\n return \"PWA requires TanStack Router, React Router, Solid, Next.js, or Astro\";\n }\n if (optionId === \"tauri\" && !hasTauriCompatibleFrontend(currentStack.webFrontend)) {\n return \"Tauri requires TanStack Router, React Router, Nuxt, Svelte, Solid, Next.js, or Astro\";\n }\n if (optionId === \"docker-compose\") {\n if (currentStack.backend === \"convex\") {\n return \"Docker Compose is not compatible with Convex backend (managed service)\";\n }\n if (currentStack.runtime === \"workers\") {\n return \"Docker Compose is not compatible with Cloudflare Workers runtime\";\n }\n if (\n currentStack.ecosystem === \"typescript\" &&\n !hasDockerComposeCompatibleFrontend(currentStack.webFrontend)\n ) {\n return \"Docker Compose currently supports Next.js, TanStack Router, React Router, React Vite, Solid, or Astro\";\n }\n if (\n currentStack.ecosystem === \"typescript\" &&\n currentStack.backend === \"self\" &&\n !currentStack.webFrontend.includes(\"next\")\n ) {\n return \"Docker Compose self-backend support currently requires Next.js\";\n }\n if (currentStack.ecosystem === \"rust\" && currentStack.rustFrontend !== \"none\") {\n return \"Docker Compose for Rust currently supports server-only projects\";\n }\n if (currentStack.ecosystem === \"java\" && currentStack.javaWebFramework !== \"spring-boot\") {\n return \"Docker Compose for Java currently requires Spring Boot\";\n }\n if (\n currentStack.ecosystem === \"python\" &&\n currentStack.database !== \"none\" &&\n currentStack.database !== \"sqlite\" &&\n currentStack.database !== \"postgres\"\n ) {\n return \"Docker Compose for Python ORM projects currently supports SQLite defaults or Postgres\";\n }\n }\n if (optionId === \"tanstack-query\" && currentStack.api !== \"none\") {\n return \"TanStack Query is already included via your API layer\";\n }\n // TanStack addons with Astro require a UI framework integration\n const tanstackAddons = [\"tanstack-query\", \"tanstack-table\", \"tanstack-virtual\", \"tanstack-db\", \"tanstack-pacer\"];\n if (\n tanstackAddons.includes(optionId) &&\n currentStack.webFrontend.length === 1 &&\n currentStack.webFrontend[0] === \"astro\" &&\n (!currentStack.astroIntegration || currentStack.astroIntegration === \"none\")\n ) {\n return \"TanStack libraries with Astro require a UI framework integration (React, Vue, Svelte, or Solid)\";\n }\n }\n\n // ============================================\n // EXAMPLES CONSTRAINTS\n // ============================================\n if (category === \"examples\") {\n if (optionId === \"ai\") {\n if (\n currentStack.webFrontend.includes(\"solid\") ||\n currentStack.webFrontend.includes(\"solid-start\")\n ) {\n return \"AI example not compatible with Solid frontend\";\n }\n if (currentStack.backend === \"convex\") {\n const hasIncompatibleFrontend = currentStack.webFrontend.some((f) =>\n [\"svelte\", \"nuxt\"].includes(f),\n );\n if (hasIncompatibleFrontend) {\n const frontendName = currentStack.webFrontend.find((f) => [\"svelte\", \"nuxt\"].includes(f));\n return `Convex AI example only supports React-based frontends including React + Vite (not ${frontendName})`;\n }\n }\n }\n\n if (optionId === \"chat-sdk\") {\n if (currentStack.webFrontend.includes(\"react-vite\")) {\n return \"Chat SDK example is not yet supported for React + Vite projects\";\n }\n if (currentStack.ecosystem !== \"typescript\") {\n return \"Chat SDK example is currently available only for TypeScript stacks\";\n }\n if (currentStack.backend === \"convex\") {\n return \"Chat SDK example is not supported with Convex backend in v1\";\n }\n if (\n currentStack.backend === \"self-astro\" ||\n currentStack.backend === \"self-svelte\" ||\n currentStack.backend === \"self-solid-start\"\n ) {\n return \"Chat SDK self backend profile supports Next.js, TanStack Start, or Nuxt in v1\";\n }\n if (currentStack.backend === \"self-next\" || currentStack.backend === \"self-tanstack-start\") {\n return null;\n }\n if (currentStack.backend === \"self-nuxt\") {\n return null;\n }\n if (currentStack.backend === \"hono\") {\n if (currentStack.runtime !== \"node\") {\n return \"Chat SDK Hono profile requires Node runtime in v1\";\n }\n return null;\n }\n if (currentStack.backend.startsWith(\"self-\")) {\n return \"Chat SDK self backend profile supports Next.js, TanStack Start, or Nuxt in v1\";\n }\n if (currentStack.backend !== \"none\") {\n return \"Chat SDK example is only supported for self (Next/TanStack Start/Nuxt) or Hono+Node in v1\";\n }\n }\n }\n\n // ============================================\n // FRESH FRONTEND CONSTRAINTS\n // Fresh is Preact-based and incompatible with React-specific packages\n // ============================================\n const isFresh = currentStack.webFrontend.includes(\"fresh\");\n\n // Forms: TanStack Form has no Preact adapter\n if (category === \"forms\" && optionId === \"tanstack-form\" && isFresh) {\n return \"TanStack Form has no Preact adapter (Fresh uses Preact)\";\n }\n\n // State Management: These all require React bindings\n if (category === \"stateManagement\" && isFresh) {\n if (optionId === \"nanostores\") {\n return \"Nanostores requires @nanostores/react (no Preact support)\";\n }\n if (optionId === \"xstate\") {\n return \"XState requires @xstate/react (no Preact support)\";\n }\n if (optionId === \"tanstack-store\") {\n return \"TanStack Store requires @tanstack/react-store (no Preact support)\";\n }\n }\n\n // Animation: Lottie uses lottie-react which requires React\n if (category === \"animation\" && optionId === \"lottie\" && isFresh) {\n return \"Lottie uses lottie-react which requires React (not Preact)\";\n }\n\n // ============================================\n // CSS FRAMEWORK CONSTRAINTS\n // ============================================\n if (category === \"cssFramework\") {\n // CSS frameworks only apply to web frontends\n if (!currentStack.webFrontend.some((f) => f !== \"none\")) {\n if (optionId !== \"none\") {\n return \"CSS framework requires a web frontend\";\n }\n }\n // Some UI libraries require Tailwind\n const requiresTailwind = [\"shadcn-ui\", \"daisyui\", \"nextui\"].includes(currentStack.uiLibrary);\n if (requiresTailwind && optionId !== \"tailwind\") {\n return `${currentStack.uiLibrary === \"shadcn-ui\" ? \"shadcn/ui\" : currentStack.uiLibrary === \"daisyui\" ? \"daisyUI\" : \"NextUI\"} requires Tailwind CSS`;\n }\n }\n\n // ============================================\n // UI LIBRARY CONSTRAINTS\n // ============================================\n if (category === \"uiLibrary\") {\n // UI libraries only apply to web frontends\n if (!currentStack.webFrontend.some((f) => f !== \"none\")) {\n if (optionId !== \"none\") {\n return \"UI library requires a web frontend\";\n }\n }\n\n // React-only UI libraries\n const reactOnlyLibraries = [\"shadcn-ui\", \"radix-ui\", \"chakra-ui\", \"nextui\"];\n const reactFrontends = [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\"];\n\n if (reactOnlyLibraries.includes(optionId)) {\n const hasReactFrontend = currentStack.webFrontend.some((f) => reactFrontends.includes(f));\n // Astro with React integration also works\n const hasAstroReact =\n currentStack.webFrontend.includes(\"astro\") && currentStack.astroIntegration === \"react\";\n if (!hasReactFrontend && !hasAstroReact) {\n const libraryName =\n optionId === \"shadcn-ui\"\n ? \"shadcn/ui\"\n : optionId === \"radix-ui\"\n ? \"Radix UI\"\n : optionId === \"chakra-ui\"\n ? \"Chakra UI\"\n : \"NextUI\";\n return `${libraryName} requires a React-based frontend`;\n }\n }\n\n // Headless UI works with React and Vue\n if (optionId === \"headless-ui\") {\n const hasReactFrontend = currentStack.webFrontend.some((f) => reactFrontends.includes(f));\n const hasVueFrontend = currentStack.webFrontend.includes(\"nuxt\");\n const hasAstroReactOrVue =\n currentStack.webFrontend.includes(\"astro\") &&\n [\"react\", \"vue\"].includes(currentStack.astroIntegration);\n if (!hasReactFrontend && !hasVueFrontend && !hasAstroReactOrVue) {\n return \"Headless UI requires React or Vue frontend\";\n }\n }\n\n // Park UI works with React, Vue, and Solid\n if (optionId === \"park-ui\") {\n const hasReactFrontend = currentStack.webFrontend.some((f) => reactFrontends.includes(f));\n const hasVueFrontend = currentStack.webFrontend.includes(\"nuxt\");\n const hasSolidFrontend =\n currentStack.webFrontend.includes(\"solid\") ||\n currentStack.webFrontend.includes(\"solid-start\");\n const hasAstroCompatible =\n currentStack.webFrontend.includes(\"astro\") &&\n [\"react\", \"vue\", \"solid\"].includes(currentStack.astroIntegration);\n if (!hasReactFrontend && !hasVueFrontend && !hasSolidFrontend && !hasAstroCompatible) {\n return \"Park UI requires React, Vue, or Solid frontend\";\n }\n // Park UI requires a CSS framework (not \"none\")\n if (currentStack.cssFramework === \"none\") {\n return \"Park UI requires a CSS framework\";\n }\n }\n\n // UI libraries requiring Tailwind\n if ([\"shadcn-ui\", \"daisyui\", \"nextui\"].includes(optionId)) {\n if (currentStack.cssFramework !== \"tailwind\") {\n const libraryName =\n optionId === \"shadcn-ui\" ? \"shadcn/ui\" : optionId === \"daisyui\" ? \"daisyUI\" : \"NextUI\";\n return `${libraryName} requires Tailwind CSS`;\n }\n }\n }\n\n // ============================================\n // DEPLOYMENT CONSTRAINTS\n // ============================================\n if (category === \"webDeploy\" && optionId !== \"none\") {\n if (!currentStack.webFrontend.some((f) => f !== \"none\")) {\n return \"Web deployment requires a web frontend\";\n }\n if (optionId === \"vercel\") {\n // These frontends don't have Vercel templates\n if (currentStack.webFrontend.some(f => [\"redwood\", \"fresh\"].includes(f))) {\n return \"Vercel deployment is not available for Redwood/Fresh (they have their own deploy systems)\";\n }\n }\n }\n\n if (category === \"serverDeploy\") {\n if (optionId === \"cloudflare\") {\n if (currentStack.runtime !== \"workers\") {\n return \"In Better-Fullstack, Cloudflare server deploy currently requires Workers runtime\";\n }\n if (currentStack.backend !== \"hono\") {\n return \"In Better-Fullstack, Cloudflare server deploy is currently supported only with Hono\";\n }\n }\n if (optionId === \"vercel\") {\n // Vercel serverless can't host persistent-process backends\n if ([\"nestjs\", \"adonisjs\"].includes(currentStack.backend)) {\n return \"Vercel serverless functions are incompatible with persistent-process backends like NestJS/AdonisJS. Use Fly.io or Railway instead.\";\n }\n // Encore has its own deployment\n if (currentStack.backend === \"encore\") {\n return \"Encore manages its own deployment infrastructure\";\n }\n }\n if (optionId !== \"none\") {\n const noServerDeploy = [\n \"none\",\n \"convex\",\n \"self-next\",\n \"self-tanstack-start\",\n \"self-astro\",\n \"self-nuxt\",\n \"self-svelte\",\n \"self-solid-start\",\n ];\n if (noServerDeploy.includes(currentStack.backend)) {\n return \"Server deployment not needed for this backend\";\n }\n }\n if (optionId === \"none\" && currentStack.runtime === \"workers\") {\n return \"Workers requires server deployment\";\n }\n }\n\n // ============================================\n // I18N RULES\n // ============================================\n if (category === \"i18n\") {\n if (optionId === \"next-intl\") {\n if (!currentStack.webFrontend.includes(\"next\")) {\n return \"next-intl requires Next.js\";\n }\n }\n }\n\n // ============================================\n // JAVA ECOSYSTEM RULES\n // ============================================\n if (category === \"javaWebFramework\") {\n if (optionId === \"spring-boot\" && currentStack.javaBuildTool === \"none\") {\n return \"Spring Boot requires Maven or Gradle\";\n }\n }\n\n if (category === \"javaBuildTool\") {\n if (optionId === \"none\") {\n if (currentStack.javaWebFramework === \"spring-boot\") {\n return \"Spring Boot requires Maven or Gradle\";\n }\n if (currentStack.javaOrm !== \"none\") {\n return \"Java ORM support requires Maven or Gradle\";\n }\n if (currentStack.javaAuth !== \"none\") {\n return \"Java auth support requires Maven or Gradle\";\n }\n if (currentStack.javaLibraries.some((library) => library !== \"none\")) {\n return \"Java libraries require Maven or Gradle\";\n }\n if (currentStack.javaTestingLibraries.some((library) => library !== \"none\")) {\n return \"Java testing libraries require Maven or Gradle\";\n }\n }\n }\n\n if (category === \"javaOrm\") {\n if (optionId !== \"none\" && currentStack.javaWebFramework !== \"spring-boot\") {\n return \"Java ORM support currently requires Spring Boot\";\n }\n if (optionId !== \"none\" && currentStack.javaBuildTool === \"none\") {\n return \"Java ORM support requires Maven or Gradle\";\n }\n }\n\n if (category === \"javaAuth\") {\n if (optionId !== \"none\" && currentStack.javaWebFramework !== \"spring-boot\") {\n return \"Java auth support currently requires Spring Boot\";\n }\n if (optionId !== \"none\" && currentStack.javaBuildTool === \"none\") {\n return \"Java auth support requires Maven or Gradle\";\n }\n }\n\n if (category === \"javaLibraries\") {\n if (optionId !== \"none\" && currentStack.javaWebFramework !== \"spring-boot\") {\n return \"Spring libraries currently require Spring Boot in the Java scaffold\";\n }\n if (optionId !== \"none\" && currentStack.javaBuildTool === \"none\") {\n return \"Java libraries require Maven or Gradle\";\n }\n if (optionId === \"flyway\" && currentStack.javaOrm !== \"spring-data-jpa\") {\n return \"Flyway currently requires Spring Data JPA in the Java scaffold\";\n }\n if (optionId === \"liquibase\" && currentStack.javaOrm !== \"spring-data-jpa\") {\n return \"Liquibase currently requires Spring Data JPA in the Java scaffold\";\n }\n if (optionId === \"flyway\" && currentStack.javaLibraries.includes(\"liquibase\")) {\n return \"Flyway cannot be combined with Liquibase in the current Java scaffold\";\n }\n if (optionId === \"liquibase\" && currentStack.javaLibraries.includes(\"flyway\")) {\n return \"Liquibase cannot be combined with Flyway in the current Java scaffold\";\n }\n }\n\n if (category === \"javaTestingLibraries\") {\n if (optionId !== \"none\" && currentStack.javaBuildTool === \"none\") {\n return \"Java testing libraries require Maven or Gradle\";\n }\n }\n\n return null;\n};\n\nexport const isOptionCompatible = (\n currentStack: CompatibilityInput,\n category: CompatibilityCategory,\n optionId: string,\n): boolean => {\n if (currentStack.yolo === \"true\") {\n return true;\n }\n return getDisabledReason(currentStack, category, optionId) === null;\n};\n\nconst WEB_FRAMEWORKS: readonly Frontend[] = [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"tanstack-start\",\n \"next\",\n \"nuxt\",\n \"svelte\",\n \"solid\",\n \"solid-start\",\n \"astro\",\n \"qwik\",\n \"angular\",\n \"redwood\",\n \"fresh\",\n \"none\",\n] as const;\n\nconst UI_LIBRARY_COMPATIBILITY: Record<\n UILibrary,\n {\n frontends: readonly Frontend[];\n cssFrameworks: readonly CSSFramework[];\n }\n> = {\n \"shadcn-ui\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\"],\n },\n daisyui: {\n frontends: [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"tanstack-start\",\n \"next\",\n \"nuxt\",\n \"svelte\",\n \"solid\",\n \"solid-start\",\n \"astro\",\n \"qwik\",\n \"angular\",\n \"redwood\",\n \"fresh\",\n ],\n cssFrameworks: [\"tailwind\"],\n },\n \"radix-ui\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n \"headless-ui\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"nuxt\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n \"park-ui\": {\n frontends: [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"tanstack-start\",\n \"next\",\n \"nuxt\",\n \"solid\",\n \"solid-start\",\n \"astro\",\n ],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\"],\n },\n \"chakra-ui\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n nextui: {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\"],\n },\n mantine: {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n \"base-ui\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n \"ark-ui\": {\n frontends: [\n \"tanstack-router\",\n \"react-router\",\n \"tanstack-start\",\n \"next\",\n \"nuxt\",\n \"svelte\",\n \"solid\",\n \"solid-start\",\n \"astro\",\n ],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n \"react-aria\": {\n frontends: [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"],\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n none: {\n frontends: WEB_FRAMEWORKS,\n cssFrameworks: [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"],\n },\n};\n\nconst ADDON_COMPATIBILITY: Record<Addons, readonly Frontend[]> = {\n pwa: [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"solid\",\n \"next\",\n \"astro\",\n \"qwik\",\n \"angular\",\n \"redwood\",\n \"fresh\",\n ],\n tauri: [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"nuxt\",\n \"svelte\",\n \"solid\",\n \"next\",\n \"astro\",\n \"qwik\",\n \"angular\",\n \"redwood\",\n \"fresh\",\n ],\n biome: [],\n husky: [],\n lefthook: [],\n turborepo: [],\n starlight: [],\n ultracite: [],\n ruler: [],\n mcp: [],\n skills: [],\n oxlint: [],\n fumadocs: [],\n opentui: [],\n wxt: [],\n msw: [],\n storybook: [\"tanstack-router\", \"react-router\", \"react-vite\", \"next\", \"nuxt\", \"svelte\", \"solid\"],\n \"tanstack-query\": [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\",\n \"nuxt\", \"svelte\", \"solid\", \"solid-start\", \"angular\", \"astro\", \"redwood\",\n ],\n \"tanstack-table\": [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\",\n \"nuxt\", \"svelte\", \"solid\", \"solid-start\", \"angular\", \"astro\", \"redwood\",\n ],\n \"tanstack-virtual\": [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\",\n \"nuxt\", \"svelte\", \"solid\", \"solid-start\", \"angular\", \"astro\", \"redwood\",\n ],\n \"tanstack-db\": [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\",\n \"nuxt\", \"svelte\", \"solid\", \"solid-start\", \"astro\", \"redwood\",\n ],\n \"tanstack-pacer\": [\n \"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\",\n \"nuxt\", \"svelte\", \"solid\", \"solid-start\", \"angular\", \"astro\", \"redwood\",\n ],\n \"docker-compose\": [],\n none: [],\n};\n\nexport function isWebFrontend(value: Frontend) {\n return WEB_FRAMEWORKS.includes(value);\n}\n\nexport function splitFrontends(values: Frontend[] = []): {\n web: Frontend[];\n native: Frontend[];\n} {\n const web = values.filter((f) => isWebFrontend(f));\n const native = values.filter(\n (f) => f === \"native-bare\" || f === \"native-uniwind\" || f === \"native-unistyles\",\n );\n return { web, native };\n}\n\nexport function allowedApisForFrontends(\n frontends: Frontend[] = [],\n astroIntegration?: AstroIntegration,\n) {\n const includesNuxt = frontends.includes(\"nuxt\");\n const includesSvelte = frontends.includes(\"svelte\");\n const includesSolid = frontends.includes(\"solid\");\n const includesAstro = frontends.includes(\"astro\");\n const includesQwik = frontends.includes(\"qwik\");\n const includesAngular = frontends.includes(\"angular\");\n const includesRedwood = frontends.includes(\"redwood\");\n const includesFresh = frontends.includes(\"fresh\");\n const base: API[] = [\"trpc\", \"orpc\", \"ts-rest\", \"garph\", \"graphql-yoga\", \"none\"];\n\n if (includesQwik || includesAngular || includesRedwood || includesFresh) {\n return [\"graphql-yoga\", \"none\"] as API[];\n }\n\n const includesSolidStartApi = frontends.includes(\"solid-start\");\n if (includesNuxt || includesSvelte || includesSolid || includesSolidStartApi) {\n return [\"orpc\", \"graphql-yoga\", \"none\"] as API[];\n }\n\n if (includesAstro && astroIntegration && astroIntegration !== \"react\") {\n return [\"orpc\", \"graphql-yoga\", \"none\"] as API[];\n }\n\n return base;\n}\n\nexport function isFrontendAllowedWithBackend(frontend: Frontend, backend?: Backend, auth?: string) {\n if (backend === \"convex\" && frontend === \"solid\") return false;\n if (backend === \"convex\" && frontend === \"solid-start\") return false;\n if (backend === \"convex\" && frontend === \"astro\") return false;\n if (backend === \"convex\" && frontend === \"qwik\") return false;\n if (backend === \"convex\" && frontend === \"angular\") return false;\n if (backend === \"convex\" && frontend === \"redwood\") return false;\n if (backend === \"convex\" && frontend === \"fresh\") return false;\n\n if (frontend === \"qwik\" && backend && backend !== \"none\") return false;\n if (frontend === \"angular\" && backend === \"self\") {\n return false;\n }\n if (frontend === \"redwood\" && backend && backend !== \"none\") return false;\n if (frontend === \"fresh\" && backend && backend !== \"none\") return false;\n\n if (auth && auth !== \"none\") {\n return (\n getCapabilityDisabledReason(\n \"auth\",\n {\n ecosystem: \"typescript\",\n backend,\n webFrontend: [frontend],\n },\n auth as Auth,\n ) === null\n );\n }\n\n return true;\n}\n\nexport function isExampleAIAllowed(backend?: Backend, frontends: Frontend[] = []) {\n const includesSolid = frontends.includes(\"solid\");\n const includesSolidStart = frontends.includes(\"solid-start\");\n if (includesSolid || includesSolidStart) return false;\n\n if (backend === \"convex\") {\n const includesNuxt = frontends.includes(\"nuxt\");\n const includesSvelte = frontends.includes(\"svelte\");\n if (includesNuxt || includesSvelte) return false;\n }\n\n return true;\n}\n\nfunction hasExampleChatSdkSelfFrontend(frontends: Frontend[] = []) {\n return frontends.some((f) => [\"next\", \"tanstack-start\", \"nuxt\"].includes(f));\n}\n\nexport function isExampleChatSdkAllowed(\n backend?: Backend | string,\n frontends: Frontend[] = [],\n runtime?: Runtime | string,\n) {\n if (frontends.includes(\"react-vite\")) return false;\n if (!backend || backend === \"none\" || backend === \"convex\") return false;\n\n if (backend === \"self\") {\n return hasExampleChatSdkSelfFrontend(frontends);\n }\n\n if (backend === \"self-next\" || backend === \"self-tanstack-start\" || backend === \"self-nuxt\") {\n return true;\n }\n\n if (backend === \"self-astro\" || backend === \"self-svelte\" || backend === \"self-solid-start\") {\n return false;\n }\n\n if (backend === \"hono\") {\n return runtime === \"node\";\n }\n\n return false;\n}\n\nexport function requiresChatSdkVercelAIForSelection(\n backend?: Backend | string,\n frontends: Frontend[] = [],\n runtime?: Runtime | string,\n) {\n if (backend === \"self\" && frontends.includes(\"nuxt\")) return true;\n if (backend === \"self-nuxt\") return true;\n if (backend === \"hono\" && runtime === \"node\") return true;\n return false;\n}\n\nexport function validateAddonCompatibility(\n addon: Addons,\n frontend: Frontend[],\n _auth?: Auth,\n): { isCompatible: boolean; reason?: string } {\n const compatibleFrontends = ADDON_COMPATIBILITY[addon];\n\n if (compatibleFrontends.length > 0) {\n const hasCompatibleFrontend = frontend.some((f) =>\n (compatibleFrontends as readonly string[]).includes(f),\n );\n\n if (!hasCompatibleFrontend) {\n const frontendList = compatibleFrontends.join(\", \");\n return {\n isCompatible: false,\n reason: `${addon} addon requires one of these frontends: ${frontendList}`,\n };\n }\n }\n\n return { isCompatible: true };\n}\n\nexport function getCompatibleAddons(\n allAddons: Addons[],\n frontend: Frontend[],\n existingAddons: Addons[] = [],\n auth?: Auth,\n) {\n return allAddons.filter((addon) => {\n if (existingAddons.includes(addon)) return false;\n if (addon === \"none\") return false;\n const { isCompatible } = validateAddonCompatibility(addon, frontend, auth);\n return isCompatible;\n });\n}\n\nexport function getCompatibleUILibraries(\n frontends: Frontend[] = [],\n astroIntegration?: AstroIntegration,\n): UILibrary[] {\n const { web } = splitFrontends(frontends);\n if (web.length === 0) return [\"none\"];\n\n const webFrontend = web[0];\n const allUILibraries = Object.keys(UI_LIBRARY_COMPATIBILITY) as UILibrary[];\n\n return allUILibraries.filter((lib) => {\n if (lib === \"none\") return true;\n\n const compatibility = UI_LIBRARY_COMPATIBILITY[lib];\n if (webFrontend === \"astro\") {\n if (astroIntegration === \"react\") {\n return compatibility.frontends.some((f) =>\n [\"tanstack-router\", \"react-router\", \"react-vite\", \"tanstack-start\", \"next\", \"astro\"].includes(f),\n );\n }\n return compatibility.frontends.some((f) =>\n [\"nuxt\", \"svelte\", \"solid\", \"qwik\", \"angular\"].includes(f),\n );\n }\n\n return compatibility.frontends.includes(webFrontend);\n });\n}\n\nexport function getCompatibleCSSFrameworks(uiLibrary: UILibrary | undefined): CSSFramework[] {\n if (!uiLibrary || uiLibrary === \"none\") {\n return [\"tailwind\", \"scss\", \"less\", \"postcss-only\", \"none\"];\n }\n\n const compatibility = UI_LIBRARY_COMPATIBILITY[uiLibrary];\n return compatibility.cssFrameworks as CSSFramework[];\n}\n\nexport function hasWebStyling(frontends: Frontend[] = []): boolean {\n const { web } = splitFrontends(frontends);\n return web.length > 0;\n}\n\nexport function getCompatibleFormLibraries(frontends: Frontend[] = []): Forms[] {\n const hasSolid = frontends.includes(\"solid\");\n const hasSolidStart = frontends.includes(\"solid-start\");\n const hasQwik = frontends.includes(\"qwik\");\n const hasFresh = frontends.includes(\"fresh\");\n\n const all: Forms[] = [\n \"tanstack-form\",\n \"react-hook-form\",\n \"formik\",\n \"final-form\",\n \"conform\",\n \"modular-forms\",\n \"none\",\n ];\n\n if (hasFresh) {\n return all.filter((f) => f !== \"tanstack-form\" && f !== \"react-hook-form\" && f !== \"formik\");\n }\n\n if (hasSolid || hasSolidStart || hasQwik) {\n return all.filter((f) => f !== \"react-hook-form\" && f !== \"formik\" && f !== \"final-form\");\n }\n\n return all;\n}\n\nexport function evaluateCompatibility(input: CompatibilityInput): CompatibilityEvaluation {\n const issues: CompatibilityIssue[] = [];\n\n const scalarChecks: Array<[CompatibilityCategory, string]> = [\n [\"runtime\", input.runtime],\n [\"backend\", input.backend],\n [\"database\", input.database],\n [\"orm\", input.orm],\n [\"dbSetup\", input.dbSetup],\n [\"api\", input.api],\n [\"auth\", input.auth],\n [\"payments\", input.payments],\n [\"email\", input.email],\n [\"cssFramework\", input.cssFramework],\n [\"uiLibrary\", input.uiLibrary],\n [\"webDeploy\", input.webDeploy],\n [\"serverDeploy\", input.serverDeploy],\n [\"forms\", input.forms],\n [\"stateManagement\", input.stateManagement],\n [\"animation\", input.animation],\n [\"ai\", input.aiSdk],\n [\"javaWebFramework\", input.javaWebFramework],\n [\"javaBuildTool\", input.javaBuildTool],\n [\"javaOrm\", input.javaOrm],\n [\"javaAuth\", input.javaAuth],\n ];\n\n for (const [category, optionId] of scalarChecks) {\n const reason = getDisabledReason(input, category, optionId);\n if (reason) {\n issues.push({\n code: `INCOMPATIBLE_${category.toUpperCase()}`,\n message: reason,\n category,\n optionId,\n });\n }\n }\n\n for (const frontend of input.webFrontend) {\n const reason = getDisabledReason(input, \"webFrontend\", frontend);\n if (reason) {\n issues.push({\n code: \"INCOMPATIBLE_FRONTEND\",\n message: reason,\n category: \"webFrontend\",\n optionId: frontend,\n });\n }\n }\n\n for (const addon of [...input.codeQuality, ...input.documentation, ...input.appPlatforms]) {\n const reason = getDisabledReason(input, \"appPlatforms\", addon);\n if (reason) {\n issues.push({\n code: \"INCOMPATIBLE_ADDON\",\n message: reason,\n category: \"appPlatforms\",\n optionId: addon,\n });\n }\n }\n\n for (const addon of input.examples) {\n const reason = getDisabledReason(input, \"examples\", addon);\n if (reason) {\n issues.push({\n code: \"INCOMPATIBLE_ADDON\",\n message: reason,\n category: \"examples\",\n optionId: addon,\n });\n }\n }\n\n for (const javaLibrary of input.javaLibraries) {\n const reason = getDisabledReason(input, \"javaLibraries\", javaLibrary);\n if (reason) {\n issues.push({\n code: \"INCOMPATIBLE_JAVA_LIBRARY\",\n message: reason,\n category: \"javaLibraries\",\n optionId: javaLibrary,\n });\n }\n }\n\n for (const testingLibrary of input.javaTestingLibraries) {\n const reason = getDisabledReason(input, \"javaTestingLibraries\", testingLibrary);\n if (reason) {\n issues.push({\n code: \"INCOMPATIBLE_JAVA_TESTING_LIBRARY\",\n message: reason,\n category: \"javaTestingLibraries\",\n optionId: testingLibrary,\n });\n }\n }\n\n return { issues };\n}\n","import { getCapabilityDefinitions } from \"./capabilities\";\nimport {\n AI_DOCS_VALUES,\n AI_VALUES,\n ANALYTICS_VALUES,\n ANIMATION_VALUES,\n API_VALUES,\n ASTRO_INTEGRATION_VALUES,\n AUTH_VALUES,\n CACHING_VALUES,\n I18N_VALUES,\n CMS_VALUES,\n CSS_FRAMEWORK_VALUES,\n DATABASE_SETUP_VALUES,\n DATABASE_VALUES,\n EFFECT_VALUES,\n EMAIL_VALUES,\n FEATURE_FLAGS_VALUES,\n FILE_STORAGE_VALUES,\n FILE_UPLOAD_VALUES,\n FORMS_VALUES,\n GO_API_VALUES,\n GO_CLI_VALUES,\n GO_AUTH_VALUES,\n GO_LOGGING_VALUES,\n GO_ORM_VALUES,\n GO_WEB_FRAMEWORK_VALUES,\n JAVA_AUTH_VALUES,\n JAVA_BUILD_TOOL_VALUES,\n JAVA_LIBRARIES_VALUES,\n JAVA_ORM_VALUES,\n JAVA_TESTING_LIBRARIES_VALUES,\n JAVA_WEB_FRAMEWORK_VALUES,\n JOB_QUEUE_VALUES,\n LOGGING_VALUES,\n OBSERVABILITY_VALUES,\n ORM_VALUES,\n PACKAGE_MANAGER_VALUES,\n PAYMENTS_VALUES,\n VERSION_CHANNEL_VALUES,\n PYTHON_AI_VALUES,\n PYTHON_AUTH_VALUES,\n PYTHON_ORM_VALUES,\n PYTHON_GRAPHQL_VALUES,\n PYTHON_QUALITY_VALUES,\n PYTHON_TASK_QUEUE_VALUES,\n PYTHON_VALIDATION_VALUES,\n PYTHON_WEB_FRAMEWORK_VALUES,\n REALTIME_VALUES,\n RUNTIME_VALUES,\n RUST_API_VALUES,\n RUST_CLI_VALUES,\n RUST_FRONTEND_VALUES,\n RUST_LIBRARIES_VALUES,\n RUST_LOGGING_VALUES,\n RUST_ERROR_HANDLING_VALUES,\n RUST_CACHING_VALUES,\n RUST_AUTH_VALUES,\n RUST_ORM_VALUES,\n RUST_WEB_FRAMEWORK_VALUES,\n SEARCH_VALUES,\n SHADCN_BASE_COLOR_VALUES,\n SHADCN_BASE_VALUES,\n SHADCN_COLOR_THEME_VALUES,\n SHADCN_FONT_VALUES,\n SHADCN_ICON_LIBRARY_VALUES,\n SHADCN_RADIUS_VALUES,\n SHADCN_STYLE_VALUES,\n SERVER_DEPLOY_VALUES,\n STATE_MANAGEMENT_VALUES,\n TESTING_VALUES,\n UI_LIBRARY_VALUES,\n VALIDATION_VALUES,\n WEB_DEPLOY_VALUES,\n} from \"./schemas\";\n\nexport type OptionCategory =\n | \"api\"\n | \"webFrontend\"\n | \"nativeFrontend\"\n | \"astroIntegration\"\n | \"runtime\"\n | \"backend\"\n | \"database\"\n | \"orm\"\n | \"dbSetup\"\n | \"webDeploy\"\n | \"serverDeploy\"\n | \"auth\"\n | \"payments\"\n | \"email\"\n | \"fileUpload\"\n | \"logging\"\n | \"observability\"\n | \"backendLibraries\"\n | \"stateManagement\"\n | \"forms\"\n | \"validation\"\n | \"testing\"\n | \"realtime\"\n | \"jobQueue\"\n | \"caching\"\n | \"i18n\"\n | \"search\"\n | \"fileStorage\"\n | \"animation\"\n | \"cssFramework\"\n | \"uiLibrary\"\n | \"cms\"\n | \"featureFlags\"\n | \"analytics\"\n | \"codeQuality\"\n | \"documentation\"\n | \"appPlatforms\"\n | \"packageManager\"\n | \"versionChannel\"\n | \"examples\"\n | \"ai\"\n | \"aiDocs\"\n | \"git\"\n | \"install\"\n | \"effect\"\n | \"shadcnBase\"\n | \"shadcnStyle\"\n | \"shadcnIconLibrary\"\n | \"shadcnColorTheme\"\n | \"shadcnBaseColor\"\n | \"shadcnFont\"\n | \"shadcnRadius\"\n | \"rustWebFramework\"\n | \"rustFrontend\"\n | \"rustOrm\"\n | \"rustApi\"\n | \"rustCli\"\n | \"rustLibraries\"\n | \"rustLogging\"\n | \"rustErrorHandling\"\n | \"rustCaching\"\n | \"rustAuth\"\n | \"pythonWebFramework\"\n | \"pythonOrm\"\n | \"pythonValidation\"\n | \"pythonAi\"\n | \"pythonAuth\"\n | \"pythonTaskQueue\"\n | \"pythonGraphql\"\n | \"pythonQuality\"\n | \"goWebFramework\"\n | \"goOrm\"\n | \"goApi\"\n | \"goCli\"\n | \"goLogging\"\n | \"goAuth\"\n | \"javaWebFramework\"\n | \"javaBuildTool\"\n | \"javaOrm\"\n | \"javaAuth\"\n | \"javaLibraries\"\n | \"javaTestingLibraries\";\n\nexport type OptionSelectionMode = \"single\" | \"multiple\";\n\nexport type OptionMetadata = {\n id: string;\n label: string;\n aliases: readonly string[];\n cliValue: string;\n};\n\nexport type OptionCategoryMetadata = {\n selectionMode: OptionSelectionMode;\n options: readonly OptionMetadata[];\n};\n\nconst WEB_FRONTEND_VALUES = [\n \"tanstack-router\",\n \"react-router\",\n \"react-vite\",\n \"tanstack-start\",\n \"next\",\n \"nuxt\",\n \"svelte\",\n \"solid\",\n \"solid-start\",\n \"astro\",\n \"qwik\",\n \"angular\",\n \"redwood\",\n \"fresh\",\n \"none\",\n] as const satisfies readonly string[];\n\nconst NATIVE_FRONTEND_VALUES = [\n \"native-bare\",\n \"native-uniwind\",\n \"native-unistyles\",\n \"none\",\n] as const satisfies readonly string[];\n\nconst BACKEND_BUILDER_VALUES = [\n \"hono\",\n \"express\",\n \"fastify\",\n \"elysia\",\n \"fets\",\n \"nestjs\",\n \"adonisjs\",\n \"nitro\",\n \"encore\",\n \"convex\",\n \"self-next\",\n \"self-tanstack-start\",\n \"self-astro\",\n \"self-nuxt\",\n \"self-svelte\",\n \"self-solid-start\",\n \"none\",\n] as const satisfies readonly string[];\n\nconst CODE_QUALITY_VALUES = [\n \"biome\",\n \"oxlint\",\n \"ultracite\",\n \"lefthook\",\n \"husky\",\n \"ruler\",\n] as const satisfies readonly string[];\n\nconst DOCUMENTATION_VALUES = [\"starlight\", \"fumadocs\"] as const satisfies readonly string[];\n\nconst APP_PLATFORM_VALUES = [\n \"turborepo\",\n \"pwa\",\n \"tauri\",\n \"wxt\",\n \"opentui\",\n \"mcp\",\n \"skills\",\n \"msw\",\n \"storybook\",\n \"tanstack-query\",\n \"tanstack-table\",\n \"tanstack-virtual\",\n \"tanstack-db\",\n \"tanstack-pacer\",\n \"docker-compose\",\n] as const satisfies readonly string[];\n\nconst EXAMPLE_VALUES = [\"ai\", \"chat-sdk\"] as const satisfies readonly string[];\nconst BOOLEAN_OPTION_VALUES = [\"true\", \"false\"] as const satisfies readonly string[];\n\nconst MULTI_SELECT_CATEGORIES = new Set<OptionCategory>([\n \"webFrontend\",\n \"nativeFrontend\",\n \"codeQuality\",\n \"documentation\",\n \"appPlatforms\",\n \"examples\",\n \"aiDocs\",\n \"rustLibraries\",\n \"pythonAi\",\n \"javaLibraries\",\n \"javaTestingLibraries\",\n]);\n\nconst CATEGORY_VALUE_IDS: Record<OptionCategory, readonly string[]> = {\n api: API_VALUES,\n webFrontend: WEB_FRONTEND_VALUES,\n nativeFrontend: NATIVE_FRONTEND_VALUES,\n astroIntegration: ASTRO_INTEGRATION_VALUES,\n runtime: RUNTIME_VALUES,\n backend: BACKEND_BUILDER_VALUES,\n database: DATABASE_VALUES,\n orm: ORM_VALUES,\n dbSetup: DATABASE_SETUP_VALUES,\n webDeploy: WEB_DEPLOY_VALUES,\n serverDeploy: SERVER_DEPLOY_VALUES,\n auth: AUTH_VALUES,\n payments: PAYMENTS_VALUES,\n email: EMAIL_VALUES,\n fileUpload: FILE_UPLOAD_VALUES,\n logging: LOGGING_VALUES,\n observability: OBSERVABILITY_VALUES,\n backendLibraries: EFFECT_VALUES,\n stateManagement: STATE_MANAGEMENT_VALUES,\n forms: FORMS_VALUES,\n validation: VALIDATION_VALUES,\n testing: TESTING_VALUES,\n realtime: REALTIME_VALUES,\n jobQueue: JOB_QUEUE_VALUES,\n caching: CACHING_VALUES,\n i18n: I18N_VALUES,\n search: SEARCH_VALUES,\n fileStorage: FILE_STORAGE_VALUES,\n animation: ANIMATION_VALUES,\n cssFramework: CSS_FRAMEWORK_VALUES,\n uiLibrary: UI_LIBRARY_VALUES,\n cms: CMS_VALUES,\n featureFlags: FEATURE_FLAGS_VALUES,\n analytics: ANALYTICS_VALUES,\n codeQuality: CODE_QUALITY_VALUES,\n documentation: DOCUMENTATION_VALUES,\n appPlatforms: APP_PLATFORM_VALUES,\n packageManager: PACKAGE_MANAGER_VALUES,\n versionChannel: VERSION_CHANNEL_VALUES,\n examples: EXAMPLE_VALUES,\n ai: AI_VALUES,\n aiDocs: AI_DOCS_VALUES,\n git: BOOLEAN_OPTION_VALUES,\n install: BOOLEAN_OPTION_VALUES,\n effect: EFFECT_VALUES,\n shadcnBase: SHADCN_BASE_VALUES,\n shadcnStyle: SHADCN_STYLE_VALUES,\n shadcnIconLibrary: SHADCN_ICON_LIBRARY_VALUES,\n shadcnColorTheme: SHADCN_COLOR_THEME_VALUES,\n shadcnBaseColor: SHADCN_BASE_COLOR_VALUES,\n shadcnFont: SHADCN_FONT_VALUES,\n shadcnRadius: SHADCN_RADIUS_VALUES,\n rustWebFramework: RUST_WEB_FRAMEWORK_VALUES,\n rustFrontend: RUST_FRONTEND_VALUES,\n rustOrm: RUST_ORM_VALUES,\n rustApi: RUST_API_VALUES,\n rustCli: RUST_CLI_VALUES,\n rustLibraries: RUST_LIBRARIES_VALUES,\n rustLogging: RUST_LOGGING_VALUES,\n rustErrorHandling: RUST_ERROR_HANDLING_VALUES,\n rustCaching: RUST_CACHING_VALUES,\n rustAuth: RUST_AUTH_VALUES,\n pythonWebFramework: PYTHON_WEB_FRAMEWORK_VALUES,\n pythonOrm: PYTHON_ORM_VALUES,\n pythonValidation: PYTHON_VALIDATION_VALUES,\n pythonAi: PYTHON_AI_VALUES,\n pythonAuth: PYTHON_AUTH_VALUES,\n pythonTaskQueue: PYTHON_TASK_QUEUE_VALUES,\n pythonGraphql: PYTHON_GRAPHQL_VALUES,\n pythonQuality: PYTHON_QUALITY_VALUES,\n goWebFramework: GO_WEB_FRAMEWORK_VALUES,\n goOrm: GO_ORM_VALUES,\n goApi: GO_API_VALUES,\n goCli: GO_CLI_VALUES,\n goLogging: GO_LOGGING_VALUES,\n goAuth: GO_AUTH_VALUES,\n javaWebFramework: JAVA_WEB_FRAMEWORK_VALUES,\n javaBuildTool: JAVA_BUILD_TOOL_VALUES,\n javaOrm: JAVA_ORM_VALUES,\n javaAuth: JAVA_AUTH_VALUES,\n javaLibraries: JAVA_LIBRARIES_VALUES,\n javaTestingLibraries: JAVA_TESTING_LIBRARIES_VALUES,\n};\n\nconst EXACT_LABEL_OVERRIDES: Partial<Record<OptionCategory, Partial<Record<string, string>>>> = {\n api: { trpc: \"tRPC\", orpc: \"oRPC\", \"graphql-yoga\": \"GraphQL Yoga\" },\n webFrontend: {\n next: \"Next.js\",\n \"react-vite\": \"React + Vite\",\n svelte: \"SvelteKit\",\n redwood: \"RedwoodJS\",\n },\n nativeFrontend: {\n \"native-bare\": \"Expo + Bare\",\n \"native-uniwind\": \"Expo + Uniwind\",\n \"native-unistyles\": \"Expo + Unistyles\",\n },\n runtime: { node: \"Node.js\", workers: \"Cloudflare Workers\" },\n backend: {\n fets: \"feTS\",\n nestjs: \"NestJS\",\n encore: \"Encore.ts\",\n \"self-next\": \"Fullstack Next.js\",\n \"self-tanstack-start\": \"Fullstack TanStack Start\",\n \"self-astro\": \"Fullstack Astro\",\n \"self-nuxt\": \"Fullstack Nuxt\",\n \"self-svelte\": \"Fullstack SvelteKit\",\n \"self-solid-start\": \"Fullstack SolidStart\",\n },\n database: { sqlite: \"SQLite\", postgres: \"PostgreSQL\", mongodb: \"MongoDB\", edgedb: \"EdgeDB\" },\n orm: {\n typeorm: \"TypeORM\",\n mikroorm: \"MikroORM\",\n },\n dbSetup: {\n d1: \"Cloudflare D1\",\n neon: \"Neon Postgres\",\n \"prisma-postgres\": \"Prisma PostgreSQL\",\n \"mongodb-atlas\": \"MongoDB Atlas\",\n planetscale: \"PlanetScale\",\n },\n webDeploy: { cloudflare: \"Cloudflare\", fly: \"Fly.io\", sst: \"SST\", vercel: \"Vercel\" },\n serverDeploy: { cloudflare: \"Cloudflare\", fly: \"Fly.io\", sst: \"SST\", vercel: \"Vercel\" },\n cms: { tinacms: \"TinaCMS\" },\n auth: {},\n payments: {\n \"lemon-squeezy\": \"Lemon Squeezy\",\n dodo: \"Dodo Payments\",\n },\n email: {\n \"react-email\": \"React Email\",\n sendgrid: \"SendGrid\",\n \"aws-ses\": \"AWS SES\",\n },\n fileUpload: {\n uploadthing: \"UploadThing\",\n filepond: \"FilePond\",\n uppy: \"Uppy\",\n },\n observability: {\n opentelemetry: \"OpenTelemetry\",\n },\n backendLibraries: {\n effect: \"Effect (Core)\",\n \"effect-full\": \"Effect Full\",\n },\n stateManagement: {\n \"redux-toolkit\": \"Redux Toolkit\",\n xstate: \"XState\",\n },\n forms: {\n \"react-hook-form\": \"React Hook Form\",\n \"tanstack-form\": \"TanStack Form\",\n \"final-form\": \"Final Form\",\n \"modular-forms\": \"Modular Forms\",\n },\n validation: {\n zod: \"Zod\",\n arktype: \"ArkType\",\n typebox: \"TypeBox\",\n \"effect-schema\": \"@effect/schema\",\n },\n testing: {\n \"vitest-playwright\": \"Vitest + Playwright\",\n },\n realtime: {\n \"socket-io\": \"Socket.IO\",\n yjs: \"Y.js\",\n },\n jobQueue: {\n bullmq: \"BullMQ\",\n \"trigger-dev\": \"Trigger.dev\",\n },\n i18n: {\n i18next: \"i18next\",\n \"next-intl\": \"next-intl\",\n },\n search: {\n meilisearch: \"Meilisearch\",\n typesense: \"Typesense\",\n elasticsearch: \"Elasticsearch\",\n algolia: \"Algolia\",\n },\n cssFramework: { tailwind: \"Tailwind CSS\", scss: \"SCSS\", \"postcss-only\": \"PostCSS Only\" },\n uiLibrary: {\n \"shadcn-ui\": \"shadcn/ui\",\n daisyui: \"daisyUI\",\n \"radix-ui\": \"Radix UI\",\n \"headless-ui\": \"Headless UI\",\n \"park-ui\": \"Park UI\",\n \"chakra-ui\": \"Chakra UI\",\n nextui: \"NextUI\",\n \"base-ui\": \"Base UI\",\n \"ark-ui\": \"Ark UI\",\n \"react-aria\": \"React Aria\",\n },\n featureFlags: {\n growthbook: \"GrowthBook\",\n posthog: \"PostHog\",\n },\n analytics: {\n plausible: \"Plausible\",\n umami: \"Umami\",\n },\n codeQuality: {\n biome: \"Biome\",\n oxlint: \"Oxlint\",\n ultracite: \"Ultracite\",\n lefthook: \"Lefthook\",\n husky: \"Husky\",\n ruler: \"Ruler\",\n },\n documentation: {\n starlight: \"Starlight\",\n fumadocs: \"Fumadocs\",\n },\n appPlatforms: {\n pwa: \"PWA\",\n wxt: \"WXT\",\n opentui: \"OpenTUI\",\n mcp: \"MCP\",\n msw: \"MSW\",\n \"tanstack-query\": \"TanStack Query\",\n \"tanstack-table\": \"TanStack Table\",\n \"tanstack-virtual\": \"TanStack Virtual\",\n \"tanstack-db\": \"TanStack DB\",\n \"tanstack-pacer\": \"TanStack Pacer\",\n \"docker-compose\": \"Docker Compose\",\n },\n versionChannel: {\n stable: \"Stable\",\n latest: \"Latest\",\n beta: \"Beta\",\n },\n examples: {\n ai: \"AI Example\",\n \"chat-sdk\": \"Chat SDK Bots\",\n },\n ai: {\n \"vercel-ai\": \"Vercel AI SDK\",\n voltagent: \"VoltAgent\",\n langgraph: \"LangGraph.js\",\n \"openai-agents\": \"OpenAI Agents SDK\",\n \"google-adk\": \"Google ADK\",\n modelfusion: \"ModelFusion\",\n langchain: \"LangChain\",\n llamaindex: \"LlamaIndex\",\n \"tanstack-ai\": \"TanStack AI\",\n \"ai-cli\": \"AI CLI\",\n },\n aiDocs: {\n \"claude-md\": \"CLAUDE.md\",\n \"agents-md\": \"Agents.md\",\n cursorrules: \".cursorrules\",\n },\n git: { true: \"Git\", false: \"No Git\" },\n install: { true: \"Install Dependencies\", false: \"Skip Install\" },\n effect: {\n effect: \"Effect (Core)\",\n \"effect-full\": \"Effect Full\",\n },\n shadcnBase: {\n radix: \"Radix UI\",\n base: \"Base UI\",\n },\n shadcnStyle: {\n vega: \"Vega\",\n nova: \"Nova\",\n maia: \"Maia\",\n lyra: \"Lyra\",\n mira: \"Mira\",\n },\n shadcnIconLibrary: {\n lucide: \"Lucide\",\n tabler: \"Tabler Icons\",\n hugeicons: \"HugeIcons\",\n phosphor: \"Phosphor Icons\",\n remixicon: \"Remix Icon\",\n },\n shadcnColorTheme: {\n neutral: \"Neutral\",\n },\n shadcnBaseColor: {\n neutral: \"Neutral\",\n },\n shadcnFont: {\n inter: \"Inter\",\n geist: \"Geist\",\n figtree: \"Figtree\",\n \"noto-sans\": \"Noto Sans\",\n \"nunito-sans\": \"Nunito Sans\",\n roboto: \"Roboto\",\n raleway: \"Raleway\",\n \"dm-sans\": \"DM Sans\",\n \"public-sans\": \"Public Sans\",\n outfit: \"Outfit\",\n \"jetbrains-mono\": \"JetBrains Mono\",\n \"geist-mono\": \"Geist Mono\",\n },\n shadcnRadius: {\n default: \"Default\",\n },\n rustWebFramework: {\n axum: \"Axum\",\n \"actix-web\": \"Actix-web\",\n rocket: \"Rocket\",\n },\n rustFrontend: {\n leptos: \"Leptos\",\n dioxus: \"Dioxus\",\n },\n rustOrm: {\n \"sea-orm\": \"SeaORM\",\n sqlx: \"SQLx\",\n diesel: \"Diesel\",\n },\n rustApi: {\n \"async-graphql\": \"async-graphql\",\n tonic: \"Tonic\",\n },\n rustCli: {\n clap: \"Clap\",\n ratatui: \"Ratatui\",\n },\n rustLibraries: {\n serde: \"Serde\",\n validator: \"Validator\",\n jsonwebtoken: \"jsonwebtoken\",\n argon2: \"Argon2\",\n \"tokio-test\": \"Tokio Test\",\n mockall: \"Mockall\",\n },\n rustLogging: {\n tracing: \"Tracing\",\n \"env-logger\": \"env_logger\",\n },\n rustErrorHandling: {\n \"anyhow-thiserror\": \"anyhow + thiserror\",\n eyre: \"eyre + color-eyre\",\n },\n rustCaching: {\n moka: \"Moka\",\n redis: \"Redis\",\n },\n rustAuth: {\n oauth2: \"OAuth2\",\n },\n pythonWebFramework: {\n fastapi: \"FastAPI\",\n django: \"Django\",\n flask: \"Flask\",\n litestar: \"Litestar\",\n },\n pythonOrm: {\n sqlalchemy: \"SQLAlchemy\",\n sqlmodel: \"SQLModel\",\n \"tortoise-orm\": \"Tortoise ORM\",\n },\n pythonValidation: {\n pydantic: \"Pydantic\",\n },\n pythonAi: {\n langchain: \"LangChain\",\n llamaindex: \"LlamaIndex\",\n \"openai-sdk\": \"OpenAI SDK\",\n \"anthropic-sdk\": \"Anthropic SDK\",\n langgraph: \"LangGraph\",\n crewai: \"CrewAI\",\n },\n pythonAuth: {\n authlib: \"Authlib\",\n jwt: \"JWT (python-jose)\",\n },\n pythonTaskQueue: {\n celery: \"Celery\",\n },\n pythonGraphql: {\n strawberry: \"Strawberry\",\n },\n pythonQuality: {\n ruff: \"Ruff\",\n },\n goWebFramework: {\n gin: \"Gin\",\n echo: \"Echo\",\n fiber: \"Fiber\",\n chi: \"Chi\",\n },\n goOrm: {\n gorm: \"GORM\",\n sqlc: \"sqlc\",\n ent: \"Ent\",\n },\n goApi: {\n \"grpc-go\": \"gRPC-Go\",\n },\n goCli: {\n cobra: \"Cobra\",\n bubbletea: \"Bubble Tea\",\n },\n goLogging: {\n zap: \"Zap\",\n zerolog: \"Zerolog\",\n slog: \"slog\",\n },\n goAuth: {\n casbin: \"Casbin\",\n jwt: \"golang-jwt\",\n },\n javaWebFramework: {\n \"spring-boot\": \"Spring Boot\",\n },\n javaBuildTool: {\n maven: \"Maven\",\n },\n javaOrm: {\n \"spring-data-jpa\": \"Spring Data JPA\",\n },\n javaAuth: {\n \"spring-security\": \"Spring Security\",\n },\n javaLibraries: {\n \"spring-actuator\": \"Spring Boot Actuator\",\n \"spring-validation\": \"Spring Validation\",\n flyway: \"Flyway\",\n liquibase: \"Liquibase\",\n \"springdoc-openapi\": \"Springdoc OpenAPI\",\n lombok: \"Lombok\",\n mapstruct: \"MapStruct\",\n caffeine: \"Caffeine\",\n },\n javaTestingLibraries: {\n junit5: \"JUnit 5\",\n mockito: \"Mockito\",\n testcontainers: \"Testcontainers\",\n assertj: \"AssertJ\",\n \"rest-assured\": \"REST Assured\",\n wiremock: \"WireMock\",\n awaitility: \"Awaitility\",\n archunit: \"ArchUnit\",\n jqwik: \"jqwik\",\n },\n};\n\nconst OPTION_ALIASES: Partial<Record<OptionCategory, Partial<Record<string, readonly string[]>>>> =\n {\n webFrontend: {\n svelte: [\"sveltekit\"],\n },\n backend: {\n \"self-svelte\": [\"self-sveltekit\"],\n },\n };\n\nconst CLI_VALUE_OVERRIDES: Partial<Record<OptionCategory, Partial<Record<string, string>>>> = {\n backend: {\n \"self-next\": \"self\",\n \"self-tanstack-start\": \"self\",\n \"self-astro\": \"self\",\n \"self-nuxt\": \"self\",\n \"self-svelte\": \"self\",\n \"self-solid-start\": \"self\",\n },\n};\n\nconst TOKEN_LABELS: Record<string, string> = {\n ai: \"AI\",\n api: \"API\",\n auth: \"Auth\",\n css: \"CSS\",\n db: \"DB\",\n graphql: \"GraphQL\",\n grpc: \"gRPC\",\n js: \"JS\",\n md: \"MD\",\n orm: \"ORM\",\n sdk: \"SDK\",\n ses: \"SES\",\n sql: \"SQL\",\n ui: \"UI\",\n};\n\nfunction toStartCaseToken(token: string): string {\n const lower = token.toLowerCase();\n if (TOKEN_LABELS[lower]) return TOKEN_LABELS[lower];\n return lower.charAt(0).toUpperCase() + lower.slice(1);\n}\n\nfunction humanizeOptionId(id: string): string {\n return id.split(\"-\").filter(Boolean).map(toStartCaseToken).join(\" \");\n}\n\nfunction getOptionLabel(category: OptionCategory, id: string): string {\n if (category === \"auth\") {\n return (\n getCapabilityDefinitions(\"auth\").find((option) => option.id === id)?.label ??\n humanizeOptionId(id)\n );\n }\n return EXACT_LABEL_OVERRIDES[category]?.[id] ?? humanizeOptionId(id);\n}\n\nfunction getOptionAliases(category: OptionCategory, id: string): readonly string[] {\n return OPTION_ALIASES[category]?.[id] ?? [];\n}\n\nfunction getCliValue(category: OptionCategory, id: string): string {\n return CLI_VALUE_OVERRIDES[category]?.[id] ?? id;\n}\n\nfunction buildCategoryMetadata(category: OptionCategory): OptionCategoryMetadata {\n return {\n selectionMode: MULTI_SELECT_CATEGORIES.has(category) ? \"multiple\" : \"single\",\n options: CATEGORY_VALUE_IDS[category].map((id) => ({\n id,\n label: getOptionLabel(category, id),\n aliases: getOptionAliases(category, id),\n cliValue: getCliValue(category, id),\n })),\n };\n}\n\nexport const OPTION_CATEGORY_METADATA: Record<OptionCategory, OptionCategoryMetadata> = {\n api: buildCategoryMetadata(\"api\"),\n webFrontend: buildCategoryMetadata(\"webFrontend\"),\n nativeFrontend: buildCategoryMetadata(\"nativeFrontend\"),\n astroIntegration: buildCategoryMetadata(\"astroIntegration\"),\n runtime: buildCategoryMetadata(\"runtime\"),\n backend: buildCategoryMetadata(\"backend\"),\n database: buildCategoryMetadata(\"database\"),\n orm: buildCategoryMetadata(\"orm\"),\n dbSetup: buildCategoryMetadata(\"dbSetup\"),\n webDeploy: buildCategoryMetadata(\"webDeploy\"),\n serverDeploy: buildCategoryMetadata(\"serverDeploy\"),\n auth: buildCategoryMetadata(\"auth\"),\n payments: buildCategoryMetadata(\"payments\"),\n email: buildCategoryMetadata(\"email\"),\n fileUpload: buildCategoryMetadata(\"fileUpload\"),\n logging: buildCategoryMetadata(\"logging\"),\n observability: buildCategoryMetadata(\"observability\"),\n backendLibraries: buildCategoryMetadata(\"backendLibraries\"),\n stateManagement: buildCategoryMetadata(\"stateManagement\"),\n forms: buildCategoryMetadata(\"forms\"),\n validation: buildCategoryMetadata(\"validation\"),\n testing: buildCategoryMetadata(\"testing\"),\n realtime: buildCategoryMetadata(\"realtime\"),\n jobQueue: buildCategoryMetadata(\"jobQueue\"),\n caching: buildCategoryMetadata(\"caching\"),\n i18n: buildCategoryMetadata(\"i18n\"),\n search: buildCategoryMetadata(\"search\"),\n fileStorage: buildCategoryMetadata(\"fileStorage\"),\n animation: buildCategoryMetadata(\"animation\"),\n cssFramework: buildCategoryMetadata(\"cssFramework\"),\n uiLibrary: buildCategoryMetadata(\"uiLibrary\"),\n cms: buildCategoryMetadata(\"cms\"),\n featureFlags: buildCategoryMetadata(\"featureFlags\"),\n analytics: buildCategoryMetadata(\"analytics\"),\n codeQuality: buildCategoryMetadata(\"codeQuality\"),\n documentation: buildCategoryMetadata(\"documentation\"),\n appPlatforms: buildCategoryMetadata(\"appPlatforms\"),\n packageManager: buildCategoryMetadata(\"packageManager\"),\n versionChannel: buildCategoryMetadata(\"versionChannel\"),\n examples: buildCategoryMetadata(\"examples\"),\n ai: buildCategoryMetadata(\"ai\"),\n aiDocs: buildCategoryMetadata(\"aiDocs\"),\n git: buildCategoryMetadata(\"git\"),\n install: buildCategoryMetadata(\"install\"),\n effect: buildCategoryMetadata(\"effect\"),\n shadcnBase: buildCategoryMetadata(\"shadcnBase\"),\n shadcnStyle: buildCategoryMetadata(\"shadcnStyle\"),\n shadcnIconLibrary: buildCategoryMetadata(\"shadcnIconLibrary\"),\n shadcnColorTheme: buildCategoryMetadata(\"shadcnColorTheme\"),\n shadcnBaseColor: buildCategoryMetadata(\"shadcnBaseColor\"),\n shadcnFont: buildCategoryMetadata(\"shadcnFont\"),\n shadcnRadius: buildCategoryMetadata(\"shadcnRadius\"),\n rustWebFramework: buildCategoryMetadata(\"rustWebFramework\"),\n rustFrontend: buildCategoryMetadata(\"rustFrontend\"),\n rustOrm: buildCategoryMetadata(\"rustOrm\"),\n rustApi: buildCategoryMetadata(\"rustApi\"),\n rustCli: buildCategoryMetadata(\"rustCli\"),\n rustLibraries: buildCategoryMetadata(\"rustLibraries\"),\n rustLogging: buildCategoryMetadata(\"rustLogging\"),\n rustErrorHandling: buildCategoryMetadata(\"rustErrorHandling\"),\n rustCaching: buildCategoryMetadata(\"rustCaching\"),\n rustAuth: buildCategoryMetadata(\"rustAuth\"),\n pythonWebFramework: buildCategoryMetadata(\"pythonWebFramework\"),\n pythonOrm: buildCategoryMetadata(\"pythonOrm\"),\n pythonValidation: buildCategoryMetadata(\"pythonValidation\"),\n pythonAi: buildCategoryMetadata(\"pythonAi\"),\n pythonAuth: buildCategoryMetadata(\"pythonAuth\"),\n pythonTaskQueue: buildCategoryMetadata(\"pythonTaskQueue\"),\n pythonGraphql: buildCategoryMetadata(\"pythonGraphql\"),\n pythonQuality: buildCategoryMetadata(\"pythonQuality\"),\n goWebFramework: buildCategoryMetadata(\"goWebFramework\"),\n goOrm: buildCategoryMetadata(\"goOrm\"),\n goApi: buildCategoryMetadata(\"goApi\"),\n goCli: buildCategoryMetadata(\"goCli\"),\n goLogging: buildCategoryMetadata(\"goLogging\"),\n goAuth: buildCategoryMetadata(\"goAuth\"),\n javaWebFramework: buildCategoryMetadata(\"javaWebFramework\"),\n javaBuildTool: buildCategoryMetadata(\"javaBuildTool\"),\n javaOrm: buildCategoryMetadata(\"javaOrm\"),\n javaAuth: buildCategoryMetadata(\"javaAuth\"),\n javaLibraries: buildCategoryMetadata(\"javaLibraries\"),\n javaTestingLibraries: buildCategoryMetadata(\"javaTestingLibraries\"),\n};\n\nconst OPTION_LOOKUP = Object.fromEntries(\n (Object.entries(OPTION_CATEGORY_METADATA) as Array<[OptionCategory, OptionCategoryMetadata]>).map(\n ([category, metadata]) => [\n category,\n new Map(\n metadata.options.flatMap((option) => [\n [option.id.toLowerCase(), option.id],\n ...option.aliases.map((alias) => [alias.toLowerCase(), option.id] as const),\n ]),\n ),\n ],\n ),\n) as Record<OptionCategory, Map<string, string>>;\n\nexport function isMultiSelectCategory(category: OptionCategory): boolean {\n return OPTION_CATEGORY_METADATA[category].selectionMode === \"multiple\";\n}\n\nexport function getOptionMetadata(\n category: OptionCategory,\n optionId: string,\n): OptionMetadata | undefined {\n return OPTION_CATEGORY_METADATA[category].options.find((option) => option.id === optionId);\n}\n\nexport function getCategoryOptionIds(category: OptionCategory): string[] {\n return OPTION_CATEGORY_METADATA[category].options.map((option) => option.id);\n}\n\nexport function getCategoryCliValues(category: OptionCategory): string[] {\n return [...new Set(OPTION_CATEGORY_METADATA[category].options.map((option) => option.cliValue))];\n}\n\nexport function normalizeOptionId(category: OptionCategory, value: string): string {\n const normalized = OPTION_LOOKUP[category].get(value.toLowerCase());\n return normalized ?? value;\n}\n","const VITE_WEB_FRONTENDS = new Set([\"react-router\", \"react-vite\", \"svelte\", \"fresh\"]);\nconst ASTRO_WEB_FRONTENDS = new Set([\"astro\"]);\n\nexport function getLocalWebDevPort(frontend: readonly string[]): 3001 | 4321 | 5173 {\n if (frontend.some((entry) => VITE_WEB_FRONTENDS.has(entry))) {\n return 5173;\n }\n\n if (frontend.some((entry) => ASTRO_WEB_FRONTENDS.has(entry))) {\n return 4321;\n }\n\n return 3001;\n}\n"],"mappings":"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AAQ;;;;;ACxgFnB,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,yBAAyB;CAC7B;CACA;CACA;CACA;CACD;AAED,MAAM,yBAAyB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,uBAAuB,CAAC,aAAa,WAAW;AAEtD,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,iBAAiB,CAAC,MAAM,WAAW;AACzC,MAAM,wBAAwB,CAAC,QAAQ,QAAQ;AAE/C,MAAM,0BAA0B,IAAI,IAAoB;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,MAAMC,qBAAgE;CACpE,KAAK;CACL,aAAa;CACb,gBAAgB;CAChB,kBAAkB;CAClB,SAAS;CACT,SAAS;CACT,UAAU;CACV,KAAK;CACL,SAAS;CACT,WAAW;CACX,cAAc;CACd,MAAM;CACN,UAAU;CACV,OAAO;CACP,YAAY;CACZ,SAAS;CACT,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,OAAO;CACP,YAAY;CACZ,SAAS;CACT,UAAU;CACV,UAAU;CACV,SAAS;CACT,MAAM;CACN,QAAQ;CACR,aAAa;CACb,WAAW;CACX,cAAc;CACd,WAAW;CACX,KAAK;CACL,cAAc;CACd,WAAW;CACX,aAAa;CACb,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,gBAAgB;CAChB,UAAU;CACV,IAAI;CACJ,QAAQ;CACR,KAAK;CACL,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;CACZ,cAAc;CACd,kBAAkB;CAClB,cAAc;CACd,SA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ACN,MAAM;EACN,MAAM;EACP;CACD,mBAAmB;EACjB,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,UAAU;EACV,WAAW;EACZ;CACD,kBAAkB,EAChB,SAAS,WACV;CACD,iBAAiB,EACf,SAAS,WACV;CACD,YAAY;EACV,OAAO;EACP,OAAO;EACP,SAAS;EACT,aAAa;EACb,eAAe;EACf,QAAQ;EACR,SAAS;EACT,WAAW;EACX,eAAe;EACf,QAAQ;EACR,kBAAkB;EAClB,cAAc;EACf;CACD,cAAc,EACZ,SAAS,WACV;CACD,kBAAkB;EAChB,MAAM;EACN,aAAa;EACb,QAAQ;EACT;CACD,cAAc;EACZ,QAAQ;EACR,QAAQ;EACT;CACD,SAAS;EACP,WAAW;EACX,MAAM;EACN,QAAQ;EACT;CACD,SAAS;EACP,iBAAiB;EACjB,OAAO;EACR;CACD,SAAS;EACP,MAAM;EACN,SAAS;EACV;CACD,eAAe;EACb,OAAO;EACP,WAAW;EACX,cAAc;EACd,QAAQ;EACR,cAAc;EACd,SAAS;EACV;CACD,aAAa;EACX,SAAS;EACT,cAAc;EACf;CACD,mBAAmB;EACjB,oBAAoB;EACpB,MAAM;EACP;CACD,aAAa;EACX,MAAM;EACN,OAAO;EACR;CACD,UAAU,EACR,QAAQ,UACT;CACD,oBAAoB;EAClB,SAAS;EACT,QAAQ;EACR,OAAO;EACP,UAAU;EACX;CACD,WAAW;EACT,YAAY;EACZ,UAAU;EACV,gBAAgB;EACjB;CACD,kBAAkB,EAChB,UAAU,YACX;CACD,UAAU;EACR,WAAW;EACX,YAAY;EACZ,cAAc;EACd,iBAAiB;EACjB,WAAW;EACX,QAAQ;EACT;CACD,YAAY;EACV,SAAS;EACT,KAAK;EACN;CACD,iBAAiB,EACf,QAAQ,UACT;CACD,eAAe,EACb,YAAY,cACb;CACD,eAAe,EACb,MAAM,QACP;CACD,gBAAgB;EACd,KAAK;EACL,MAAM;EACN,OAAO;EACP,KAAK;EACN;CACD,OAAO;EACL,MAAM;EACN,MAAM;EACN,KAAK;EACN;CACD,OAAO,EACL,WAAW,WACZ;CACD,OAAO;EACL,OAAO;EACP,WA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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/local-dev.ts"],"sourcesContent":["const VITE_WEB_FRONTENDS = new Set([\"react-router\", \"react-vite\", \"svelte\", \"fresh\"]);\nconst ASTRO_WEB_FRONTENDS = new Set([\"astro\"]);\n\nexport function getLocalWebDevPort(frontend: readonly string[]): 3001 | 4321 | 5173 {\n if (frontend.some((entry) => VITE_WEB_FRONTENDS.has(entry))) {\n return 5173;\n }\n\n if (frontend.some((entry) => ASTRO_WEB_FRONTENDS.has(entry))) {\n return 4321;\n }\n\n return 3001;\n}\n"],"mappings":";;;;;;AAAA,MAAM,qBAAqB,IAAI,IAAI;CAAC;CAAgB;CAAc;CAAU;CAAQ,CAAC;AACrF,MAAM,sBAAsB,IAAI,IAAI,CAAC,QAAQ,CAAC;AAE9C,SAAgB,mBAAmB,UAAiD;AAClF,KAAI,SAAS,MAAM,UAAU,mBAAmB,IAAI,MAAM,CAAC,CACzD,QAAO;AAGT,KAAI,SAAS,MAAM,UAAU,oBAAoB,IAAI,MAAM,CAAC,CAC1D,QAAO;AAGT,QAAO"}
|
package/dist/json-schema.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as FrontendSchema, Ct as JavaBuildToolSchema, Dt as JavaWebFrameworkSchema, Et as JavaTestingLibrariesSchema, F as DirectoryConflictSchema, Gt as PackageManagerSchema, Kt as PaymentsSchema, Mt as ORMSchema, N as DatabaseSchema, P as DatabaseSetupSchema, Rn as ServerDeploySchema, St as JavaAuthSchema, Tt as JavaOrmSchema, U as ExamplesSchema, Yn as TemplateSchema, _ as AuthSchema, f as AddonsSchema, gn as RuntimeSchema, ir as WebDeploySchema, k as CreateInputSchema, mt as InitResultSchema, qt as ProjectConfigSchema, s as APISchema, wt as JavaLibrariesSchema, x as BetterTStackConfigSchema, y as BackendSchema } from "./schemas-
|
|
1
|
+
import { $ as FrontendSchema, Ct as JavaBuildToolSchema, Dt as JavaWebFrameworkSchema, Et as JavaTestingLibrariesSchema, F as DirectoryConflictSchema, Gt as PackageManagerSchema, Kt as PaymentsSchema, Mt as ORMSchema, N as DatabaseSchema, P as DatabaseSetupSchema, Rn as ServerDeploySchema, St as JavaAuthSchema, Tt as JavaOrmSchema, U as ExamplesSchema, Yn as TemplateSchema, _ as AuthSchema, f as AddonsSchema, gn as RuntimeSchema, ir as WebDeploySchema, k as CreateInputSchema, mt as InitResultSchema, qt as ProjectConfigSchema, s as APISchema, wt as JavaLibrariesSchema, x as BetterTStackConfigSchema, y as BackendSchema } from "./schemas-DDTcRKek.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
//#region src/json-schema.ts
|
|
@@ -4335,4 +4335,4 @@ declare const SHADCN_FONT_VALUES: ("inter" | "geist" | "noto-sans" | "nunito-san
|
|
|
4335
4335
|
declare const SHADCN_RADIUS_VALUES: ("none" | "default" | "small" | "medium" | "large")[];
|
|
4336
4336
|
//#endregion
|
|
4337
4337
|
export { FrontendSchema as $, VALIDATION_VALUES as $n, PythonQualitySchema as $t, DATABASE_SETUP_VALUES as A, SHADCN_BASE_VALUES as An, LoggingSchema as At, EcosystemSchema as B, ShadcnBaseSchema as Bn, PYTHON_ORM_VALUES as Bt, CLIInputSchema as C, RustLibrariesSchema as Cn, JavaBuildToolSchema as Ct, CSS_FRAMEWORK_VALUES as D, SEARCH_VALUES as Dn, JavaWebFrameworkSchema as Dt, CSSFrameworkSchema as E, RustWebFrameworkSchema as En, JavaTestingLibrariesSchema as Et, DirectoryConflictSchema as F, SHADCN_STYLE_VALUES as Fn, PACKAGE_MANAGER_VALUES as Ft, FILE_STORAGE_VALUES as G, ShadcnStyleSchema as Gn, PackageManagerSchema as Gt, EmailSchema as H, ShadcnFontSchema as Hn, PYTHON_TASK_QUEUE_VALUES as Ht, ECOSYSTEM_VALUES as I, STATE_MANAGEMENT_VALUES as In, PAYMENTS_VALUES as It, FRONTEND_VALUES as J, TESTING_VALUES as Jn, ProjectNameSchema as Jt, FILE_UPLOAD_VALUES as K, StateManagementSchema as Kn, PaymentsSchema as Kt, EFFECT_VALUES as L, SearchSchema as Ln, PYTHON_AI_VALUES as Lt, DIRECTORY_CONFLICT_VALUES as M, SHADCN_FONT_VALUES as Mn, ORMSchema as Mt, DatabaseSchema as N, SHADCN_ICON_LIBRARY_VALUES as Nn, ORM_VALUES as Nt, CachingSchema as O, SERVER_DEPLOY_VALUES as On, JobQueueSchema as Ot, DatabaseSetupSchema as P, SHADCN_RADIUS_VALUES as Pn, ObservabilitySchema as Pt, FormsSchema as Q, UI_LIBRARY_VALUES as Qn, PythonOrmSchema as Qt, EMAIL_VALUES as R, ServerDeploySchema as Rn, PYTHON_AUTH_VALUES as Rt, CACHING_VALUES as S, RustFrontendSchema as Sn, JavaAuthSchema as St, CMS_VALUES as T, RustOrmSchema as Tn, JavaOrmSchema as Tt, ExamplesSchema as U, ShadcnIconLibrarySchema as Un, PYTHON_VALIDATION_VALUES as Ut, EffectSchema as V, ShadcnColorThemeSchema as Vn, PYTHON_QUALITY_VALUES as Vt, FEATURE_FLAGS_VALUES as W, ShadcnRadiusSchema as Wn, PYTHON_WEB_FRAMEWORK_VALUES as Wt, FileStorageSchema as X, TestingSchema as Xn, PythonAuthSchema as Xt, FeatureFlagsSchema as Y, TemplateSchema as Yn, PythonAiSchema as Yt, FileUploadSchema as Z, UILibrarySchema as Zn, PythonGraphqlSchema as Zt, AuthSchema as _, RustApiSchema as _n, JAVA_LIBRARIES_VALUES as _t, ANALYTICS_VALUES as a, RUST_API_VALUES as an, GO_WEB_FRAMEWORK_VALUES as at, BetterTStackConfigFileSchema as b, RustCliSchema as bn, JAVA_WEB_FRAMEWORK_VALUES as bt, API_VALUES as c, RUST_CLI_VALUES as cn, GoCliSchema as ct, AddInputSchema as d, RUST_LIBRARIES_VALUES as dn, GoWebFrameworkSchema as dt, PythonTaskQueueSchema as en, VERSION_CHANNEL_VALUES as er, GO_API_VALUES as et, AddonsSchema as f, RUST_LOGGING_VALUES as fn, I18N_VALUES as ft, AstroIntegrationSchema as g, RuntimeSchema as gn, JAVA_BUILD_TOOL_VALUES as gt, AnimationSchema as h, RealtimeSchema as hn, JAVA_AUTH_VALUES as ht, AI_VALUES as i, RUNTIME_VALUES as in, WebDeploySchema as ir, GO_ORM_VALUES as it, DATABASE_VALUES as j, SHADCN_COLOR_THEME_VALUES as jn, OBSERVABILITY_VALUES as jt, CreateInputSchema as k, SHADCN_BASE_COLOR_VALUES as kn, LOGGING_VALUES as kt, ASTRO_INTEGRATION_VALUES as l, RUST_ERROR_HANDLING_VALUES as ln, GoLoggingSchema as lt, AnalyticsSchema as m, RUST_WEB_FRAMEWORK_VALUES as mn, InitResultSchema as mt, AISchema as n, PythonWebFrameworkSchema as nn, VersionChannelSchema as nr, GO_CLI_VALUES as nt, ANIMATION_VALUES as o, RUST_AUTH_VALUES as on, GoApiSchema as ot, AiDocsSchema as p, RUST_ORM_VALUES as pn, I18nSchema as pt, FORMS_VALUES as q, TEMPLATE_VALUES as qn, ProjectConfigSchema as qt, AI_DOCS_VALUES as r, REALTIME_VALUES as rn, WEB_DEPLOY_VALUES as rr, GO_LOGGING_VALUES as rt, APISchema as s, RUST_CACHING_VALUES as sn, GoAuthSchema as st, ADDONS_VALUES as t, PythonValidationSchema as tn, ValidationSchema as tr, GO_AUTH_VALUES as tt, AUTH_VALUES as u, RUST_FRONTEND_VALUES as un, GoOrmSchema as ut, BACKEND_VALUES as v, RustAuthSchema as vn, JAVA_ORM_VALUES as vt, CMSSchema as w, RustLoggingSchema as wn, JavaLibrariesSchema as wt, BetterTStackConfigSchema as x, RustErrorHandlingSchema as xn, JOB_QUEUE_VALUES as xt, BackendSchema as y, RustCachingSchema as yn, JAVA_TESTING_LIBRARIES_VALUES as yt, EXAMPLES_VALUES as z, ShadcnBaseColorSchema as zn, PYTHON_GRAPHQL_VALUES as zt };
|
|
4338
|
-
//# sourceMappingURL=schemas-
|
|
4338
|
+
//# sourceMappingURL=schemas-9siFEKYg.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas-BsdLtIDm.d.mts","names":[],"sources":["../src/schemas.ts"],"sourcesContent":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;cAId,qBAAmB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0FnB,0BAAwB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuFxB,8BAA4B,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAW5B,kBAAgB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAWhB;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA"}
|
|
1
|
+
{"version":3,"file":"schemas-9siFEKYg.d.mts","names":[],"sources":["../src/schemas.ts"],"sourcesContent":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;cAId,qBAAmB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0FnB,0BAAwB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuFxB,8BAA4B,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAW5B,kBAAgB,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAWhB;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA"}
|
|
@@ -940,4 +940,4 @@ const SHADCN_RADIUS_VALUES = ShadcnRadiusSchema.options;
|
|
|
940
940
|
|
|
941
941
|
//#endregion
|
|
942
942
|
export { FrontendSchema as $, VALIDATION_VALUES as $n, PythonQualitySchema as $t, DATABASE_SETUP_VALUES as A, SHADCN_BASE_VALUES as An, LoggingSchema as At, EcosystemSchema as B, ShadcnBaseSchema as Bn, PYTHON_ORM_VALUES as Bt, CLIInputSchema as C, RustLibrariesSchema as Cn, JavaBuildToolSchema as Ct, CSS_FRAMEWORK_VALUES as D, SEARCH_VALUES as Dn, JavaWebFrameworkSchema as Dt, CSSFrameworkSchema as E, RustWebFrameworkSchema as En, JavaTestingLibrariesSchema as Et, DirectoryConflictSchema as F, SHADCN_STYLE_VALUES as Fn, PACKAGE_MANAGER_VALUES as Ft, FILE_STORAGE_VALUES as G, ShadcnStyleSchema as Gn, PackageManagerSchema as Gt, EmailSchema as H, ShadcnFontSchema as Hn, PYTHON_TASK_QUEUE_VALUES as Ht, ECOSYSTEM_VALUES as I, STATE_MANAGEMENT_VALUES as In, PAYMENTS_VALUES as It, FRONTEND_VALUES as J, TESTING_VALUES as Jn, ProjectNameSchema as Jt, FILE_UPLOAD_VALUES as K, StateManagementSchema as Kn, PaymentsSchema as Kt, EFFECT_VALUES as L, SearchSchema as Ln, PYTHON_AI_VALUES as Lt, DIRECTORY_CONFLICT_VALUES as M, SHADCN_FONT_VALUES as Mn, ORMSchema as Mt, DatabaseSchema as N, SHADCN_ICON_LIBRARY_VALUES as Nn, ORM_VALUES as Nt, CachingSchema as O, SERVER_DEPLOY_VALUES as On, JobQueueSchema as Ot, DatabaseSetupSchema as P, SHADCN_RADIUS_VALUES as Pn, ObservabilitySchema as Pt, FormsSchema as Q, UI_LIBRARY_VALUES as Qn, PythonOrmSchema as Qt, EMAIL_VALUES as R, ServerDeploySchema as Rn, PYTHON_AUTH_VALUES as Rt, CACHING_VALUES as S, RustFrontendSchema as Sn, JavaAuthSchema as St, CMS_VALUES as T, RustOrmSchema as Tn, JavaOrmSchema as Tt, ExamplesSchema as U, ShadcnIconLibrarySchema as Un, PYTHON_VALIDATION_VALUES as Ut, EffectSchema as V, ShadcnColorThemeSchema as Vn, PYTHON_QUALITY_VALUES as Vt, FEATURE_FLAGS_VALUES as W, ShadcnRadiusSchema as Wn, PYTHON_WEB_FRAMEWORK_VALUES as Wt, FileStorageSchema as X, TestingSchema as Xn, PythonAuthSchema as Xt, FeatureFlagsSchema as Y, TemplateSchema as Yn, PythonAiSchema as Yt, FileUploadSchema as Z, UILibrarySchema as Zn, PythonGraphqlSchema as Zt, AuthSchema as _, RustApiSchema as _n, JAVA_LIBRARIES_VALUES as _t, ANALYTICS_VALUES as a, RUST_API_VALUES as an, GO_WEB_FRAMEWORK_VALUES as at, BetterTStackConfigFileSchema as b, RustCliSchema as bn, JAVA_WEB_FRAMEWORK_VALUES as bt, API_VALUES as c, RUST_CLI_VALUES as cn, GoCliSchema as ct, AddInputSchema as d, RUST_LIBRARIES_VALUES as dn, GoWebFrameworkSchema as dt, PythonTaskQueueSchema as en, VERSION_CHANNEL_VALUES as er, GO_API_VALUES as et, AddonsSchema as f, RUST_LOGGING_VALUES as fn, I18N_VALUES as ft, AstroIntegrationSchema as g, RuntimeSchema as gn, JAVA_BUILD_TOOL_VALUES as gt, AnimationSchema as h, RealtimeSchema as hn, JAVA_AUTH_VALUES as ht, AI_VALUES as i, RUNTIME_VALUES as in, WebDeploySchema as ir, GO_ORM_VALUES as it, DATABASE_VALUES as j, SHADCN_COLOR_THEME_VALUES as jn, OBSERVABILITY_VALUES as jt, CreateInputSchema as k, SHADCN_BASE_COLOR_VALUES as kn, LOGGING_VALUES as kt, ASTRO_INTEGRATION_VALUES as l, RUST_ERROR_HANDLING_VALUES as ln, GoLoggingSchema as lt, AnalyticsSchema as m, RUST_WEB_FRAMEWORK_VALUES as mn, InitResultSchema as mt, AISchema as n, PythonWebFrameworkSchema as nn, VersionChannelSchema as nr, GO_CLI_VALUES as nt, ANIMATION_VALUES as o, RUST_AUTH_VALUES as on, GoApiSchema as ot, AiDocsSchema as p, RUST_ORM_VALUES as pn, I18nSchema as pt, FORMS_VALUES as q, TEMPLATE_VALUES as qn, ProjectConfigSchema as qt, AI_DOCS_VALUES as r, REALTIME_VALUES as rn, WEB_DEPLOY_VALUES as rr, GO_LOGGING_VALUES as rt, APISchema as s, RUST_CACHING_VALUES as sn, GoAuthSchema as st, ADDONS_VALUES as t, PythonValidationSchema as tn, ValidationSchema as tr, GO_AUTH_VALUES as tt, AUTH_VALUES as u, RUST_FRONTEND_VALUES as un, GoOrmSchema as ut, BACKEND_VALUES as v, RustAuthSchema as vn, JAVA_ORM_VALUES as vt, CMSSchema as w, RustLoggingSchema as wn, JavaLibrariesSchema as wt, BetterTStackConfigSchema as x, RustErrorHandlingSchema as xn, JOB_QUEUE_VALUES as xt, BackendSchema as y, RustCachingSchema as yn, JAVA_TESTING_LIBRARIES_VALUES as yt, EXAMPLES_VALUES as z, ShadcnBaseColorSchema as zn, PYTHON_GRAPHQL_VALUES as zt };
|
|
943
|
-
//# sourceMappingURL=schemas-
|
|
943
|
+
//# sourceMappingURL=schemas-DDTcRKek.mjs.map
|