create-stacksfinder 0.6.5 → 0.6.7
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/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -147,7 +147,7 @@ to recommend your optimal stack.${$?`
|
|
|
147
147
|
│ ╰─────────────────────────────────────────────╯ │
|
|
148
148
|
│ │
|
|
149
149
|
╰──────────────────────────────────────────────────────╯
|
|
150
|
-
`;function D9(q="minimal"){switch(q){case"full":return N9;case"compact":return y9;case"box":return g9;case"oneline":return E9;case"shadow":return I9;case"minimal":default:return R9}}function x9(q="minimal"){let _=D9(q);console.log(bq.default.green(_))}function Z6(q="minimal"){x9(q),console.log(bq.default.dim(" Scaffold optimized tech stacks")),console.log(bq.default.dim(" Powered by deterministic scoring")),console.log("")}var y8=L(f8(),1);function L9(q,_,f){return{isEnterprise:q.context.scale==="enterprise",isHighScore:q.stackScore.score>=85,hasComplexStack:q.categories.length>=5,projectName:f,phase:_}}function s9(q){if(q.phase==="post-recommendation"){if(q.isEnterprise)return{message:"Need compliance reports & team collaboration?",link:"stacksfinder.com/enterprise"};return{message:"Fine-tune with 25+ constraints:",link:"stacksfinder.com/builder"}}if(q.isHighScore)return{message:"Save & share this stack:",link:"stacksfinder.com/blueprint/new"};if(q.isEnterprise)return{message:`Get compliance reports for ${q.projectName||"your project"}:`,link:"stacksfinder.com/enterprise"};return{message:"Use in Cursor/Claude:",link:"npm i -g @stacksfinder/mcp-server"}}function d_(q,_,f){let $=L9(q,_,f),P=s9($);console.log(""),console.log(y8.default.dim("─".repeat(50))),console.log(""),console.log(y8.default.dim(` ${P.message}`)),console.log(` ${y8.default.cyan(P.link)}`),console.log("")}function n6(q){console.log(""),console.log(y8.default.dim(" Something went wrong? Try the web version:")),console.log(` ${y8.default.cyan("stacksfinder.com/builder")}`)}var Z8=L(XK(),1);import{mkdir as cK,writeFile as NK,readFile as k1,copyFile as h1,access as z1}from"fs/promises";import{join as hq,dirname as yK}from"path";import{fileURLToPath as e1}from"url";function xq(q,_){let f=(X)=>{return _.categories.find((R)=>R.category===X)?.recommended.tech??null},$=(X)=>{return f(X)?.id??null},P=f("meta-framework"),j=f("database"),K=f("orm"),v=f("auth"),r=f("hosting"),w=f("payments"),O=f("backend"),m=P?.id??null,T=j?.id??null,h=K?.id??null,z=v?.id??null,H=w?.id??null,o=O?.id??null;return{projectName:q,projectType:_.context.projectType,scale:_.context.scale,framework:m,database:T,orm:h,auth:z,hosting:r?.id??null,payments:H,backend:o,frameworkEntry:P,databaseEntry:j,ormEntry:K,authEntry:v,hostingEntry:r,paymentsEntry:w,backendEntry:O,hasAuth:!!v,hasPayments:!!w,hasDatabase:!!j,isNextjs:m==="nextjs",isSvelteKit:m==="sveltekit",isNuxt:m==="nuxt",isRemix:m==="remix",isAstro:m==="astro",isSolidStart:m==="solidstart",isTanStackStart:m==="tanstack-start",isPostgres:["postgres","neon"].includes(T??""),isSqlite:T==="sqlite",isMongoDB:T==="mongodb",isSupabase:T==="supabase",isTurso:T==="turso",isDrizzle:h==="drizzle",isPrisma:h==="prisma",isKysely:h==="kysely",isMongoose:h==="mongoose",isBetterAuth:z==="better-auth",isClerk:z==="clerk",isAuthJs:z==="authjs",isAuth0:z==="auth0",isLucia:z==="lucia",isSupabaseAuth:z==="supabase-auth",isStripe:H==="stripe",isPaddle:H==="paddle",isLemonSqueezy:H==="lemonsqueezy",isPolar:H==="polar",hasBackend:!!O,isHono:o==="hono",isElysia:o==="elysia",isExpress:o==="express",isFastify:o==="fastify",ecosystem:_.context.ecosystem||"javascript"}}function AK(q){let _=[];if(_.push(...b5(q)),q.framework==="nextjs")_.push(...M5(q));else if(q.framework==="sveltekit")_.push(...C5(q));else if(q.framework==="nuxt")_.push(...V5(q));else if(q.framework==="remix")_.push(...S5(q));else if(q.framework==="astro")_.push(...c5(q));else if(q.framework==="solidstart")_.push(...F5(q));else if(q.framework==="tanstack-start")_.push(...Q5(q));if(q.auth==="better-auth")_.push(...N5(q));else if(q.auth==="clerk")_.push(...y5(q));else if(q.auth==="authjs")_.push(...R5(q));else if(q.auth==="auth0")_.push(...g5(q));else if(q.auth==="lucia")_.push(...K1(q));else if(q.auth==="supabase")_.push(...$1(q));if(q.payments==="stripe")_.push(...E5(q));else if(q.payments==="paddle")_.push(...I5(q));else if(q.payments==="lemonsqueezy")_.push(...D5(q));else if(q.payments==="polar")_.push(...q1(q));if(q.orm==="drizzle")_.push(...x5(q));else if(q.orm==="prisma")_.push(...s5(q));else if(q.orm==="kysely")_.push(...B5(q));else if(q.orm==="mongoose")_.push(..._1(q));if(q.backend==="hono")_.push(...U5(q));else if(q.backend==="elysia")_.push(...f1(q));else if(q.backend==="express")_.push(...P1(q));else if(q.backend==="fastify")_.push(...j1(q));return _}function b5(q){return[{src:"base/gitignore",dest:".gitignore"},{src:"base/env.example.hbs",dest:".env.example",isTemplate:!0},{src:"base/README.md.hbs",dest:"README.md",isTemplate:!0}]}function M5(q){return[{src:"frameworks/nextjs/next.config.ts.hbs",dest:"next.config.ts",isTemplate:!0},{src:"frameworks/nextjs/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/nextjs/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/nextjs/postcss.config.js",dest:"postcss.config.js"},{src:"frameworks/nextjs/app/layout.tsx.hbs",dest:"src/app/layout.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/page.tsx.hbs",dest:"src/app/page.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/globals.css",dest:"src/app/globals.css"},{src:"frameworks/nextjs/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/nextjs/components/ui/button.tsx",dest:"src/components/ui/button.tsx"},{src:"frameworks/nextjs/components/ui/card.tsx",dest:"src/components/ui/card.tsx"},{src:"frameworks/nextjs/components/ui/input.tsx",dest:"src/components/ui/input.tsx"},{src:"frameworks/nextjs/app/(marketing)/layout.tsx",dest:"src/app/(marketing)/layout.tsx"},{src:"frameworks/nextjs/app/(marketing)/pricing/page.tsx.hbs",dest:"src/app/(marketing)/pricing/page.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/(dashboard)/layout.tsx.hbs",dest:"src/app/(dashboard)/layout.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/dashboard/page.tsx.hbs",dest:"src/app/(dashboard)/dashboard/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/settings/page.tsx.hbs",dest:"src/app/(dashboard)/settings/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/billing/page.tsx.hbs",dest:"src/app/(dashboard)/billing/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/nextjs/components/header.tsx.hbs",dest:"src/components/header.tsx",isTemplate:!0},{src:"frameworks/nextjs/components/footer.tsx",dest:"src/components/footer.tsx"},{src:"frameworks/nextjs/components/sidebar.tsx.hbs",dest:"src/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function C5(q){return[{src:"frameworks/sveltekit/svelte.config.js",dest:"svelte.config.js"},{src:"frameworks/sveltekit/vite.config.ts.hbs",dest:"vite.config.ts",isTemplate:!0},{src:"frameworks/sveltekit/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/sveltekit/app.d.ts.hbs",dest:"src/app.d.ts",isTemplate:!0},{src:"frameworks/sveltekit/app.css",dest:"src/app.css"},{src:"frameworks/sveltekit/app.html.hbs",dest:"src/app.html",isTemplate:!0},{src:"frameworks/sveltekit/routes/+layout.svelte.hbs",dest:"src/routes/+layout.svelte",isTemplate:!0},{src:"frameworks/sveltekit/routes/+page.svelte.hbs",dest:"src/routes/+page.svelte",isTemplate:!0},{src:"frameworks/sveltekit/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/sveltekit/components/ui/Button.svelte",dest:"src/lib/components/ui/Button.svelte"},{src:"frameworks/sveltekit/components/ui/Card.svelte",dest:"src/lib/components/ui/Card.svelte"},{src:"frameworks/sveltekit/components/ui/Input.svelte",dest:"src/lib/components/ui/Input.svelte"},{src:"frameworks/sveltekit/routes/(marketing)/pricing/+page.svelte.hbs",dest:"src/routes/(marketing)/pricing/+page.svelte",isTemplate:!0},{src:"frameworks/sveltekit/routes/(app)/+layout.svelte.hbs",dest:"src/routes/(app)/+layout.svelte",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/+layout.server.ts.hbs",dest:"src/routes/(app)/+layout.server.ts",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/dashboard/+page.svelte",dest:"src/routes/(app)/dashboard/+page.svelte",condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/settings/+page.svelte",dest:"src/routes/(app)/settings/+page.svelte",condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/billing/+page.svelte.hbs",dest:"src/routes/(app)/billing/+page.svelte",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/sveltekit/hooks.server.ts.hbs",dest:"src/hooks.server.ts",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/components/Header.svelte.hbs",dest:"src/lib/components/Header.svelte",isTemplate:!0},{src:"frameworks/sveltekit/components/Footer.svelte",dest:"src/lib/components/Footer.svelte"},{src:"frameworks/sveltekit/components/Sidebar.svelte.hbs",dest:"src/lib/components/Sidebar.svelte",isTemplate:!0,condition:(f)=>!!f.auth}]}function V5(q){return[{src:"frameworks/nuxt/nuxt.config.ts.hbs",dest:"nuxt.config.ts",isTemplate:!0},{src:"frameworks/nuxt/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/nuxt/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/nuxt/app.vue.hbs",dest:"app.vue",isTemplate:!0},{src:"frameworks/nuxt/assets/css/main.css",dest:"assets/css/main.css"},{src:"frameworks/nuxt/pages/index.vue.hbs",dest:"pages/index.vue",isTemplate:!0},{src:"frameworks/nuxt/pages/pricing.vue.hbs",dest:"pages/pricing.vue",isTemplate:!0},{src:"frameworks/nuxt/layouts/default.vue.hbs",dest:"layouts/default.vue",isTemplate:!0},{src:"frameworks/nuxt/layouts/dashboard.vue.hbs",dest:"layouts/dashboard.vue",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/index.vue.hbs",dest:"pages/dashboard/index.vue",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/settings.vue",dest:"pages/dashboard/settings.vue",condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/billing.vue.hbs",dest:"pages/dashboard/billing.vue",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/nuxt/utils/cn.ts",dest:"utils/cn.ts"},{src:"frameworks/nuxt/components/ui/Button.vue",dest:"components/ui/Button.vue"},{src:"frameworks/nuxt/components/ui/Card.vue",dest:"components/ui/Card.vue"},{src:"frameworks/nuxt/components/ui/Input.vue",dest:"components/ui/Input.vue"},{src:"frameworks/nuxt/components/Header.vue.hbs",dest:"components/Header.vue",isTemplate:!0},{src:"frameworks/nuxt/components/Footer.vue",dest:"components/Footer.vue"},{src:"frameworks/nuxt/components/Sidebar.vue.hbs",dest:"components/Sidebar.vue",isTemplate:!0,condition:(f)=>!!f.auth}]}function S5(q){return[{src:"frameworks/remix/vite.config.ts.hbs",dest:"vite.config.ts",isTemplate:!0},{src:"frameworks/remix/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/remix/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/remix/app/root.tsx.hbs",dest:"app/root.tsx",isTemplate:!0},{src:"frameworks/remix/app/entry.client.tsx",dest:"app/entry.client.tsx"},{src:"frameworks/remix/app/entry.server.tsx",dest:"app/entry.server.tsx"},{src:"frameworks/remix/app/tailwind.css",dest:"app/tailwind.css"},{src:"frameworks/remix/app/routes/_index.tsx.hbs",dest:"app/routes/_index.tsx",isTemplate:!0},{src:"frameworks/remix/app/routes/pricing.tsx.hbs",dest:"app/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/remix/app/routes/dashboard.tsx.hbs",dest:"app/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard._index.tsx.hbs",dest:"app/routes/dashboard._index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard.settings.tsx",dest:"app/routes/dashboard.settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard.billing.tsx.hbs",dest:"app/routes/dashboard.billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/remix/app/lib/utils.ts",dest:"app/lib/utils.ts"},{src:"frameworks/remix/app/components/ui/button.tsx",dest:"app/components/ui/button.tsx"},{src:"frameworks/remix/app/components/ui/card.tsx",dest:"app/components/ui/card.tsx"},{src:"frameworks/remix/app/components/ui/input.tsx",dest:"app/components/ui/input.tsx"},{src:"frameworks/remix/app/components/header.tsx.hbs",dest:"app/components/header.tsx",isTemplate:!0},{src:"frameworks/remix/app/components/footer.tsx",dest:"app/components/footer.tsx"},{src:"frameworks/remix/app/components/sidebar.tsx.hbs",dest:"app/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function c5(q){return[{src:"frameworks/astro/astro.config.mjs.hbs",dest:"astro.config.mjs",isTemplate:!0},{src:"frameworks/astro/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/astro/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/astro/src/env.d.ts",dest:"src/env.d.ts"},{src:"frameworks/astro/src/styles/global.css",dest:"src/styles/global.css"},{src:"frameworks/astro/src/layouts/Layout.astro.hbs",dest:"src/layouts/Layout.astro",isTemplate:!0},{src:"frameworks/astro/src/layouts/DashboardLayout.astro.hbs",dest:"src/layouts/DashboardLayout.astro",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/index.astro.hbs",dest:"src/pages/index.astro",isTemplate:!0},{src:"frameworks/astro/src/pages/pricing.astro.hbs",dest:"src/pages/pricing.astro",isTemplate:!0},{src:"frameworks/astro/src/pages/dashboard/index.astro.hbs",dest:"src/pages/dashboard/index.astro",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/dashboard/settings.astro",dest:"src/pages/dashboard/settings.astro",condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/dashboard/billing.astro.hbs",dest:"src/pages/dashboard/billing.astro",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/astro/src/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/astro/src/components/ui/Button.tsx",dest:"src/components/ui/Button.tsx"},{src:"frameworks/astro/src/components/ui/Card.tsx",dest:"src/components/ui/Card.tsx"},{src:"frameworks/astro/src/components/ui/Input.tsx",dest:"src/components/ui/Input.tsx"},{src:"frameworks/astro/src/components/Header.astro.hbs",dest:"src/components/Header.astro",isTemplate:!0},{src:"frameworks/astro/src/components/Footer.astro",dest:"src/components/Footer.astro"},{src:"frameworks/astro/src/components/Sidebar.astro.hbs",dest:"src/components/Sidebar.astro",isTemplate:!0,condition:(f)=>!!f.auth}]}function N5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/better-auth/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/better-auth/nextjs/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/nextjs/api/auth/[...all]/route.ts",dest:"src/app/api/auth/[...all]/route.ts"},{src:"auth/better-auth/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/better-auth/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/better-auth/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/better-auth/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/better-auth/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/better-auth/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/better-auth/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/better-auth/sveltekit/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/better-auth/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/better-auth/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/better-auth/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/better-auth/nuxt/server/utils/auth.ts.hbs",dest:"server/utils/auth.ts",isTemplate:!0},{src:"auth/better-auth/nuxt/composables/useAuth.ts",dest:"composables/useAuth.ts"},{src:"auth/better-auth/nuxt/server/api/auth/[...all].ts",dest:"server/api/auth/[...all].ts"},{src:"auth/better-auth/nuxt/middleware/auth.ts",dest:"middleware/auth.ts"},{src:"auth/better-auth/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/better-auth/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/better-auth/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/better-auth/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/better-auth/remix/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/remix/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/better-auth/remix/app/routes/api.auth.$.ts",dest:"app/routes/api.auth.$.ts"},{src:"auth/better-auth/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/better-auth/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/better-auth/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/better-auth/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/better-auth/astro/src/lib/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/better-auth/astro/src/lib/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/astro/src/pages/api/auth/[...all].ts",dest:"src/pages/api/auth/[...all].ts"},{src:"auth/better-auth/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/better-auth/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/better-auth/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/better-auth/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/better-auth/solidstart/src/lib/auth.server.ts.hbs",dest:"src/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/solidstart/src/lib/auth.client.ts",dest:"src/lib/auth.client.ts"},{src:"auth/better-auth/solidstart/src/routes/api/auth/[...all].ts",dest:"src/routes/api/auth/[...all].ts"},{src:"auth/better-auth/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/better-auth/solidstart/src/routes/register.tsx",dest:"src/routes/register.tsx"},{src:"auth/better-auth/solidstart/src/components/auth/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/better-auth/solidstart/src/components/auth/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/better-auth/tanstack-start/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/tanstack-start/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/better-auth/tanstack-start/app/routes/api.auth.$.ts",dest:"app/routes/api.auth.$.ts"},{src:"auth/better-auth/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/better-auth/tanstack-start/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/better-auth/tanstack-start/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/better-auth/tanstack-start/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});return _}function y5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/clerk/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/clerk/nextjs/app/(auth)/sign-in/[[...sign-in]]/page.tsx",dest:"src/app/(auth)/sign-in/[[...sign-in]]/page.tsx"},{src:"auth/clerk/nextjs/app/(auth)/sign-up/[[...sign-up]]/page.tsx",dest:"src/app/(auth)/sign-up/[[...sign-up]]/page.tsx"});return _}function R5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/authjs/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/authjs/nextjs/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/authjs/nextjs/api/auth/[...nextauth]/route.ts",dest:"src/app/api/auth/[...nextauth]/route.ts"},{src:"auth/authjs/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/authjs/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/authjs/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/authjs/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/authjs/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/authjs/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/authjs/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/authjs/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/authjs/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/authjs/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/authjs/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/authjs/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/authjs/nuxt/server/api/auth/[...].ts",dest:"server/api/auth/[...].ts"},{src:"auth/authjs/nuxt/composables/useAuth.ts",dest:"composables/useAuth.ts"},{src:"auth/authjs/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/authjs/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/authjs/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/authjs/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/authjs/remix/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/remix/app/lib/session.server.ts",dest:"app/lib/session.server.ts"},{src:"auth/authjs/remix/app/routes/auth.login.tsx",dest:"app/routes/auth.login.tsx"},{src:"auth/authjs/remix/app/routes/auth.logout.tsx",dest:"app/routes/auth.logout.tsx"},{src:"auth/authjs/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/authjs/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/authjs/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/authjs/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/authjs/astro/src/lib/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/authjs/astro/auth.config.ts.hbs",dest:"auth.config.ts",isTemplate:!0},{src:"auth/authjs/astro/src/pages/api/auth/[...auth].ts",dest:"src/pages/api/auth/[...auth].ts"},{src:"auth/authjs/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/authjs/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/authjs/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/authjs/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/authjs/solidstart/src/lib/auth.server.ts.hbs",dest:"src/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/solidstart/src/lib/auth.client.ts",dest:"src/lib/auth.client.ts"},{src:"auth/authjs/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/authjs/solidstart/src/routes/register.tsx",dest:"src/routes/register.tsx"},{src:"auth/authjs/solidstart/src/routes/logout.tsx",dest:"src/routes/logout.tsx"},{src:"auth/authjs/solidstart/src/components/auth/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/authjs/solidstart/src/components/auth/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/authjs/tanstack-start/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/tanstack-start/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/authjs/tanstack-start/app/routes/api.auth.me.ts",dest:"app/routes/api.auth.me.ts"},{src:"auth/authjs/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/authjs/tanstack-start/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/authjs/tanstack-start/app/routes/logout.tsx",dest:"app/routes/logout.tsx"},{src:"auth/authjs/tanstack-start/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/authjs/tanstack-start/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});return _}function g5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/auth0/nextjs/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/nextjs/api/auth/[auth0]/route.ts",dest:"src/app/api/auth/[auth0]/route.ts"},{src:"auth/auth0/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/auth0/nextjs/components/auth-button.tsx",dest:"src/components/auth/auth-button.tsx"},{src:"auth/auth0/nextjs/components/user-profile.tsx",dest:"src/components/auth/user-profile.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/auth0/sveltekit/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/sveltekit/hooks.client.ts",dest:"src/hooks.client.ts"},{src:"auth/auth0/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/auth0/sveltekit/routes/(auth)/callback/+page.svelte",dest:"src/routes/(auth)/callback/+page.svelte"},{src:"auth/auth0/sveltekit/components/AuthButton.svelte",dest:"src/lib/components/auth/AuthButton.svelte"},{src:"auth/auth0/sveltekit/components/UserProfile.svelte",dest:"src/lib/components/auth/UserProfile.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/auth0/nuxt/plugins/auth0.ts",dest:"plugins/auth0.ts"},{src:"auth/auth0/nuxt/composables/useAuth0.ts",dest:"composables/useAuth0.ts"},{src:"auth/auth0/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/auth0/nuxt/pages/callback.vue",dest:"pages/callback.vue"},{src:"auth/auth0/nuxt/components/AuthButton.vue",dest:"components/auth/AuthButton.vue"},{src:"auth/auth0/nuxt/components/UserProfile.vue",dest:"components/auth/UserProfile.vue"});else if(q.framework==="remix")_.push({src:"auth/auth0/remix/app/lib/auth0.ts",dest:"app/lib/auth0.ts"},{src:"auth/auth0/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/auth0/remix/app/routes/callback.tsx",dest:"app/routes/callback.tsx"},{src:"auth/auth0/remix/app/routes/logout.tsx",dest:"app/routes/logout.tsx"},{src:"auth/auth0/remix/app/components/auth/auth-button.tsx",dest:"app/components/auth/auth-button.tsx"},{src:"auth/auth0/remix/app/components/auth/user-profile.tsx",dest:"app/components/auth/user-profile.tsx"});else if(q.framework==="astro")_.push({src:"auth/auth0/astro/src/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/auth0/astro/src/pages/callback.astro",dest:"src/pages/callback.astro"},{src:"auth/auth0/astro/src/components/auth/AuthButton.tsx",dest:"src/components/auth/AuthButton.tsx"},{src:"auth/auth0/astro/src/components/auth/UserProfile.tsx",dest:"src/components/auth/UserProfile.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/auth0/solidstart/src/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/auth0/solidstart/src/routes/callback.tsx",dest:"src/routes/callback.tsx"},{src:"auth/auth0/solidstart/src/components/auth/auth-button.tsx",dest:"src/components/auth/auth-button.tsx"},{src:"auth/auth0/solidstart/src/components/auth/user-profile.tsx",dest:"src/components/auth/user-profile.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/auth0/tanstack-start/app/lib/auth0.ts",dest:"app/lib/auth0.ts"},{src:"auth/auth0/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/auth0/tanstack-start/app/routes/callback.tsx",dest:"app/routes/callback.tsx"},{src:"auth/auth0/tanstack-start/app/components/auth/auth-button.tsx",dest:"app/components/auth/auth-button.tsx"});return _}function E5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/stripe/nextjs/lib/stripe.ts",dest:"src/lib/stripe.ts"},{src:"payments/stripe/nextjs/lib/stripe-client.ts",dest:"src/lib/stripe-client.ts"},{src:"payments/stripe/nextjs/api/checkout/route.ts.hbs",dest:"src/app/api/checkout/route.ts",isTemplate:!0},{src:"payments/stripe/nextjs/api/webhooks/stripe/route.ts.hbs",dest:"src/app/api/webhooks/stripe/route.ts",isTemplate:!0},{src:"payments/stripe/nextjs/api/portal/route.ts",dest:"src/app/api/portal/route.ts"},{src:"payments/stripe/nextjs/components/pricing-card.tsx.hbs",dest:"src/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/nextjs/components/checkout-button.tsx",dest:"src/components/pricing/checkout-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/stripe/sveltekit/lib/stripe.ts",dest:"src/lib/server/stripe.ts"},{src:"payments/stripe/sveltekit/routes/api/checkout/+server.ts.hbs",dest:"src/routes/api/checkout/+server.ts",isTemplate:!0},{src:"payments/stripe/sveltekit/routes/api/webhooks/stripe/+server.ts.hbs",dest:"src/routes/api/webhooks/stripe/+server.ts",isTemplate:!0},{src:"payments/stripe/sveltekit/routes/api/portal/+server.ts",dest:"src/routes/api/portal/+server.ts"},{src:"payments/stripe/sveltekit/components/PricingCard.svelte.hbs",dest:"src/lib/components/pricing/PricingCard.svelte",isTemplate:!0},{src:"payments/stripe/sveltekit/components/CheckoutButton.svelte",dest:"src/lib/components/pricing/CheckoutButton.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/stripe/nuxt/server/utils/stripe.ts",dest:"server/utils/stripe.ts"},{src:"payments/stripe/nuxt/composables/useStripe.ts",dest:"composables/useStripe.ts"},{src:"payments/stripe/nuxt/server/api/checkout.post.ts.hbs",dest:"server/api/checkout.post.ts",isTemplate:!0},{src:"payments/stripe/nuxt/server/api/webhooks/stripe.post.ts.hbs",dest:"server/api/webhooks/stripe.post.ts",isTemplate:!0},{src:"payments/stripe/nuxt/server/api/portal.post.ts",dest:"server/api/portal.post.ts"},{src:"payments/stripe/nuxt/components/PricingCard.vue.hbs",dest:"components/pricing/PricingCard.vue",isTemplate:!0},{src:"payments/stripe/nuxt/components/CheckoutButton.vue",dest:"components/pricing/CheckoutButton.vue"});else if(q.framework==="remix")_.push({src:"payments/stripe/remix/app/lib/stripe.server.ts",dest:"app/lib/stripe.server.ts"},{src:"payments/stripe/remix/app/routes/api.checkout.ts.hbs",dest:"app/routes/api.checkout.ts",isTemplate:!0},{src:"payments/stripe/remix/app/routes/api.webhooks.stripe.ts.hbs",dest:"app/routes/api.webhooks.stripe.ts",isTemplate:!0},{src:"payments/stripe/remix/app/routes/api.portal.ts",dest:"app/routes/api.portal.ts"},{src:"payments/stripe/remix/app/components/pricing/pricing-card.tsx.hbs",dest:"app/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/remix/app/components/pricing/checkout-button.tsx",dest:"app/components/pricing/checkout-button.tsx"});else if(q.framework==="astro")_.push({src:"payments/stripe/astro/src/lib/stripe.ts",dest:"src/lib/stripe.ts"},{src:"payments/stripe/astro/src/pages/api/checkout.ts.hbs",dest:"src/pages/api/checkout.ts",isTemplate:!0},{src:"payments/stripe/astro/src/pages/api/webhooks/stripe.ts.hbs",dest:"src/pages/api/webhooks/stripe.ts",isTemplate:!0},{src:"payments/stripe/astro/src/pages/api/portal.ts",dest:"src/pages/api/portal.ts"},{src:"payments/stripe/astro/src/components/pricing/PricingCard.tsx.hbs",dest:"src/components/pricing/PricingCard.tsx",isTemplate:!0},{src:"payments/stripe/astro/src/components/pricing/CheckoutButton.tsx",dest:"src/components/pricing/CheckoutButton.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/stripe/solidstart/src/lib/stripe.server.ts",dest:"src/lib/stripe.server.ts"},{src:"payments/stripe/solidstart/src/routes/api/checkout.ts",dest:"src/routes/api/checkout.ts"},{src:"payments/stripe/solidstart/src/routes/api/webhooks/stripe.ts.hbs",dest:"src/routes/api/webhooks/stripe.ts",isTemplate:!0},{src:"payments/stripe/solidstart/src/routes/api/portal.ts",dest:"src/routes/api/portal.ts"},{src:"payments/stripe/solidstart/src/components/pricing/pricing-card.tsx.hbs",dest:"src/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/solidstart/src/components/pricing/checkout-button.tsx",dest:"src/components/pricing/checkout-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/stripe/tanstack-start/app/lib/stripe.server.ts",dest:"app/lib/stripe.server.ts"},{src:"payments/stripe/tanstack-start/app/routes/api.checkout.ts",dest:"app/routes/api.checkout.ts"},{src:"payments/stripe/tanstack-start/app/routes/api.webhooks.stripe.ts.hbs",dest:"app/routes/api.webhooks.stripe.ts",isTemplate:!0},{src:"payments/stripe/tanstack-start/app/components/pricing/pricing-card.tsx.hbs",dest:"app/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/tanstack-start/app/components/pricing/checkout-button.tsx",dest:"app/components/pricing/checkout-button.tsx"});return _}function I5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/paddle/nextjs/lib/paddle.ts",dest:"src/lib/paddle.ts"},{src:"payments/paddle/nextjs/api/webhooks/paddle/route.ts.hbs",dest:"src/app/api/webhooks/paddle/route.ts",isTemplate:!0},{src:"payments/paddle/nextjs/components/paddle-checkout.tsx",dest:"src/components/pricing/paddle-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/paddle/sveltekit/lib/paddle.ts",dest:"src/lib/server/paddle.ts"},{src:"payments/paddle/sveltekit/routes/api/webhooks/paddle/+server.ts.hbs",dest:"src/routes/api/webhooks/paddle/+server.ts",isTemplate:!0},{src:"payments/paddle/sveltekit/components/PaddleCheckout.svelte",dest:"src/lib/components/pricing/PaddleCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/paddle/nuxt/server/utils/paddle.ts",dest:"server/utils/paddle.ts"},{src:"payments/paddle/nuxt/composables/usePaddle.ts",dest:"composables/usePaddle.ts"},{src:"payments/paddle/nuxt/server/api/webhooks/paddle.post.ts.hbs",dest:"server/api/webhooks/paddle.post.ts",isTemplate:!0},{src:"payments/paddle/nuxt/components/PaddleCheckout.vue",dest:"components/pricing/PaddleCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/paddle/remix/app/lib/paddle.server.ts",dest:"app/lib/paddle.server.ts"},{src:"payments/paddle/remix/app/routes/api.webhooks.paddle.ts.hbs",dest:"app/routes/api.webhooks.paddle.ts",isTemplate:!0},{src:"payments/paddle/remix/app/components/pricing/paddle-checkout.tsx",dest:"app/components/pricing/paddle-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/paddle/astro/src/lib/paddle.ts",dest:"src/lib/paddle.ts"},{src:"payments/paddle/astro/src/pages/api/webhooks/paddle.ts.hbs",dest:"src/pages/api/webhooks/paddle.ts",isTemplate:!0},{src:"payments/paddle/astro/src/components/pricing/PaddleCheckout.tsx",dest:"src/components/pricing/PaddleCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/paddle/solidstart/src/lib/paddle.server.ts",dest:"src/lib/paddle.server.ts"},{src:"payments/paddle/solidstart/src/routes/api/webhooks/paddle.ts.hbs",dest:"src/routes/api/webhooks/paddle.ts",isTemplate:!0},{src:"payments/paddle/solidstart/src/components/pricing/paddle-checkout.tsx",dest:"src/components/pricing/paddle-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/paddle/tanstack-start/app/lib/paddle.server.ts",dest:"app/lib/paddle.server.ts"},{src:"payments/paddle/tanstack-start/app/routes/api.webhooks.paddle.ts.hbs",dest:"app/routes/api.webhooks.paddle.ts",isTemplate:!0},{src:"payments/paddle/tanstack-start/app/components/pricing/paddle-checkout.tsx",dest:"app/components/pricing/paddle-checkout.tsx"});return _}function D5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/lemonsqueezy/nextjs/lib/lemonsqueezy.ts",dest:"src/lib/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/nextjs/api/webhooks/lemonsqueezy/route.ts.hbs",dest:"src/app/api/webhooks/lemonsqueezy/route.ts",isTemplate:!0},{src:"payments/lemonsqueezy/nextjs/components/lemonsqueezy-checkout.tsx",dest:"src/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/lemonsqueezy/sveltekit/lib/lemonsqueezy.ts",dest:"src/lib/server/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/sveltekit/routes/api/webhooks/lemonsqueezy/+server.ts.hbs",dest:"src/routes/api/webhooks/lemonsqueezy/+server.ts",isTemplate:!0},{src:"payments/lemonsqueezy/sveltekit/components/LemonSqueezyCheckout.svelte",dest:"src/lib/components/pricing/LemonSqueezyCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/lemonsqueezy/nuxt/server/utils/lemonsqueezy.ts",dest:"server/utils/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/nuxt/composables/useLemonSqueezy.ts",dest:"composables/useLemonSqueezy.ts"},{src:"payments/lemonsqueezy/nuxt/server/api/webhooks/lemonsqueezy.post.ts.hbs",dest:"server/api/webhooks/lemonsqueezy.post.ts",isTemplate:!0},{src:"payments/lemonsqueezy/nuxt/components/LemonSqueezyCheckout.vue",dest:"components/pricing/LemonSqueezyCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/lemonsqueezy/remix/app/lib/lemonsqueezy.server.ts",dest:"app/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/remix/app/routes/api.webhooks.lemonsqueezy.ts.hbs",dest:"app/routes/api.webhooks.lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/remix/app/components/pricing/lemonsqueezy-checkout.tsx",dest:"app/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/lemonsqueezy/astro/src/lib/lemonsqueezy.ts",dest:"src/lib/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/astro/src/pages/api/webhooks/lemonsqueezy.ts.hbs",dest:"src/pages/api/webhooks/lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/astro/src/components/pricing/LemonSqueezyCheckout.tsx",dest:"src/components/pricing/LemonSqueezyCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/lemonsqueezy/solidstart/src/lib/lemonsqueezy.server.ts",dest:"src/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/solidstart/src/routes/api/webhooks/lemonsqueezy.ts.hbs",dest:"src/routes/api/webhooks/lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/solidstart/src/components/pricing/lemonsqueezy-checkout.tsx",dest:"src/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/lemonsqueezy/tanstack-start/app/lib/lemonsqueezy.server.ts",dest:"app/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/tanstack-start/app/routes/api.webhooks.lemonsqueezy.ts.hbs",dest:"app/routes/api.webhooks.lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/tanstack-start/app/components/pricing/lemonsqueezy-checkout.tsx",dest:"app/components/pricing/lemonsqueezy-checkout.tsx"});return _}function aK(q){if(q.isRemix)return"app/lib";return"src/lib/db"}function x5(q){let _=aK(q),f=q.isRemix?"db.server.ts":"index.ts",$=q.isRemix?"db.schema.ts":"schema.ts";return[{src:"database/drizzle/drizzle.config.ts.hbs",dest:"drizzle.config.ts",isTemplate:!0},{src:"database/drizzle/schema.ts.hbs",dest:`${_}/${$}`,isTemplate:!0},{src:"database/drizzle/index.ts.hbs",dest:`${_}/${f}`,isTemplate:!0}]}function L5(q){if(q.isRemix)return"app/lib/db.server.ts";return"src/lib/db/index.ts"}function s5(q){return[{src:"database/prisma/schema.prisma.hbs",dest:"prisma/schema.prisma",isTemplate:!0},{src:"database/prisma/client.ts",dest:L5(q)}]}function B5(q){let _=aK(q),f=q.isRemix?"db.server.ts":"index.ts";return[{src:"database/kysely/db.ts.hbs",dest:`${_}/${f}`,isTemplate:!0},{src:"database/kysely/types.ts.hbs",dest:`${_}/types.ts`,isTemplate:!0},{src:"database/kysely/kysely.config.ts.hbs",dest:"kysely.config.ts",isTemplate:!0},{src:"database/kysely/migrations/001_initial.ts.hbs",dest:`${_}/migrations/001_initial.ts`,isTemplate:!0}]}function U5(q){let _=[{src:"backend/hono/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/hono/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/hono/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/hono/src/middleware/cors.ts",dest:"src/api/middleware/cors.ts"},{src:"backend/hono/src/middleware/logger.ts",dest:"src/api/middleware/logger.ts"},{src:"backend/hono/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/hono/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/hono/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/hono/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/hono/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function F5(q){return[{src:"frameworks/solidstart/app.config.ts",dest:"app.config.ts"},{src:"frameworks/solidstart/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/solidstart/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/solidstart/src/app.tsx.hbs",dest:"src/app.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/app.css",dest:"src/app.css"},{src:"frameworks/solidstart/src/entry-client.tsx",dest:"src/entry-client.tsx"},{src:"frameworks/solidstart/src/entry-server.tsx",dest:"src/entry-server.tsx"},{src:"frameworks/solidstart/src/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/solidstart/src/components/ui/Button.tsx",dest:"src/components/ui/Button.tsx"},{src:"frameworks/solidstart/src/components/ui/Card.tsx",dest:"src/components/ui/Card.tsx"},{src:"frameworks/solidstart/src/components/ui/Input.tsx",dest:"src/components/ui/Input.tsx"},{src:"frameworks/solidstart/src/routes/index.tsx.hbs",dest:"src/routes/index.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/routes/pricing.tsx.hbs",dest:"src/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/routes/dashboard.tsx.hbs",dest:"src/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/index.tsx.hbs",dest:"src/routes/dashboard/index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/settings.tsx",dest:"src/routes/dashboard/settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/billing.tsx.hbs",dest:"src/routes/dashboard/billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/solidstart/src/components/Header.tsx.hbs",dest:"src/components/Header.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/components/Footer.tsx",dest:"src/components/Footer.tsx"},{src:"frameworks/solidstart/src/components/Sidebar.tsx.hbs",dest:"src/components/Sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function Q5(q){return[{src:"frameworks/tanstack-start/app.config.ts",dest:"app.config.ts"},{src:"frameworks/tanstack-start/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/tanstack-start/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/tanstack-start/app/client.tsx",dest:"app/client.tsx"},{src:"frameworks/tanstack-start/app/ssr.tsx",dest:"app/ssr.tsx"},{src:"frameworks/tanstack-start/app/router.tsx",dest:"app/router.tsx"},{src:"frameworks/tanstack-start/app/global.css",dest:"app/global.css"},{src:"frameworks/tanstack-start/app/lib/utils.ts",dest:"app/lib/utils.ts"},{src:"frameworks/tanstack-start/app/routes/__root.tsx.hbs",dest:"app/routes/__root.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/index.tsx.hbs",dest:"app/routes/index.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/pricing.tsx.hbs",dest:"app/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/dashboard.tsx.hbs",dest:"app/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.index.tsx.hbs",dest:"app/routes/dashboard.index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.settings.tsx",dest:"app/routes/dashboard.settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.billing.tsx.hbs",dest:"app/routes/dashboard.billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/tanstack-start/app/components/ui/button.tsx",dest:"app/components/ui/button.tsx"},{src:"frameworks/tanstack-start/app/components/ui/card.tsx",dest:"app/components/ui/card.tsx"},{src:"frameworks/tanstack-start/app/components/ui/input.tsx",dest:"app/components/ui/input.tsx"},{src:"frameworks/tanstack-start/app/components/header.tsx.hbs",dest:"app/components/header.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/components/footer.tsx",dest:"app/components/footer.tsx"},{src:"frameworks/tanstack-start/app/components/sidebar.tsx.hbs",dest:"app/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function q1(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/polar/nextjs/lib/polar.ts",dest:"src/lib/polar.ts"},{src:"payments/polar/nextjs/api/webhooks/polar/route.ts.hbs",dest:"src/app/api/webhooks/polar/route.ts",isTemplate:!0},{src:"payments/polar/nextjs/components/polar-checkout.tsx",dest:"src/components/pricing/polar-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/polar/sveltekit/lib/polar.ts",dest:"src/lib/server/polar.ts"},{src:"payments/polar/sveltekit/routes/api/webhooks/polar/+server.ts.hbs",dest:"src/routes/api/webhooks/polar/+server.ts",isTemplate:!0},{src:"payments/polar/sveltekit/components/PolarCheckout.svelte",dest:"src/lib/components/pricing/PolarCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/polar/nuxt/server/utils/polar.ts",dest:"server/utils/polar.ts"},{src:"payments/polar/nuxt/composables/usePolar.ts",dest:"composables/usePolar.ts"},{src:"payments/polar/nuxt/server/api/webhooks/polar.post.ts.hbs",dest:"server/api/webhooks/polar.post.ts",isTemplate:!0},{src:"payments/polar/nuxt/components/PolarCheckout.vue",dest:"components/pricing/PolarCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/polar/remix/app/lib/polar.server.ts",dest:"app/lib/polar.server.ts"},{src:"payments/polar/remix/app/routes/api.webhooks.polar.ts.hbs",dest:"app/routes/api.webhooks.polar.ts",isTemplate:!0},{src:"payments/polar/remix/app/components/pricing/polar-checkout.tsx",dest:"app/components/pricing/polar-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/polar/astro/src/lib/polar.ts",dest:"src/lib/polar.ts"},{src:"payments/polar/astro/src/pages/api/webhooks/polar.ts.hbs",dest:"src/pages/api/webhooks/polar.ts",isTemplate:!0},{src:"payments/polar/astro/src/components/pricing/PolarCheckout.tsx",dest:"src/components/pricing/PolarCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/polar/solidstart/src/lib/polar.server.ts",dest:"src/lib/polar.server.ts"},{src:"payments/polar/solidstart/src/routes/api/webhooks/polar.ts.hbs",dest:"src/routes/api/webhooks/polar.ts",isTemplate:!0},{src:"payments/polar/solidstart/src/components/pricing/polar-checkout.tsx",dest:"src/components/pricing/polar-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/polar/tanstack-start/app/lib/polar.server.ts",dest:"app/lib/polar.server.ts"},{src:"payments/polar/tanstack-start/app/routes/api.webhooks.polar.ts.hbs",dest:"app/routes/api.webhooks.polar.ts",isTemplate:!0},{src:"payments/polar/tanstack-start/app/components/pricing/polar-checkout.tsx",dest:"app/components/pricing/polar-checkout.tsx"});return _}function _1(q){return[{src:"database/mongoose/connection.ts.hbs",dest:"src/lib/db/connection.ts",isTemplate:!0},{src:"database/mongoose/index.ts",dest:"src/lib/db/index.ts"},{src:"database/mongoose/models/index.ts",dest:"src/lib/db/models/index.ts"},{src:"database/mongoose/models/user.ts.hbs",dest:"src/lib/db/models/user.ts",isTemplate:!0}]}function f1(q){let _=[{src:"backend/elysia/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/elysia/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/elysia/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/elysia/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/elysia/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/elysia/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/elysia/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/elysia/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function $1(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/supabase/nextjs/supabase-client.ts",dest:"src/lib/supabase/client.ts"},{src:"auth/supabase/nextjs/supabase-server.ts",dest:"src/lib/supabase/server.ts"},{src:"auth/supabase/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/supabase/nextjs/app/auth/callback/route.ts",dest:"src/app/auth/callback/route.ts"},{src:"auth/supabase/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/supabase/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/supabase/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/supabase/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/supabase/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/supabase/sveltekit/supabase-client.ts",dest:"src/lib/supabase/client.ts"},{src:"auth/supabase/sveltekit/supabase-server.ts",dest:"src/lib/supabase/server.ts"},{src:"auth/supabase/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/supabase/sveltekit/routes/auth/callback/+server.ts",dest:"src/routes/auth/callback/+server.ts"},{src:"auth/supabase/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/supabase/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/supabase/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/supabase/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/supabase/nuxt/composables/useSupabaseAuth.ts",dest:"composables/useSupabaseAuth.ts"},{src:"auth/supabase/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/supabase/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/supabase/nuxt/pages/auth/callback.vue",dest:"pages/auth/callback.vue"},{src:"auth/supabase/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/supabase/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/supabase/remix/app/lib/supabase.server.ts",dest:"app/lib/supabase.server.ts"},{src:"auth/supabase/remix/app/lib/supabase.client.ts",dest:"app/lib/supabase.client.ts"},{src:"auth/supabase/remix/app/routes/auth.callback.tsx",dest:"app/routes/auth.callback.tsx"},{src:"auth/supabase/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/supabase/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/supabase/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/supabase/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/supabase/astro/src/lib/supabase.ts",dest:"src/lib/supabase.ts"},{src:"auth/supabase/astro/src/pages/auth/callback.ts",dest:"src/pages/auth/callback.ts"},{src:"auth/supabase/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/supabase/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/supabase/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/supabase/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});return _}function K1(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/lucia/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/lucia/nextjs/auth-actions.ts",dest:"src/lib/auth-actions.ts"},{src:"auth/lucia/nextjs/validate-request.ts",dest:"src/lib/validate-request.ts"},{src:"auth/lucia/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/lucia/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/lucia/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/lucia/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/lucia/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/lucia/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/lucia/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/lucia/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/lucia/sveltekit/app.d.ts",dest:"src/app.d.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/login/+page.server.ts",dest:"src/routes/(auth)/login/+page.server.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/lucia/sveltekit/routes/(auth)/register/+page.server.ts",dest:"src/routes/(auth)/register/+page.server.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/lucia/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});return _}function P1(q){let _=[{src:"backend/express/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/express/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/express/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/express/src/middleware/error.ts",dest:"src/api/middleware/error.ts"},{src:"backend/express/src/middleware/validate.ts",dest:"src/api/middleware/validate.ts"},{src:"backend/express/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/express/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/express/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/express/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/express/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function j1(q){let _=[{src:"backend/fastify/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/fastify/src/plugins/cors.ts",dest:"src/api/plugins/cors.ts"},{src:"backend/fastify/src/plugins/swagger.ts",dest:"src/api/plugins/swagger.ts"},{src:"backend/fastify/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/fastify/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/fastify/src/schemas/common.ts",dest:"src/api/schemas/common.ts"},{src:"backend/fastify/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/fastify/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/fastify/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/fastify/src/plugins/auth.ts.hbs",dest:"src/api/plugins/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/fastify/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}var k={next:"^15.1.0",react:"^19.0.0","react-dom":"^19.0.0",svelte:"^5.0.0","@sveltejs/kit":"^2.15.0","@sveltejs/adapter-auto":"^3.3.0","@sveltejs/adapter-node":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0",nuxt:"^3.15.0",vue:"^3.5.0","@nuxtjs/tailwindcss":"^6.12.0","@vueuse/nuxt":"^12.0.0","@remix-run/node":"^2.15.0","@remix-run/react":"^2.15.0","@remix-run/serve":"^2.15.0","@remix-run/dev":"^2.15.0",isbot:"^5.1.0",astro:"^5.1.0","@astrojs/node":"^9.0.0","@astrojs/react":"^4.1.0","@astrojs/tailwind":"^6.0.0",vite:"^6.0.0","@solidjs/start":"^1.0.0","@solidjs/router":"^0.15.0","@solidjs/meta":"^0.29.0","solid-js":"^1.9.0",vinxi:"^0.5.0","@tanstack/react-start":"^1.95.0","@tanstack/react-router":"^1.95.0",typescript:"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","drizzle-orm":"^0.38.0","drizzle-kit":"^0.30.0",postgres:"^3.4.0","@prisma/client":"^6.0.0",prisma:"^6.0.0","@libsql/client":"^0.14.0","better-sqlite3":"^11.0.0","@types/better-sqlite3":"^7.6.0",kysely:"^0.27.0",pg:"^8.13.0","@types/pg":"^8.11.0","kysely-ctl":"^0.9.0",mongoose:"^8.9.0","better-auth":"^1.2.0","@better-auth/cli":"^1.2.0","@clerk/nextjs":"^6.0.0",lucia:"^3.2.0",oslo:"^1.2.0","@lucia-auth/adapter-drizzle":"^1.1.0","@lucia-auth/adapter-prisma":"^4.0.0","@oslojs/crypto":"^1.0.0","@oslojs/encoding":"^1.1.0","next-auth":"^5.0.0","@auth/core":"^0.37.0","@auth/sveltekit":"^1.7.0","@auth/drizzle-adapter":"^1.7.0","@sidebase/nuxt-auth":"^0.9.0","remix-auth":"^3.7.0","remix-auth-form":"^1.5.0","auth-astro":"^4.2.0","@auth0/nextjs-auth0":"^3.5.0","@auth0/auth0-vue":"^2.3.0","@auth0/auth0-spa-js":"^2.1.0","@auth0/auth0-react":"^2.2.0","@supabase/supabase-js":"^2.47.0","@supabase/ssr":"^0.5.0","@nuxtjs/supabase":"^1.4.0",stripe:"^17.0.0","@stripe/stripe-js":"^5.0.0","@paddle/paddle-node-sdk":"^1.6.0","@paddle/paddle-js":"^1.3.0","@lemonsqueezy/lemonsqueezy.js":"^3.4.0","@polar-sh/sdk":"^0.16.0",tailwindcss:"^4.0.0","@tailwindcss/vite":"^4.0.0",autoprefixer:"^10.4.0",postcss:"^8.4.0",clsx:"^2.1.0","tailwind-merge":"^2.6.0","lucide-react":"^0.469.0","lucide-svelte":"^0.469.0","lucide-vue-next":"^0.469.0",zod:"^3.24.0",nanoid:"^5.0.0","vite-tsconfig-paths":"^5.1.0",hono:"^4.6.0","@hono/node-server":"^1.13.0","@hono/zod-validator":"^0.4.0",elysia:"^1.2.0","@elysiajs/cors":"^1.1.0","@elysiajs/swagger":"^1.1.0",express:"^5.0.0","@types/express":"^5.0.0",helmet:"^8.0.0",cors:"^2.8.0","@types/cors":"^2.8.0","express-rate-limit":"^7.4.0",fastify:"^5.1.0","@fastify/cors":"^10.0.0","@fastify/helmet":"^12.0.0","@fastify/rate-limit":"^10.0.0","@fastify/swagger":"^9.0.0","@fastify/swagger-ui":"^5.0.0"};function tK(q){switch(q){case"nextjs":return{deps:{next:k.next,react:k.react,"react-dom":k["react-dom"]},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"next dev --turbopack",build:"next build",start:"next start",typecheck:"tsc --noEmit"}};case"sveltekit":return{deps:{"@sveltejs/kit":k["@sveltejs/kit"],svelte:k.svelte},devDeps:{"@sveltejs/adapter-auto":k["@sveltejs/adapter-auto"],"@sveltejs/vite-plugin-svelte":k["@sveltejs/vite-plugin-svelte"],vite:k.vite,typescript:k.typescript,"@types/node":k["@types/node"]},scripts:{dev:"vite dev",build:"vite build",preview:"vite preview",typecheck:"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"}};case"nuxt":return{deps:{nuxt:k.nuxt,vue:k.vue,"@nuxtjs/tailwindcss":k["@nuxtjs/tailwindcss"],"@vueuse/nuxt":k["@vueuse/nuxt"]},devDeps:{typescript:k.typescript},scripts:{dev:"nuxi dev",build:"nuxi build",preview:"nuxi preview",generate:"nuxi generate",typecheck:"nuxi typecheck"}};case"remix":return{deps:{"@remix-run/node":k["@remix-run/node"],"@remix-run/react":k["@remix-run/react"],"@remix-run/serve":k["@remix-run/serve"],react:k.react,"react-dom":k["react-dom"],isbot:k.isbot},devDeps:{"@remix-run/dev":k["@remix-run/dev"],vite:k.vite,"vite-tsconfig-paths":k["vite-tsconfig-paths"],typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"remix vite:dev",build:"remix vite:build",start:"remix-serve ./build/server/index.js",typecheck:"tsc --noEmit"}};case"astro":return{deps:{astro:k.astro,"@astrojs/node":k["@astrojs/node"],"@astrojs/react":k["@astrojs/react"],react:k.react,"react-dom":k["react-dom"]},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"astro dev",build:"astro build",preview:"astro preview",typecheck:"astro check && tsc --noEmit"}};case"solidstart":return{deps:{"@solidjs/start":k["@solidjs/start"],"@solidjs/router":k["@solidjs/router"],"@solidjs/meta":k["@solidjs/meta"],"solid-js":k["solid-js"],vinxi:k.vinxi},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"]},scripts:{dev:"vinxi dev",build:"vinxi build",start:"vinxi start",typecheck:"tsc --noEmit"}};case"tanstack-start":return{deps:{"@tanstack/react-start":k["@tanstack/react-start"],"@tanstack/react-router":k["@tanstack/react-router"],react:k.react,"react-dom":k["react-dom"],vinxi:k.vinxi},devDeps:{vite:k.vite,"vite-tsconfig-paths":k["vite-tsconfig-paths"],typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"vinxi dev",build:"vinxi build",start:"vinxi start",typecheck:"tsc --noEmit"}};default:return{deps:{},devDeps:{},scripts:{}}}}function GK(q,_){switch(q){case"better-auth":return{deps:{"better-auth":k["better-auth"]},devDeps:{"@better-auth/cli":k["@better-auth/cli"]}};case"clerk":if(_==="nextjs")return{deps:{"@clerk/nextjs":k["@clerk/nextjs"]},devDeps:{}};return{deps:{},devDeps:{}};case"authjs":if(_==="nextjs")return{deps:{"next-auth":k["next-auth"],"@auth/drizzle-adapter":k["@auth/drizzle-adapter"]},devDeps:{}};else if(_==="sveltekit")return{deps:{"@auth/sveltekit":k["@auth/sveltekit"],"@auth/drizzle-adapter":k["@auth/drizzle-adapter"]},devDeps:{}};else if(_==="nuxt")return{deps:{"@sidebase/nuxt-auth":k["@sidebase/nuxt-auth"]},devDeps:{}};else if(_==="remix")return{deps:{"remix-auth":k["remix-auth"],"remix-auth-form":k["remix-auth-form"]},devDeps:{}};else if(_==="astro")return{deps:{"auth-astro":k["auth-astro"],"@auth/core":k["@auth/core"]},devDeps:{}};return{deps:{},devDeps:{}};case"auth0":if(_==="nextjs")return{deps:{"@auth0/nextjs-auth0":k["@auth0/nextjs-auth0"]},devDeps:{}};else if(_==="nuxt")return{deps:{"@auth0/auth0-vue":k["@auth0/auth0-vue"]},devDeps:{}};else return{deps:{"@auth0/auth0-spa-js":k["@auth0/auth0-spa-js"]},devDeps:{}};case"lucia":return{deps:{lucia:k.lucia,"@oslojs/crypto":k["@oslojs/crypto"],"@oslojs/encoding":k["@oslojs/encoding"]},devDeps:{}};case"supabase":if(_==="nuxt")return{deps:{"@nuxtjs/supabase":k["@nuxtjs/supabase"]},devDeps:{}};return{deps:{"@supabase/supabase-js":k["@supabase/supabase-js"],"@supabase/ssr":k["@supabase/ssr"]},devDeps:{}};default:return{deps:{},devDeps:{}}}}function lK(q){switch(q){case"stripe":return{deps:{stripe:k.stripe,"@stripe/stripe-js":k["@stripe/stripe-js"]},devDeps:{}};case"paddle":return{deps:{"@paddle/paddle-node-sdk":k["@paddle/paddle-node-sdk"],"@paddle/paddle-js":k["@paddle/paddle-js"]},devDeps:{}};case"lemonsqueezy":return{deps:{"@lemonsqueezy/lemonsqueezy.js":k["@lemonsqueezy/lemonsqueezy.js"]},devDeps:{}};case"polar":return{deps:{"@polar-sh/sdk":k["@polar-sh/sdk"]},devDeps:{}};default:return{deps:{},devDeps:{}}}}function bK(q,_){let f=["postgres","neon","supabase"].includes(_),$=["sqlite","turso"].includes(_);if(q==="drizzle"){let P={"drizzle-orm":k["drizzle-orm"]};if(f)P.postgres=k.postgres;else if($)if(_==="turso")P["@libsql/client"]=k["@libsql/client"];else P["better-sqlite3"]=k["better-sqlite3"];return{deps:P,devDeps:{"drizzle-kit":k["drizzle-kit"],...$&&_!=="turso"?{"@types/better-sqlite3":k["@types/better-sqlite3"]}:{}},scripts:{"db:generate":"drizzle-kit generate","db:migrate":"drizzle-kit migrate","db:push":"drizzle-kit push","db:studio":"drizzle-kit studio"}}}if(q==="prisma")return{deps:{"@prisma/client":k["@prisma/client"]},devDeps:{prisma:k.prisma},scripts:{"db:generate":"prisma generate","db:push":"prisma db push","db:migrate":"prisma migrate dev","db:studio":"prisma studio"}};if(q==="kysely"){let P={kysely:k.kysely};if(f)P.pg=k.pg;else if($)if(_==="turso")P["@libsql/client"]=k["@libsql/client"];else P["better-sqlite3"]=k["better-sqlite3"];return{deps:P,devDeps:{"kysely-ctl":k["kysely-ctl"],...f?{"@types/pg":k["@types/pg"]}:{},...$&&_!=="turso"?{"@types/better-sqlite3":k["@types/better-sqlite3"]}:{}},scripts:{"db:migrate":"kysely migrate:latest","db:migrate:down":"kysely migrate:down","db:migrate:make":"kysely migrate:make"}}}if(q==="mongoose")return{deps:{mongoose:k.mongoose},devDeps:{},scripts:{}};return{deps:{},devDeps:{},scripts:{}}}function MK(q){let _=q==="sveltekit"?"lucide-svelte":q==="nuxt"?"lucide-vue-next":"lucide-react";return{deps:{clsx:k.clsx,"tailwind-merge":k["tailwind-merge"],[_]:k[_]},devDeps:{tailwindcss:k.tailwindcss,"@tailwindcss/vite":k["@tailwindcss/vite"]}}}function CK(){return{deps:{zod:k.zod},devDeps:{}}}import{exec as v1}from"child_process";import{promisify as w1}from"util";import{copyFile as r1,access as zf,constants as ef}from"fs/promises";import{join as Hf}from"path";var X8=w1(v1);async function VK(){try{return await X8("bun --version"),"bun"}catch{}try{return await X8("pnpm --version"),"pnpm"}catch{}return"npm"}async function m1(q,_){let f=_||await VK();try{let $=f==="npm"?"npm install":`${f} install`;return await X8($,{cwd:q,timeout:120000}),{success:!0,message:`Dependencies installed with ${f}`}}catch($){return{success:!1,message:`Failed to install dependencies with ${f}`,error:$}}}async function O1(q){try{try{return await zf(Hf(q,".git"),ef.F_OK),{success:!0,message:"Git repository already initialized"}}catch{}return await X8("git init",{cwd:q}),await X8("git add -A",{cwd:q}),await X8('git commit -m "Initial commit from create-stacksfinder"',{cwd:q}),{success:!0,message:"Git repository initialized"}}catch(_){return{success:!1,message:"Failed to initialize git",error:_}}}async function T1(q){let _=Hf(q,".env.example"),f=Hf(q,".env");try{try{return await zf(f,ef.F_OK),{success:!0,message:".env file already exists"}}catch{}try{await zf(_,ef.F_OK)}catch{return{success:!1,message:".env.example not found"}}return await r1(_,f),{success:!0,message:"Created .env from .env.example"}}catch($){return{success:!1,message:"Failed to create .env file",error:$}}}async function Y1(q,_){if(!_.orm)return{success:!0,message:"No ORM configured, skipping database setup"};let f=await VK(),$=f==="npm"?"npm run":`${f} run`;try{if(_.isDrizzle)await X8(`${$} db:generate`,{cwd:q,timeout:60000});else if(_.isPrisma)await X8(`${$} db:generate`,{cwd:q,timeout:60000});return{success:!0,message:`Database setup completed (${_.orm})`}}catch(P){return{success:!1,message:"Database setup skipped (configure .env first)",error:P}}}async function SK(q,_,f={}){let $=[];if(!f.skipInstall){let P=await m1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipEnv){let P=await T1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipGit){let P=await O1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipDb&&_.orm){let P=await Y1(q,_);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"⚠"} ${P.message}`)}return{results:$,allSuccess:$.every((P)=>P.success)}}var H1=e1(import.meta.url),W1=yK(H1),RK=hq(W1,"templates");function J1(){if(Z8.default.helpers.eq)return;Z8.default.registerHelper("eq",(q,_)=>q===_),Z8.default.registerHelper("neq",(q,_)=>q!==_),Z8.default.registerHelper("or",(...q)=>q.slice(0,-1).some(Boolean)),Z8.default.registerHelper("and",(...q)=>q.slice(0,-1).every(Boolean)),Z8.default.registerHelper("json",(q)=>JSON.stringify(q,null,2)),Z8.default.registerHelper("unless",function(q,_){return!q?_.fn(this):_.inverse(this)})}async function Z1(q){try{return await z1(hq(RK,q)),!0}catch{return!1}}async function n1(q,_,f){if(q.condition&&!q.condition(_))return!0;let $=hq(RK,q.src),P=hq(f,q.dest);if(await cK(yK(P),{recursive:!0}),!await Z1(q.src))return console.warn(`Template not found: ${q.src}`),!1;try{if(q.isTemplate){let K=await k1($,"utf-8"),r=Z8.default.compile(K,{noEscape:!0})(_);await NK(P,r)}else await h1($,P);return!0}catch(K){return console.error(`Error processing ${q.src}:`,K),!1}}function o1(q){let _=tK(q.framework||"nextjs"),f=q.orm?bK(q.orm,q.database||"postgres"):{deps:{},devDeps:{},scripts:{}},$=q.auth?GK(q.auth,q.framework||"nextjs"):{deps:{},devDeps:{}},P=q.payments?lK(q.payments):{deps:{},devDeps:{}},j=MK(q.framework||"nextjs"),K=CK();return{name:q.projectName,version:"0.1.0",private:!0,type:"module",scripts:{..._.scripts,...f.scripts},dependencies:{..._.deps,...f.deps,...$.deps,...P.deps,...j.deps,...K.deps},devDependencies:{..._.devDeps,...f.devDeps,...$.devDeps,...P.devDeps,...j.devDeps,...K.devDeps}}}async function gK(q,_,f,$={},P){J1();let j=xq(q,_);await cK(f,{recursive:!0}),P?.({phase:"init",current:0,total:0});let K=o1(j);await NK(hq(f,"package.json"),JSON.stringify(K,null,2)),P?.({phase:"config",file:"package.json",current:1,total:0});let v=AK(j),r=v.length,w=1,O=0,m="";for(let T=0;T<v.length;T++){let h=v[T],z=p1(h.src);if(z!==m)m=z,P?.({phase:z,current:T,total:r});if(await n1(h,j,f))w++,P?.({phase:m,file:h.dest,current:T+1,total:r});else O++}if(!$.skipInstall)P?.({phase:"install",current:r,total:r}),await SK(f,j,{skipInstall:$.skipInstall,skipGit:$.skipGit,verbose:$.verbose});return P?.({phase:"complete",current:r,total:r}),{success:O===0,generated:w,skipped:O,context:j}}function p1(q){if(q.includes("config")||q.includes("tsconfig")||q.includes("vite"))return"config";if(q.includes("auth"))return"auth";if(q.includes("database")||q.includes("drizzle")||q.includes("prisma"))return"database";if(q.includes("payment")||q.includes("stripe")||q.includes("paddle"))return"payments";if(q.includes("component"))return"components";if(q.includes("route")||q.includes("app/"))return"routes";return"files"}async function EK(q,_){let f=`https://stacksfinder.com/api/v1/blueprints/${q}`,$=await fetch(f,{method:"GET",headers:{Authorization:`Bearer ${_}`,"Content-Type":"application/json","User-Agent":"create-stacksfinder/0.1.0"}});if(!$.ok){if($.status===401)throw Error("Invalid API key. Get your key at stacksfinder.com/settings/api-keys");if($.status===403)throw Error("API access requires a Pro or Team subscription. Upgrade at stacksfinder.com/pro");if($.status===404)throw Error(`Blueprint "${q}" not found. Check the ID and try again.`);let P=await $.json().catch(()=>({}));throw Error(P.message||`API error: ${$.status} ${$.statusText}`)}return $.json()}function IK(q){if(q)return q;return process.env.STACKSFINDER_API_KEY}import{existsSync as DK,readFileSync as xK}from"fs";import{join as LK}from"path";var sK=[".stacksfinderrc.json",".stacksfinderrc","stacksfinder.config.json"],T8={projectType:"saas",scale:"mvp",priority:"speed",framework:"nextjs",database:"postgres",orm:"drizzle",auth:"better-auth",payments:null,hosting:"vercel"};async function Wf(){for(let _ of sK){let f=LK(process.cwd(),_);if(DK(f))try{let $=xK(f,"utf-8");return JSON.parse($)}catch($){return console.warn(`Warning: Failed to parse ${_}`),null}}let q=process.env.HOME||process.env.USERPROFILE;if(q)for(let _ of sK){let f=LK(q,_);if(DK(f))try{let $=xK(f,"utf-8");return JSON.parse($)}catch($){return console.warn(`Warning: Failed to parse ${_} in home directory`),null}}return null}async function u1(){let q=await Wf();if(!q?.defaults)return{};return{projectType:q.defaults.projectType,scale:q.defaults.scale,priority:q.defaults.priority,framework:q.defaults.framework,database:q.defaults.database,orm:q.defaults.orm,auth:q.defaults.auth,payments:q.defaults.payments}}async function BK(q){let _=await Wf();if(!_?.presets)return null;return _.presets[q]??null}async function UK(){let q=await Wf();if(!q?.presets)return[];return Object.keys(q.presets)}async function FK(){let q=await u1();return{...T8,...Object.fromEntries(Object.entries(q).filter(([_,f])=>f!==void 0))}}function QK(q){return{projectType:q.projectType??T8.projectType,scale:q.scale??T8.scale,priority:q.priority??T8.priority,framework:q.framework??T8.framework,database:q.database??T8.database,orm:q.orm??T8.orm,auth:q.auth!==void 0?q.auth:T8.auth,payments:q.payments!==void 0?q.payments:T8.payments,hosting:q.hosting??T8.hosting}}var l=L(f8(),1),i1={remix:{drizzle:"Drizzle's type-safe queries pair perfectly with Remix loaders",prisma:"Prisma's schema-first approach works well with Remix's data loading","better-auth":"Better Auth integrates natively with Remix's session handling",stripe:"Stripe webhooks fit naturally into Remix resource routes",supabase:"Supabase provides both database and auth for rapid Remix development"},nextjs:{drizzle:"Drizzle's edge-ready design complements Next.js middleware",prisma:"Prisma's mature ecosystem integrates seamlessly with Next.js API routes",clerk:"Clerk provides drop-in auth components for Next.js App Router","better-auth":"Better Auth's minimal footprint suits Next.js server components",stripe:"Next.js API routes provide a clean Stripe webhook integration",vercel:"Vercel's zero-config deployment is optimized for Next.js"},sveltekit:{drizzle:"Drizzle's lightweight design matches SvelteKit's performance focus",prisma:"Prisma works well with SvelteKit's server-side data loading","better-auth":"Better Auth's Svelte adapter provides native store integration",stripe:"SvelteKit endpoints handle Stripe webhooks efficiently",cloudflare:"Cloudflare Pages offers excellent SvelteKit adapter support"},nuxt:{drizzle:"Drizzle works well with Nuxt's server routes",prisma:"Prisma integrates with Nuxt's Nitro server","better-auth":"Better Auth provides Vue composables for Nuxt",stripe:"Nuxt server routes handle Stripe integration cleanly"}};function zq(q,_){return i1[q]?.[_]}function d1(q,_){let f=_.framework;if(!f)return;let $=[];if(_.orm){let P=zq(f,_.orm);if(P)$.push(P)}if(_.auth){let P=zq(f,_.auth);if(P)$.push(P)}if(_.payments){let P=zq(f,_.payments);if(P)$.push(P)}if(_.database){let P=zq(f,_.database);if(P)$.push(P)}if(_.hosting){let P=zq(f,_.hosting);if(P)$.push(P)}if($.length>0){console.log(""),console.log(l.default.dim(" Stack synergies detected:"));for(let P of $.slice(0,3))console.log(l.default.dim(` + ${P}`))}}function qP(q,_,f,$){if(console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(""),console.log(` ${l.default.bold("Generation complete")}`),console.log(""),console.log(` ${l.default.cyan(String(f))} files generated`),$>0)console.log(l.default.yellow(` ${$} templates not found`));console.log(""),console.log(l.default.dim(" Stack composition:"));let P=_.frameworkEntry?.name||_.framework||"Unknown",j=_.databaseEntry?.name||_.database||"None",K=_.ormEntry?.name||_.orm||"None",v=_.authEntry?.name||_.auth||"None",r=_.paymentsEntry?.name||_.payments||"None";if(console.log(l.default.dim(` Framework: ${P}`)),console.log(l.default.dim(` Database: ${j} + ${K}`)),_.auth)console.log(l.default.dim(` Auth: ${v}`));if(_.payments)console.log(l.default.dim(` Payments: ${r}`));let w=q.stackScore?.grade||"A";console.log(""),console.log(` Overall stack grade: ${l.default.green(`[${w}]`)} ${X1(w)}`)}function X1(q){return{"A+":"Optimal choice for your requirements",A:"Excellent match with proven synergies","A-":"Strong choice with minor trade-offs","B+":"Good fit, some alternatives worth considering",B:"Solid option for your use case","B-":"Adequate, but better options exist",C:"Consider alternatives for better results"}[q]||""}function _P(q,_){console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(""),console.log(` ${l.default.bold("Preparing generation...")}`),console.log("");let f=[];if(_.framework)f.push(`${_.frameworkEntry?.name||_.framework} project structure`);if(_.orm)f.push(`${_.ormEntry?.name||_.orm} database layer`);if(_.auth)f.push(`${_.authEntry?.name||_.auth} authentication`);if(_.payments)f.push(`${_.paymentsEntry?.name||_.payments} payment integration`);console.log(l.default.dim(" Generating:"));for(let $ of f)console.log(l.default.dim(` + ${$}`));d1(q,_)}function Jf(q,_){if(console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(` ${l.default.bold("Seed:")} ${l.default.cyan(q)}`),console.log(l.default.dim(" Reproduce this config: --seed <seed>")),_)console.log(""),console.log(l.default.green(` Saved as "${_}"`)),console.log(l.default.dim(` Use: bun create stacksfinder my-app --seed ${_}`))}import{join as t1}from"path";function A1(){return!!(process.env.STACKSFINDER_TELEMETRY_DISABLED||process.env.DO_NOT_TRACK||process.env.CI)}function eq(q,_){if(A1())return;let f={v:"0.2.0",action:q,projectType:_?.projectType,scale:_?.scale,ecosystem:_?.ecosystem,priorityCount:_?.priorities?.length,constraintCount:_?.constraints?.length,os:process.platform,ts:Date.now()};fetch("https://stacksfinder.com/api/v1/cli/telemetry",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f),signal:AbortSignal.timeout(3000)}).catch(()=>{})}function fP(q){eq("generate",q)}function $P(){eq("error")}import{createHash as a1}from"crypto";var KP=1,U8="SF1-";function PP(q){let _={v:KP,t:q.projectType,s:q.scale,pr:q.priority,...q.ecosystem&&q.ecosystem!=="javascript"?{e:q.ecosystem}:{},...q.constraints&&q.constraints.length>0?{c:q.constraints}:{}},f=JSON.stringify(_),$=Buffer.from(f).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");return U8+$}function Zf(q){if(!q.startsWith(U8))throw Error(`Invalid seed format. Seeds must start with "${U8}". Example: SF1-abc123...`);try{let _=q.slice(U8.length).replace(/-/g,"+").replace(/_/g,"/"),f=_+"=".repeat((4-_.length%4)%4),$=Buffer.from(f,"base64").toString("utf-8"),P=JSON.parse($),j=P.v||1;if(j>KP)throw Error(`Seed version ${j} is not supported. Please update create-stacksfinder.`);let K;if(P.t)K={projectType:P.t,scale:P.s,priority:P.pr,ecosystem:P.e||"javascript",constraints:P.c||[]};else if(P.e&&P.p)K={projectType:"saas",scale:"mvp",priority:{pioneer:"speed",sprinter:"speed",guardian:"security",pragmatic:"dx"}[P.p]||"speed",ecosystem:P.e||"javascript",constraints:P.c||[]};else throw Error("Seed is missing required fields");let v=a1("sha256").update(JSON.stringify(K)).digest("hex").slice(0,8);return{version:j,config:K,hash:v}}catch(_){if(_ instanceof SyntaxError)throw Error("Invalid seed: corrupted data");throw _}}function jP(q){let _=q.trim();if(!_.startsWith(U8))return!1;let f=_.slice(U8.length);return/^[A-Za-z0-9_-]+$/.test(f)&&f.length>0}function vP(){return`${process.env.HOME||process.env.USERPROFILE||process.cwd()}/.stacksfinder-seeds.json`}async function Lq(){let q=await import("fs/promises"),_=vP();try{let f=await q.readFile(_,"utf-8");return JSON.parse(f).seeds||[]}catch{return[]}}async function wP(q,_,f){let $=await import("fs/promises"),P=vP(),j=await Lq(),K=j.findIndex((v)=>v.name===q);if(K>=0)j[K]={name:q,seed:_,createdAt:new Date().toISOString(),description:f};else j.push({name:q,seed:_,createdAt:new Date().toISOString(),description:f});await $.writeFile(P,JSON.stringify({seeds:j},null,2))}async function rP(q){return(await Lq()).find((f)=>f.name===q)||null}var mP="0.5.0";function Y8(q,_){let f=q.indexOf(_);return f!==-1&&q[f+1]&&!q[f+1].startsWith("-")?q[f+1]:void 0}var sq=["saas","web-app","marketplace","api","e-commerce","blog","portfolio"],Bq=["mvp","startup","growth","enterprise"],Uq=["speed","dx","perf","cost","scale","security"];async function G1(){console.clear(),Z6("box");let q=process.argv.slice(2),_=q.find((W)=>!W.startsWith("-")),f=q.includes("--recommend-only")||q.includes("-r"),$=q.includes("--json")||q.includes("-j"),P=q.includes("--expert")||q.includes("-e"),j=q.includes("--version")||q.includes("-v"),K=q.includes("--help")||q.includes("-h"),v=q.includes("--yes")||q.includes("-y"),r=q.includes("--verbose")||q.includes("-V"),w=q.includes("--no-install"),O=q.includes("--no-git"),m=Y8(q,"--preset"),T=q.includes("--quick")||q.includes("-q"),h=Y8(q,"--type"),z=Y8(q,"--scale"),H=Y8(q,"--priority"),o=Y8(q,"--from-blueprint"),X=Y8(q,"--api-key"),I=q.includes("--compare"),R=Y8(q,"--preset1")||"mvp",A=Y8(q,"--preset2")||"enterprise",b=Y8(q,"--seed"),j8=Y8(q,"--save-seed"),x=q.includes("--list-seeds");if(j){let W=v6();console.log(`create-stacksfinder v${mP}`),console.log(`Scoring data: v${W.scores}`),console.log(`Compatibility matrix: v${W.matrix}`),process.exit(0)}if(K)console.log(`
|
|
150
|
+
`;function D9(q="minimal"){switch(q){case"full":return N9;case"compact":return y9;case"box":return g9;case"oneline":return E9;case"shadow":return I9;case"minimal":default:return R9}}function x9(q="minimal"){let _=D9(q);console.log(bq.default.green(_))}function Z6(q="minimal"){x9(q),console.log(bq.default.dim(" Scaffold optimized tech stacks")),console.log(bq.default.dim(" Powered by deterministic scoring")),console.log("")}var y8=L(f8(),1);function L9(q,_,f){return{isEnterprise:q.context.scale==="enterprise",isHighScore:q.stackScore.score>=85,hasComplexStack:q.categories.length>=5,projectName:f,phase:_}}function s9(q){if(q.phase==="post-recommendation"){if(q.isEnterprise)return{message:"Need compliance reports & team collaboration?",link:"stacksfinder.com/enterprise"};return{message:"Fine-tune with 25+ constraints:",link:"stacksfinder.com/builder"}}if(q.isHighScore)return{message:"Save & share this stack:",link:"stacksfinder.com/blueprint/new"};if(q.isEnterprise)return{message:`Get compliance reports for ${q.projectName||"your project"}:`,link:"stacksfinder.com/enterprise"};return{message:"Use in Cursor/Claude:",link:"npm i -g @stacksfinder/mcp-server"}}function d_(q,_,f){let $=L9(q,_,f),P=s9($);console.log(""),console.log(y8.default.dim("─".repeat(50))),console.log(""),console.log(y8.default.dim(` ${P.message}`)),console.log(` ${y8.default.cyan(P.link)}`),console.log("")}function n6(q){console.log(""),console.log(y8.default.dim(" Something went wrong? Try the web version:")),console.log(` ${y8.default.cyan("stacksfinder.com/builder")}`)}var Z8=L(XK(),1);import{mkdir as cK,writeFile as NK,readFile as k1,copyFile as h1,access as z1}from"fs/promises";import{join as hq,dirname as yK}from"path";import{fileURLToPath as e1}from"url";function xq(q,_){let f=(X)=>{return _.categories.find((R)=>R.category===X)?.recommended.tech??null},$=(X)=>{return f(X)?.id??null},P=f("meta-framework"),j=f("database"),K=f("orm"),v=f("auth"),r=f("hosting"),w=f("payments"),O=f("backend"),m=P?.id??null,T=j?.id??null,h=K?.id??null,z=v?.id??null,H=w?.id??null,o=O?.id??null;return{projectName:q,projectType:_.context.projectType,scale:_.context.scale,framework:m,database:T,orm:h,auth:z,hosting:r?.id??null,payments:H,backend:o,frameworkEntry:P,databaseEntry:j,ormEntry:K,authEntry:v,hostingEntry:r,paymentsEntry:w,backendEntry:O,hasAuth:!!v,hasPayments:!!w,hasDatabase:!!j,isNextjs:m==="nextjs",isSvelteKit:m==="sveltekit",isNuxt:m==="nuxt",isRemix:m==="remix",isAstro:m==="astro",isSolidStart:m==="solidstart",isTanStackStart:m==="tanstack-start",isPostgres:["postgres","neon","supabase"].includes(T??""),isSqlite:T==="sqlite",isMongoDB:T==="mongodb",isSupabase:T==="supabase",isTurso:T==="turso",isDrizzle:h==="drizzle",isPrisma:h==="prisma",isKysely:h==="kysely",isMongoose:h==="mongoose",isBetterAuth:z==="better-auth",isClerk:z==="clerk",isAuthJs:z==="authjs",isAuth0:z==="auth0",isLucia:z==="lucia",isSupabaseAuth:z==="supabase-auth",isStripe:H==="stripe",isPaddle:H==="paddle",isLemonSqueezy:H==="lemonsqueezy",isPolar:H==="polar",hasBackend:!!O,isHono:o==="hono",isElysia:o==="elysia",isExpress:o==="express",isFastify:o==="fastify",ecosystem:_.context.ecosystem||"javascript"}}function AK(q){let _=[];if(_.push(...b5(q)),q.framework==="nextjs")_.push(...M5(q));else if(q.framework==="sveltekit")_.push(...C5(q));else if(q.framework==="nuxt")_.push(...V5(q));else if(q.framework==="remix")_.push(...S5(q));else if(q.framework==="astro")_.push(...c5(q));else if(q.framework==="solidstart")_.push(...F5(q));else if(q.framework==="tanstack-start")_.push(...Q5(q));if(q.auth==="better-auth")_.push(...N5(q));else if(q.auth==="clerk")_.push(...y5(q));else if(q.auth==="authjs")_.push(...R5(q));else if(q.auth==="auth0")_.push(...g5(q));else if(q.auth==="lucia")_.push(...K1(q));else if(q.auth==="supabase")_.push(...$1(q));if(q.payments==="stripe")_.push(...E5(q));else if(q.payments==="paddle")_.push(...I5(q));else if(q.payments==="lemonsqueezy")_.push(...D5(q));else if(q.payments==="polar")_.push(...q1(q));if(q.orm==="drizzle")_.push(...x5(q));else if(q.orm==="prisma")_.push(...s5(q));else if(q.orm==="kysely")_.push(...B5(q));else if(q.orm==="mongoose")_.push(..._1(q));if(q.backend==="hono")_.push(...U5(q));else if(q.backend==="elysia")_.push(...f1(q));else if(q.backend==="express")_.push(...P1(q));else if(q.backend==="fastify")_.push(...j1(q));return _}function b5(q){return[{src:"base/gitignore",dest:".gitignore"},{src:"base/env.example.hbs",dest:".env.example",isTemplate:!0},{src:"base/README.md.hbs",dest:"README.md",isTemplate:!0}]}function M5(q){return[{src:"frameworks/nextjs/next.config.ts.hbs",dest:"next.config.ts",isTemplate:!0},{src:"frameworks/nextjs/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/nextjs/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/nextjs/postcss.config.js",dest:"postcss.config.js"},{src:"frameworks/nextjs/app/layout.tsx.hbs",dest:"src/app/layout.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/page.tsx.hbs",dest:"src/app/page.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/globals.css",dest:"src/app/globals.css"},{src:"frameworks/nextjs/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/nextjs/components/ui/button.tsx",dest:"src/components/ui/button.tsx"},{src:"frameworks/nextjs/components/ui/card.tsx",dest:"src/components/ui/card.tsx"},{src:"frameworks/nextjs/components/ui/input.tsx",dest:"src/components/ui/input.tsx"},{src:"frameworks/nextjs/app/(marketing)/layout.tsx",dest:"src/app/(marketing)/layout.tsx"},{src:"frameworks/nextjs/app/(marketing)/pricing/page.tsx.hbs",dest:"src/app/(marketing)/pricing/page.tsx",isTemplate:!0},{src:"frameworks/nextjs/app/(dashboard)/layout.tsx.hbs",dest:"src/app/(dashboard)/layout.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/dashboard/page.tsx.hbs",dest:"src/app/(dashboard)/dashboard/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/settings/page.tsx.hbs",dest:"src/app/(dashboard)/settings/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nextjs/app/(dashboard)/billing/page.tsx.hbs",dest:"src/app/(dashboard)/billing/page.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/nextjs/components/header.tsx.hbs",dest:"src/components/header.tsx",isTemplate:!0},{src:"frameworks/nextjs/components/footer.tsx",dest:"src/components/footer.tsx"},{src:"frameworks/nextjs/components/sidebar.tsx.hbs",dest:"src/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function C5(q){return[{src:"frameworks/sveltekit/svelte.config.js",dest:"svelte.config.js"},{src:"frameworks/sveltekit/vite.config.ts.hbs",dest:"vite.config.ts",isTemplate:!0},{src:"frameworks/sveltekit/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/sveltekit/app.d.ts.hbs",dest:"src/app.d.ts",isTemplate:!0},{src:"frameworks/sveltekit/app.css",dest:"src/app.css"},{src:"frameworks/sveltekit/app.html.hbs",dest:"src/app.html",isTemplate:!0},{src:"frameworks/sveltekit/routes/+layout.svelte.hbs",dest:"src/routes/+layout.svelte",isTemplate:!0},{src:"frameworks/sveltekit/routes/+page.svelte.hbs",dest:"src/routes/+page.svelte",isTemplate:!0},{src:"frameworks/sveltekit/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/sveltekit/components/ui/Button.svelte",dest:"src/lib/components/ui/Button.svelte"},{src:"frameworks/sveltekit/components/ui/Card.svelte",dest:"src/lib/components/ui/Card.svelte"},{src:"frameworks/sveltekit/components/ui/Input.svelte",dest:"src/lib/components/ui/Input.svelte"},{src:"frameworks/sveltekit/routes/(marketing)/pricing/+page.svelte.hbs",dest:"src/routes/(marketing)/pricing/+page.svelte",isTemplate:!0},{src:"frameworks/sveltekit/routes/(app)/+layout.svelte.hbs",dest:"src/routes/(app)/+layout.svelte",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/+layout.server.ts.hbs",dest:"src/routes/(app)/+layout.server.ts",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/dashboard/+page.svelte",dest:"src/routes/(app)/dashboard/+page.svelte",condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/settings/+page.svelte",dest:"src/routes/(app)/settings/+page.svelte",condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/routes/(app)/billing/+page.svelte.hbs",dest:"src/routes/(app)/billing/+page.svelte",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/sveltekit/hooks.server.ts.hbs",dest:"src/hooks.server.ts",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/sveltekit/components/Header.svelte.hbs",dest:"src/lib/components/Header.svelte",isTemplate:!0},{src:"frameworks/sveltekit/components/Footer.svelte",dest:"src/lib/components/Footer.svelte"},{src:"frameworks/sveltekit/components/Sidebar.svelte.hbs",dest:"src/lib/components/Sidebar.svelte",isTemplate:!0,condition:(f)=>!!f.auth}]}function V5(q){return[{src:"frameworks/nuxt/nuxt.config.ts.hbs",dest:"nuxt.config.ts",isTemplate:!0},{src:"frameworks/nuxt/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/nuxt/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/nuxt/app.vue.hbs",dest:"app.vue",isTemplate:!0},{src:"frameworks/nuxt/assets/css/main.css",dest:"assets/css/main.css"},{src:"frameworks/nuxt/pages/index.vue.hbs",dest:"pages/index.vue",isTemplate:!0},{src:"frameworks/nuxt/pages/pricing.vue.hbs",dest:"pages/pricing.vue",isTemplate:!0},{src:"frameworks/nuxt/layouts/default.vue.hbs",dest:"layouts/default.vue",isTemplate:!0},{src:"frameworks/nuxt/layouts/dashboard.vue.hbs",dest:"layouts/dashboard.vue",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/index.vue.hbs",dest:"pages/dashboard/index.vue",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/settings.vue",dest:"pages/dashboard/settings.vue",condition:(f)=>!!f.auth},{src:"frameworks/nuxt/pages/dashboard/billing.vue.hbs",dest:"pages/dashboard/billing.vue",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/nuxt/utils/cn.ts",dest:"utils/cn.ts"},{src:"frameworks/nuxt/components/ui/Button.vue",dest:"components/ui/Button.vue"},{src:"frameworks/nuxt/components/ui/Card.vue",dest:"components/ui/Card.vue"},{src:"frameworks/nuxt/components/ui/Input.vue",dest:"components/ui/Input.vue"},{src:"frameworks/nuxt/components/Header.vue.hbs",dest:"components/Header.vue",isTemplate:!0},{src:"frameworks/nuxt/components/Footer.vue",dest:"components/Footer.vue"},{src:"frameworks/nuxt/components/Sidebar.vue.hbs",dest:"components/Sidebar.vue",isTemplate:!0,condition:(f)=>!!f.auth}]}function S5(q){return[{src:"frameworks/remix/vite.config.ts.hbs",dest:"vite.config.ts",isTemplate:!0},{src:"frameworks/remix/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/remix/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/remix/app/root.tsx.hbs",dest:"app/root.tsx",isTemplate:!0},{src:"frameworks/remix/app/entry.client.tsx",dest:"app/entry.client.tsx"},{src:"frameworks/remix/app/entry.server.tsx",dest:"app/entry.server.tsx"},{src:"frameworks/remix/app/tailwind.css",dest:"app/tailwind.css"},{src:"frameworks/remix/app/routes/_index.tsx.hbs",dest:"app/routes/_index.tsx",isTemplate:!0},{src:"frameworks/remix/app/routes/pricing.tsx.hbs",dest:"app/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/remix/app/routes/dashboard.tsx.hbs",dest:"app/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard._index.tsx.hbs",dest:"app/routes/dashboard._index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard.settings.tsx",dest:"app/routes/dashboard.settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/remix/app/routes/dashboard.billing.tsx.hbs",dest:"app/routes/dashboard.billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/remix/app/lib/utils.ts",dest:"app/lib/utils.ts"},{src:"frameworks/remix/app/components/ui/button.tsx",dest:"app/components/ui/button.tsx"},{src:"frameworks/remix/app/components/ui/card.tsx",dest:"app/components/ui/card.tsx"},{src:"frameworks/remix/app/components/ui/input.tsx",dest:"app/components/ui/input.tsx"},{src:"frameworks/remix/app/components/header.tsx.hbs",dest:"app/components/header.tsx",isTemplate:!0},{src:"frameworks/remix/app/components/footer.tsx",dest:"app/components/footer.tsx"},{src:"frameworks/remix/app/components/sidebar.tsx.hbs",dest:"app/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function c5(q){return[{src:"frameworks/astro/astro.config.mjs.hbs",dest:"astro.config.mjs",isTemplate:!0},{src:"frameworks/astro/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/astro/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/astro/src/env.d.ts",dest:"src/env.d.ts"},{src:"frameworks/astro/src/styles/global.css",dest:"src/styles/global.css"},{src:"frameworks/astro/src/layouts/Layout.astro.hbs",dest:"src/layouts/Layout.astro",isTemplate:!0},{src:"frameworks/astro/src/layouts/DashboardLayout.astro.hbs",dest:"src/layouts/DashboardLayout.astro",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/index.astro.hbs",dest:"src/pages/index.astro",isTemplate:!0},{src:"frameworks/astro/src/pages/pricing.astro.hbs",dest:"src/pages/pricing.astro",isTemplate:!0},{src:"frameworks/astro/src/pages/dashboard/index.astro.hbs",dest:"src/pages/dashboard/index.astro",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/dashboard/settings.astro",dest:"src/pages/dashboard/settings.astro",condition:(f)=>!!f.auth},{src:"frameworks/astro/src/pages/dashboard/billing.astro.hbs",dest:"src/pages/dashboard/billing.astro",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/astro/src/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/astro/src/components/ui/Button.tsx",dest:"src/components/ui/Button.tsx"},{src:"frameworks/astro/src/components/ui/Card.tsx",dest:"src/components/ui/Card.tsx"},{src:"frameworks/astro/src/components/ui/Input.tsx",dest:"src/components/ui/Input.tsx"},{src:"frameworks/astro/src/components/Header.astro.hbs",dest:"src/components/Header.astro",isTemplate:!0},{src:"frameworks/astro/src/components/Footer.astro",dest:"src/components/Footer.astro"},{src:"frameworks/astro/src/components/Sidebar.astro.hbs",dest:"src/components/Sidebar.astro",isTemplate:!0,condition:(f)=>!!f.auth}]}function N5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/better-auth/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/better-auth/nextjs/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/nextjs/api/auth/[...all]/route.ts",dest:"src/app/api/auth/[...all]/route.ts"},{src:"auth/better-auth/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/better-auth/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/better-auth/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/better-auth/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/better-auth/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/better-auth/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/better-auth/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/better-auth/sveltekit/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/better-auth/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/better-auth/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/better-auth/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/better-auth/nuxt/server/utils/auth.ts.hbs",dest:"server/utils/auth.ts",isTemplate:!0},{src:"auth/better-auth/nuxt/composables/useAuth.ts",dest:"composables/useAuth.ts"},{src:"auth/better-auth/nuxt/server/api/auth/[...all].ts",dest:"server/api/auth/[...all].ts"},{src:"auth/better-auth/nuxt/middleware/auth.ts",dest:"middleware/auth.ts"},{src:"auth/better-auth/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/better-auth/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/better-auth/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/better-auth/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/better-auth/remix/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/remix/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/better-auth/remix/app/routes/api.auth.$.ts",dest:"app/routes/api.auth.$.ts"},{src:"auth/better-auth/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/better-auth/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/better-auth/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/better-auth/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/better-auth/astro/src/lib/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/better-auth/astro/src/lib/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/better-auth/astro/src/pages/api/auth/[...all].ts",dest:"src/pages/api/auth/[...all].ts"},{src:"auth/better-auth/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/better-auth/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/better-auth/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/better-auth/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/better-auth/solidstart/src/lib/auth.server.ts.hbs",dest:"src/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/solidstart/src/lib/auth.client.ts",dest:"src/lib/auth.client.ts"},{src:"auth/better-auth/solidstart/src/routes/api/auth/[...all].ts",dest:"src/routes/api/auth/[...all].ts"},{src:"auth/better-auth/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/better-auth/solidstart/src/routes/register.tsx",dest:"src/routes/register.tsx"},{src:"auth/better-auth/solidstart/src/components/auth/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/better-auth/solidstart/src/components/auth/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/better-auth/tanstack-start/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/better-auth/tanstack-start/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/better-auth/tanstack-start/app/routes/api.auth.$.ts",dest:"app/routes/api.auth.$.ts"},{src:"auth/better-auth/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/better-auth/tanstack-start/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/better-auth/tanstack-start/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/better-auth/tanstack-start/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});return _}function y5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/clerk/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/clerk/nextjs/app/(auth)/sign-in/[[...sign-in]]/page.tsx",dest:"src/app/(auth)/sign-in/[[...sign-in]]/page.tsx"},{src:"auth/clerk/nextjs/app/(auth)/sign-up/[[...sign-up]]/page.tsx",dest:"src/app/(auth)/sign-up/[[...sign-up]]/page.tsx"});return _}function R5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/authjs/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/authjs/nextjs/auth-client.ts",dest:"src/lib/auth-client.ts"},{src:"auth/authjs/nextjs/api/auth/[...nextauth]/route.ts",dest:"src/app/api/auth/[...nextauth]/route.ts"},{src:"auth/authjs/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/authjs/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/authjs/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/authjs/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/authjs/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/authjs/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/authjs/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/authjs/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/authjs/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/authjs/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/authjs/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/authjs/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/authjs/nuxt/server/api/auth/[...].ts",dest:"server/api/auth/[...].ts"},{src:"auth/authjs/nuxt/composables/useAuth.ts",dest:"composables/useAuth.ts"},{src:"auth/authjs/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/authjs/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/authjs/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/authjs/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/authjs/remix/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/remix/app/lib/session.server.ts",dest:"app/lib/session.server.ts"},{src:"auth/authjs/remix/app/routes/auth.login.tsx",dest:"app/routes/auth.login.tsx"},{src:"auth/authjs/remix/app/routes/auth.logout.tsx",dest:"app/routes/auth.logout.tsx"},{src:"auth/authjs/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/authjs/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/authjs/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/authjs/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/authjs/astro/src/lib/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/authjs/astro/auth.config.ts.hbs",dest:"auth.config.ts",isTemplate:!0},{src:"auth/authjs/astro/src/pages/api/auth/[...auth].ts",dest:"src/pages/api/auth/[...auth].ts"},{src:"auth/authjs/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/authjs/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/authjs/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/authjs/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/authjs/solidstart/src/lib/auth.server.ts.hbs",dest:"src/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/solidstart/src/lib/auth.client.ts",dest:"src/lib/auth.client.ts"},{src:"auth/authjs/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/authjs/solidstart/src/routes/register.tsx",dest:"src/routes/register.tsx"},{src:"auth/authjs/solidstart/src/routes/logout.tsx",dest:"src/routes/logout.tsx"},{src:"auth/authjs/solidstart/src/components/auth/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/authjs/solidstart/src/components/auth/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/authjs/tanstack-start/app/lib/auth.server.ts.hbs",dest:"app/lib/auth.server.ts",isTemplate:!0},{src:"auth/authjs/tanstack-start/app/lib/auth.client.ts",dest:"app/lib/auth.client.ts"},{src:"auth/authjs/tanstack-start/app/routes/api.auth.me.ts",dest:"app/routes/api.auth.me.ts"},{src:"auth/authjs/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/authjs/tanstack-start/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/authjs/tanstack-start/app/routes/logout.tsx",dest:"app/routes/logout.tsx"},{src:"auth/authjs/tanstack-start/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/authjs/tanstack-start/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});return _}function g5(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/auth0/nextjs/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/nextjs/api/auth/[auth0]/route.ts",dest:"src/app/api/auth/[auth0]/route.ts"},{src:"auth/auth0/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/auth0/nextjs/components/auth-button.tsx",dest:"src/components/auth/auth-button.tsx"},{src:"auth/auth0/nextjs/components/user-profile.tsx",dest:"src/components/auth/user-profile.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/auth0/sveltekit/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/sveltekit/hooks.client.ts",dest:"src/hooks.client.ts"},{src:"auth/auth0/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/auth0/sveltekit/routes/(auth)/callback/+page.svelte",dest:"src/routes/(auth)/callback/+page.svelte"},{src:"auth/auth0/sveltekit/components/AuthButton.svelte",dest:"src/lib/components/auth/AuthButton.svelte"},{src:"auth/auth0/sveltekit/components/UserProfile.svelte",dest:"src/lib/components/auth/UserProfile.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/auth0/nuxt/plugins/auth0.ts",dest:"plugins/auth0.ts"},{src:"auth/auth0/nuxt/composables/useAuth0.ts",dest:"composables/useAuth0.ts"},{src:"auth/auth0/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/auth0/nuxt/pages/callback.vue",dest:"pages/callback.vue"},{src:"auth/auth0/nuxt/components/AuthButton.vue",dest:"components/auth/AuthButton.vue"},{src:"auth/auth0/nuxt/components/UserProfile.vue",dest:"components/auth/UserProfile.vue"});else if(q.framework==="remix")_.push({src:"auth/auth0/remix/app/lib/auth0.ts",dest:"app/lib/auth0.ts"},{src:"auth/auth0/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/auth0/remix/app/routes/callback.tsx",dest:"app/routes/callback.tsx"},{src:"auth/auth0/remix/app/routes/logout.tsx",dest:"app/routes/logout.tsx"},{src:"auth/auth0/remix/app/components/auth/auth-button.tsx",dest:"app/components/auth/auth-button.tsx"},{src:"auth/auth0/remix/app/components/auth/user-profile.tsx",dest:"app/components/auth/user-profile.tsx"});else if(q.framework==="astro")_.push({src:"auth/auth0/astro/src/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/auth0/astro/src/pages/callback.astro",dest:"src/pages/callback.astro"},{src:"auth/auth0/astro/src/components/auth/AuthButton.tsx",dest:"src/components/auth/AuthButton.tsx"},{src:"auth/auth0/astro/src/components/auth/UserProfile.tsx",dest:"src/components/auth/UserProfile.tsx"});else if(q.framework==="solidstart")_.push({src:"auth/auth0/solidstart/src/lib/auth0.ts",dest:"src/lib/auth0.ts"},{src:"auth/auth0/solidstart/src/routes/login.tsx",dest:"src/routes/login.tsx"},{src:"auth/auth0/solidstart/src/routes/callback.tsx",dest:"src/routes/callback.tsx"},{src:"auth/auth0/solidstart/src/components/auth/auth-button.tsx",dest:"src/components/auth/auth-button.tsx"},{src:"auth/auth0/solidstart/src/components/auth/user-profile.tsx",dest:"src/components/auth/user-profile.tsx"});else if(q.framework==="tanstack-start")_.push({src:"auth/auth0/tanstack-start/app/lib/auth0.ts",dest:"app/lib/auth0.ts"},{src:"auth/auth0/tanstack-start/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/auth0/tanstack-start/app/routes/callback.tsx",dest:"app/routes/callback.tsx"},{src:"auth/auth0/tanstack-start/app/components/auth/auth-button.tsx",dest:"app/components/auth/auth-button.tsx"});return _}function E5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/stripe/nextjs/lib/stripe.ts",dest:"src/lib/stripe.ts"},{src:"payments/stripe/nextjs/lib/stripe-client.ts",dest:"src/lib/stripe-client.ts"},{src:"payments/stripe/nextjs/api/checkout/route.ts.hbs",dest:"src/app/api/checkout/route.ts",isTemplate:!0},{src:"payments/stripe/nextjs/api/webhooks/stripe/route.ts.hbs",dest:"src/app/api/webhooks/stripe/route.ts",isTemplate:!0},{src:"payments/stripe/nextjs/api/portal/route.ts",dest:"src/app/api/portal/route.ts"},{src:"payments/stripe/nextjs/components/pricing-card.tsx.hbs",dest:"src/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/nextjs/components/checkout-button.tsx",dest:"src/components/pricing/checkout-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/stripe/sveltekit/lib/stripe.ts",dest:"src/lib/server/stripe.ts"},{src:"payments/stripe/sveltekit/routes/api/checkout/+server.ts.hbs",dest:"src/routes/api/checkout/+server.ts",isTemplate:!0},{src:"payments/stripe/sveltekit/routes/api/webhooks/stripe/+server.ts.hbs",dest:"src/routes/api/webhooks/stripe/+server.ts",isTemplate:!0},{src:"payments/stripe/sveltekit/routes/api/portal/+server.ts",dest:"src/routes/api/portal/+server.ts"},{src:"payments/stripe/sveltekit/components/PricingCard.svelte.hbs",dest:"src/lib/components/pricing/PricingCard.svelte",isTemplate:!0},{src:"payments/stripe/sveltekit/components/CheckoutButton.svelte",dest:"src/lib/components/pricing/CheckoutButton.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/stripe/nuxt/server/utils/stripe.ts",dest:"server/utils/stripe.ts"},{src:"payments/stripe/nuxt/composables/useStripe.ts",dest:"composables/useStripe.ts"},{src:"payments/stripe/nuxt/server/api/checkout.post.ts.hbs",dest:"server/api/checkout.post.ts",isTemplate:!0},{src:"payments/stripe/nuxt/server/api/webhooks/stripe.post.ts.hbs",dest:"server/api/webhooks/stripe.post.ts",isTemplate:!0},{src:"payments/stripe/nuxt/server/api/portal.post.ts",dest:"server/api/portal.post.ts"},{src:"payments/stripe/nuxt/components/PricingCard.vue.hbs",dest:"components/pricing/PricingCard.vue",isTemplate:!0},{src:"payments/stripe/nuxt/components/CheckoutButton.vue",dest:"components/pricing/CheckoutButton.vue"});else if(q.framework==="remix")_.push({src:"payments/stripe/remix/app/lib/stripe.server.ts",dest:"app/lib/stripe.server.ts"},{src:"payments/stripe/remix/app/routes/api.checkout.ts.hbs",dest:"app/routes/api.checkout.ts",isTemplate:!0},{src:"payments/stripe/remix/app/routes/api.webhooks.stripe.ts.hbs",dest:"app/routes/api.webhooks.stripe.ts",isTemplate:!0},{src:"payments/stripe/remix/app/routes/api.portal.ts",dest:"app/routes/api.portal.ts"},{src:"payments/stripe/remix/app/components/pricing/pricing-card.tsx.hbs",dest:"app/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/remix/app/components/pricing/checkout-button.tsx",dest:"app/components/pricing/checkout-button.tsx"});else if(q.framework==="astro")_.push({src:"payments/stripe/astro/src/lib/stripe.ts",dest:"src/lib/stripe.ts"},{src:"payments/stripe/astro/src/pages/api/checkout.ts.hbs",dest:"src/pages/api/checkout.ts",isTemplate:!0},{src:"payments/stripe/astro/src/pages/api/webhooks/stripe.ts.hbs",dest:"src/pages/api/webhooks/stripe.ts",isTemplate:!0},{src:"payments/stripe/astro/src/pages/api/portal.ts",dest:"src/pages/api/portal.ts"},{src:"payments/stripe/astro/src/components/pricing/PricingCard.tsx.hbs",dest:"src/components/pricing/PricingCard.tsx",isTemplate:!0},{src:"payments/stripe/astro/src/components/pricing/CheckoutButton.tsx",dest:"src/components/pricing/CheckoutButton.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/stripe/solidstart/src/lib/stripe.server.ts",dest:"src/lib/stripe.server.ts"},{src:"payments/stripe/solidstart/src/routes/api/checkout.ts",dest:"src/routes/api/checkout.ts"},{src:"payments/stripe/solidstart/src/routes/api/webhooks/stripe.ts.hbs",dest:"src/routes/api/webhooks/stripe.ts",isTemplate:!0},{src:"payments/stripe/solidstart/src/routes/api/portal.ts",dest:"src/routes/api/portal.ts"},{src:"payments/stripe/solidstart/src/components/pricing/pricing-card.tsx.hbs",dest:"src/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/solidstart/src/components/pricing/checkout-button.tsx",dest:"src/components/pricing/checkout-button.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/stripe/tanstack-start/app/lib/stripe.server.ts",dest:"app/lib/stripe.server.ts"},{src:"payments/stripe/tanstack-start/app/routes/api.checkout.ts",dest:"app/routes/api.checkout.ts"},{src:"payments/stripe/tanstack-start/app/routes/api.webhooks.stripe.ts.hbs",dest:"app/routes/api.webhooks.stripe.ts",isTemplate:!0},{src:"payments/stripe/tanstack-start/app/components/pricing/pricing-card.tsx.hbs",dest:"app/components/pricing/pricing-card.tsx",isTemplate:!0},{src:"payments/stripe/tanstack-start/app/components/pricing/checkout-button.tsx",dest:"app/components/pricing/checkout-button.tsx"});return _}function I5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/paddle/nextjs/lib/paddle.ts",dest:"src/lib/paddle.ts"},{src:"payments/paddle/nextjs/api/webhooks/paddle/route.ts.hbs",dest:"src/app/api/webhooks/paddle/route.ts",isTemplate:!0},{src:"payments/paddle/nextjs/components/paddle-checkout.tsx",dest:"src/components/pricing/paddle-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/paddle/sveltekit/lib/paddle.ts",dest:"src/lib/server/paddle.ts"},{src:"payments/paddle/sveltekit/routes/api/webhooks/paddle/+server.ts.hbs",dest:"src/routes/api/webhooks/paddle/+server.ts",isTemplate:!0},{src:"payments/paddle/sveltekit/components/PaddleCheckout.svelte",dest:"src/lib/components/pricing/PaddleCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/paddle/nuxt/server/utils/paddle.ts",dest:"server/utils/paddle.ts"},{src:"payments/paddle/nuxt/composables/usePaddle.ts",dest:"composables/usePaddle.ts"},{src:"payments/paddle/nuxt/server/api/webhooks/paddle.post.ts.hbs",dest:"server/api/webhooks/paddle.post.ts",isTemplate:!0},{src:"payments/paddle/nuxt/components/PaddleCheckout.vue",dest:"components/pricing/PaddleCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/paddle/remix/app/lib/paddle.server.ts",dest:"app/lib/paddle.server.ts"},{src:"payments/paddle/remix/app/routes/api.webhooks.paddle.ts.hbs",dest:"app/routes/api.webhooks.paddle.ts",isTemplate:!0},{src:"payments/paddle/remix/app/components/pricing/paddle-checkout.tsx",dest:"app/components/pricing/paddle-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/paddle/astro/src/lib/paddle.ts",dest:"src/lib/paddle.ts"},{src:"payments/paddle/astro/src/pages/api/webhooks/paddle.ts.hbs",dest:"src/pages/api/webhooks/paddle.ts",isTemplate:!0},{src:"payments/paddle/astro/src/components/pricing/PaddleCheckout.tsx",dest:"src/components/pricing/PaddleCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/paddle/solidstart/src/lib/paddle.server.ts",dest:"src/lib/paddle.server.ts"},{src:"payments/paddle/solidstart/src/routes/api/webhooks/paddle.ts.hbs",dest:"src/routes/api/webhooks/paddle.ts",isTemplate:!0},{src:"payments/paddle/solidstart/src/components/pricing/paddle-checkout.tsx",dest:"src/components/pricing/paddle-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/paddle/tanstack-start/app/lib/paddle.server.ts",dest:"app/lib/paddle.server.ts"},{src:"payments/paddle/tanstack-start/app/routes/api.webhooks.paddle.ts.hbs",dest:"app/routes/api.webhooks.paddle.ts",isTemplate:!0},{src:"payments/paddle/tanstack-start/app/components/pricing/paddle-checkout.tsx",dest:"app/components/pricing/paddle-checkout.tsx"});return _}function D5(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/lemonsqueezy/nextjs/lib/lemonsqueezy.ts",dest:"src/lib/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/nextjs/api/webhooks/lemonsqueezy/route.ts.hbs",dest:"src/app/api/webhooks/lemonsqueezy/route.ts",isTemplate:!0},{src:"payments/lemonsqueezy/nextjs/components/lemonsqueezy-checkout.tsx",dest:"src/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/lemonsqueezy/sveltekit/lib/lemonsqueezy.ts",dest:"src/lib/server/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/sveltekit/routes/api/webhooks/lemonsqueezy/+server.ts.hbs",dest:"src/routes/api/webhooks/lemonsqueezy/+server.ts",isTemplate:!0},{src:"payments/lemonsqueezy/sveltekit/components/LemonSqueezyCheckout.svelte",dest:"src/lib/components/pricing/LemonSqueezyCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/lemonsqueezy/nuxt/server/utils/lemonsqueezy.ts",dest:"server/utils/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/nuxt/composables/useLemonSqueezy.ts",dest:"composables/useLemonSqueezy.ts"},{src:"payments/lemonsqueezy/nuxt/server/api/webhooks/lemonsqueezy.post.ts.hbs",dest:"server/api/webhooks/lemonsqueezy.post.ts",isTemplate:!0},{src:"payments/lemonsqueezy/nuxt/components/LemonSqueezyCheckout.vue",dest:"components/pricing/LemonSqueezyCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/lemonsqueezy/remix/app/lib/lemonsqueezy.server.ts",dest:"app/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/remix/app/routes/api.webhooks.lemonsqueezy.ts.hbs",dest:"app/routes/api.webhooks.lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/remix/app/components/pricing/lemonsqueezy-checkout.tsx",dest:"app/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/lemonsqueezy/astro/src/lib/lemonsqueezy.ts",dest:"src/lib/lemonsqueezy.ts"},{src:"payments/lemonsqueezy/astro/src/pages/api/webhooks/lemonsqueezy.ts.hbs",dest:"src/pages/api/webhooks/lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/astro/src/components/pricing/LemonSqueezyCheckout.tsx",dest:"src/components/pricing/LemonSqueezyCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/lemonsqueezy/solidstart/src/lib/lemonsqueezy.server.ts",dest:"src/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/solidstart/src/routes/api/webhooks/lemonsqueezy.ts.hbs",dest:"src/routes/api/webhooks/lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/solidstart/src/components/pricing/lemonsqueezy-checkout.tsx",dest:"src/components/pricing/lemonsqueezy-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/lemonsqueezy/tanstack-start/app/lib/lemonsqueezy.server.ts",dest:"app/lib/lemonsqueezy.server.ts"},{src:"payments/lemonsqueezy/tanstack-start/app/routes/api.webhooks.lemonsqueezy.ts.hbs",dest:"app/routes/api.webhooks.lemonsqueezy.ts",isTemplate:!0},{src:"payments/lemonsqueezy/tanstack-start/app/components/pricing/lemonsqueezy-checkout.tsx",dest:"app/components/pricing/lemonsqueezy-checkout.tsx"});return _}function aK(q){if(q.isRemix)return"app/lib";return"src/lib/db"}function x5(q){let _=aK(q),f=q.isRemix?"db.server.ts":"index.ts",$=q.isRemix?"db.schema.ts":"schema.ts";return[{src:"database/drizzle/drizzle.config.ts.hbs",dest:"drizzle.config.ts",isTemplate:!0},{src:"database/drizzle/schema.ts.hbs",dest:`${_}/${$}`,isTemplate:!0},{src:"database/drizzle/index.ts.hbs",dest:`${_}/${f}`,isTemplate:!0}]}function L5(q){if(q.isRemix)return"app/lib/db.server.ts";return"src/lib/db/index.ts"}function s5(q){return[{src:"database/prisma/schema.prisma.hbs",dest:"prisma/schema.prisma",isTemplate:!0},{src:"database/prisma/client.ts",dest:L5(q)}]}function B5(q){let _=aK(q),f=q.isRemix?"db.server.ts":"index.ts";return[{src:"database/kysely/db.ts.hbs",dest:`${_}/${f}`,isTemplate:!0},{src:"database/kysely/types.ts.hbs",dest:`${_}/types.ts`,isTemplate:!0},{src:"database/kysely/kysely.config.ts.hbs",dest:"kysely.config.ts",isTemplate:!0},{src:"database/kysely/migrations/001_initial.ts.hbs",dest:`${_}/migrations/001_initial.ts`,isTemplate:!0}]}function U5(q){let _=[{src:"backend/hono/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/hono/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/hono/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/hono/src/middleware/cors.ts",dest:"src/api/middleware/cors.ts"},{src:"backend/hono/src/middleware/logger.ts",dest:"src/api/middleware/logger.ts"},{src:"backend/hono/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/hono/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/hono/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/hono/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/hono/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function F5(q){return[{src:"frameworks/solidstart/app.config.ts",dest:"app.config.ts"},{src:"frameworks/solidstart/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/solidstart/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/solidstart/src/app.tsx.hbs",dest:"src/app.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/app.css",dest:"src/app.css"},{src:"frameworks/solidstart/src/entry-client.tsx",dest:"src/entry-client.tsx"},{src:"frameworks/solidstart/src/entry-server.tsx",dest:"src/entry-server.tsx"},{src:"frameworks/solidstart/src/lib/utils.ts",dest:"src/lib/utils.ts"},{src:"frameworks/solidstart/src/components/ui/Button.tsx",dest:"src/components/ui/Button.tsx"},{src:"frameworks/solidstart/src/components/ui/Card.tsx",dest:"src/components/ui/Card.tsx"},{src:"frameworks/solidstart/src/components/ui/Input.tsx",dest:"src/components/ui/Input.tsx"},{src:"frameworks/solidstart/src/routes/index.tsx.hbs",dest:"src/routes/index.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/routes/pricing.tsx.hbs",dest:"src/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/routes/dashboard.tsx.hbs",dest:"src/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/index.tsx.hbs",dest:"src/routes/dashboard/index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/settings.tsx",dest:"src/routes/dashboard/settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/solidstart/src/routes/dashboard/billing.tsx.hbs",dest:"src/routes/dashboard/billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/solidstart/src/components/Header.tsx.hbs",dest:"src/components/Header.tsx",isTemplate:!0},{src:"frameworks/solidstart/src/components/Footer.tsx",dest:"src/components/Footer.tsx"},{src:"frameworks/solidstart/src/components/Sidebar.tsx.hbs",dest:"src/components/Sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function Q5(q){return[{src:"frameworks/tanstack-start/app.config.ts",dest:"app.config.ts"},{src:"frameworks/tanstack-start/tsconfig.json",dest:"tsconfig.json"},{src:"frameworks/tanstack-start/tailwind.config.ts",dest:"tailwind.config.ts"},{src:"frameworks/tanstack-start/app/client.tsx",dest:"app/client.tsx"},{src:"frameworks/tanstack-start/app/ssr.tsx",dest:"app/ssr.tsx"},{src:"frameworks/tanstack-start/app/router.tsx",dest:"app/router.tsx"},{src:"frameworks/tanstack-start/app/global.css",dest:"app/global.css"},{src:"frameworks/tanstack-start/app/lib/utils.ts",dest:"app/lib/utils.ts"},{src:"frameworks/tanstack-start/app/routes/__root.tsx.hbs",dest:"app/routes/__root.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/index.tsx.hbs",dest:"app/routes/index.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/pricing.tsx.hbs",dest:"app/routes/pricing.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/routes/dashboard.tsx.hbs",dest:"app/routes/dashboard.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.index.tsx.hbs",dest:"app/routes/dashboard.index.tsx",isTemplate:!0,condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.settings.tsx",dest:"app/routes/dashboard.settings.tsx",condition:(f)=>!!f.auth},{src:"frameworks/tanstack-start/app/routes/dashboard.billing.tsx.hbs",dest:"app/routes/dashboard.billing.tsx",isTemplate:!0,condition:(f)=>!!f.auth&&!!f.payments},{src:"frameworks/tanstack-start/app/components/ui/button.tsx",dest:"app/components/ui/button.tsx"},{src:"frameworks/tanstack-start/app/components/ui/card.tsx",dest:"app/components/ui/card.tsx"},{src:"frameworks/tanstack-start/app/components/ui/input.tsx",dest:"app/components/ui/input.tsx"},{src:"frameworks/tanstack-start/app/components/header.tsx.hbs",dest:"app/components/header.tsx",isTemplate:!0},{src:"frameworks/tanstack-start/app/components/footer.tsx",dest:"app/components/footer.tsx"},{src:"frameworks/tanstack-start/app/components/sidebar.tsx.hbs",dest:"app/components/sidebar.tsx",isTemplate:!0,condition:(f)=>!!f.auth}]}function q1(q){let _=[];if(q.framework==="nextjs")_.push({src:"payments/polar/nextjs/lib/polar.ts",dest:"src/lib/polar.ts"},{src:"payments/polar/nextjs/api/webhooks/polar/route.ts.hbs",dest:"src/app/api/webhooks/polar/route.ts",isTemplate:!0},{src:"payments/polar/nextjs/components/polar-checkout.tsx",dest:"src/components/pricing/polar-checkout.tsx"});else if(q.framework==="sveltekit")_.push({src:"payments/polar/sveltekit/lib/polar.ts",dest:"src/lib/server/polar.ts"},{src:"payments/polar/sveltekit/routes/api/webhooks/polar/+server.ts.hbs",dest:"src/routes/api/webhooks/polar/+server.ts",isTemplate:!0},{src:"payments/polar/sveltekit/components/PolarCheckout.svelte",dest:"src/lib/components/pricing/PolarCheckout.svelte"});else if(q.framework==="nuxt")_.push({src:"payments/polar/nuxt/server/utils/polar.ts",dest:"server/utils/polar.ts"},{src:"payments/polar/nuxt/composables/usePolar.ts",dest:"composables/usePolar.ts"},{src:"payments/polar/nuxt/server/api/webhooks/polar.post.ts.hbs",dest:"server/api/webhooks/polar.post.ts",isTemplate:!0},{src:"payments/polar/nuxt/components/PolarCheckout.vue",dest:"components/pricing/PolarCheckout.vue"});else if(q.framework==="remix")_.push({src:"payments/polar/remix/app/lib/polar.server.ts",dest:"app/lib/polar.server.ts"},{src:"payments/polar/remix/app/routes/api.webhooks.polar.ts.hbs",dest:"app/routes/api.webhooks.polar.ts",isTemplate:!0},{src:"payments/polar/remix/app/components/pricing/polar-checkout.tsx",dest:"app/components/pricing/polar-checkout.tsx"});else if(q.framework==="astro")_.push({src:"payments/polar/astro/src/lib/polar.ts",dest:"src/lib/polar.ts"},{src:"payments/polar/astro/src/pages/api/webhooks/polar.ts.hbs",dest:"src/pages/api/webhooks/polar.ts",isTemplate:!0},{src:"payments/polar/astro/src/components/pricing/PolarCheckout.tsx",dest:"src/components/pricing/PolarCheckout.tsx"});else if(q.framework==="solidstart")_.push({src:"payments/polar/solidstart/src/lib/polar.server.ts",dest:"src/lib/polar.server.ts"},{src:"payments/polar/solidstart/src/routes/api/webhooks/polar.ts.hbs",dest:"src/routes/api/webhooks/polar.ts",isTemplate:!0},{src:"payments/polar/solidstart/src/components/pricing/polar-checkout.tsx",dest:"src/components/pricing/polar-checkout.tsx"});else if(q.framework==="tanstack-start")_.push({src:"payments/polar/tanstack-start/app/lib/polar.server.ts",dest:"app/lib/polar.server.ts"},{src:"payments/polar/tanstack-start/app/routes/api.webhooks.polar.ts.hbs",dest:"app/routes/api.webhooks.polar.ts",isTemplate:!0},{src:"payments/polar/tanstack-start/app/components/pricing/polar-checkout.tsx",dest:"app/components/pricing/polar-checkout.tsx"});return _}function _1(q){return[{src:"database/mongoose/connection.ts.hbs",dest:"src/lib/db/connection.ts",isTemplate:!0},{src:"database/mongoose/index.ts",dest:"src/lib/db/index.ts"},{src:"database/mongoose/models/index.ts",dest:"src/lib/db/models/index.ts"},{src:"database/mongoose/models/user.ts.hbs",dest:"src/lib/db/models/user.ts",isTemplate:!0}]}function f1(q){let _=[{src:"backend/elysia/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/elysia/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/elysia/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/elysia/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/elysia/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/elysia/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/elysia/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/elysia/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function $1(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/supabase/nextjs/supabase-client.ts",dest:"src/lib/supabase/client.ts"},{src:"auth/supabase/nextjs/supabase-server.ts",dest:"src/lib/supabase/server.ts"},{src:"auth/supabase/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/supabase/nextjs/app/auth/callback/route.ts",dest:"src/app/auth/callback/route.ts"},{src:"auth/supabase/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/supabase/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/supabase/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/supabase/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/supabase/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/supabase/sveltekit/supabase-client.ts",dest:"src/lib/supabase/client.ts"},{src:"auth/supabase/sveltekit/supabase-server.ts",dest:"src/lib/supabase/server.ts"},{src:"auth/supabase/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/supabase/sveltekit/routes/auth/callback/+server.ts",dest:"src/routes/auth/callback/+server.ts"},{src:"auth/supabase/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/supabase/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/supabase/sveltekit/components/AuthForm.svelte",dest:"src/lib/components/auth/AuthForm.svelte"},{src:"auth/supabase/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});else if(q.framework==="nuxt")_.push({src:"auth/supabase/nuxt/composables/useSupabaseAuth.ts",dest:"composables/useSupabaseAuth.ts"},{src:"auth/supabase/nuxt/pages/login.vue",dest:"pages/login.vue"},{src:"auth/supabase/nuxt/pages/register.vue",dest:"pages/register.vue"},{src:"auth/supabase/nuxt/pages/auth/callback.vue",dest:"pages/auth/callback.vue"},{src:"auth/supabase/nuxt/components/AuthForm.vue",dest:"components/auth/AuthForm.vue"},{src:"auth/supabase/nuxt/components/UserButton.vue",dest:"components/auth/UserButton.vue"});else if(q.framework==="remix")_.push({src:"auth/supabase/remix/app/lib/supabase.server.ts",dest:"app/lib/supabase.server.ts"},{src:"auth/supabase/remix/app/lib/supabase.client.ts",dest:"app/lib/supabase.client.ts"},{src:"auth/supabase/remix/app/routes/auth.callback.tsx",dest:"app/routes/auth.callback.tsx"},{src:"auth/supabase/remix/app/routes/login.tsx",dest:"app/routes/login.tsx"},{src:"auth/supabase/remix/app/routes/register.tsx",dest:"app/routes/register.tsx"},{src:"auth/supabase/remix/app/components/auth/auth-form.tsx",dest:"app/components/auth/auth-form.tsx"},{src:"auth/supabase/remix/app/components/auth/user-button.tsx",dest:"app/components/auth/user-button.tsx"});else if(q.framework==="astro")_.push({src:"auth/supabase/astro/src/lib/supabase.ts",dest:"src/lib/supabase.ts"},{src:"auth/supabase/astro/src/pages/auth/callback.ts",dest:"src/pages/auth/callback.ts"},{src:"auth/supabase/astro/src/pages/login.astro",dest:"src/pages/login.astro"},{src:"auth/supabase/astro/src/pages/register.astro",dest:"src/pages/register.astro"},{src:"auth/supabase/astro/src/components/auth/AuthForm.tsx",dest:"src/components/auth/AuthForm.tsx"},{src:"auth/supabase/astro/src/components/auth/UserButton.tsx",dest:"src/components/auth/UserButton.tsx"});return _}function K1(q){let _=[];if(q.framework==="nextjs")_.push({src:"auth/lucia/nextjs/auth.ts.hbs",dest:"src/lib/auth.ts",isTemplate:!0},{src:"auth/lucia/nextjs/auth-actions.ts",dest:"src/lib/auth-actions.ts"},{src:"auth/lucia/nextjs/validate-request.ts",dest:"src/lib/validate-request.ts"},{src:"auth/lucia/nextjs/middleware.ts",dest:"src/middleware.ts"},{src:"auth/lucia/nextjs/app/(auth)/layout.tsx",dest:"src/app/(auth)/layout.tsx"},{src:"auth/lucia/nextjs/app/(auth)/login/page.tsx",dest:"src/app/(auth)/login/page.tsx"},{src:"auth/lucia/nextjs/app/(auth)/register/page.tsx",dest:"src/app/(auth)/register/page.tsx"},{src:"auth/lucia/nextjs/components/auth-form.tsx",dest:"src/components/auth/auth-form.tsx"},{src:"auth/lucia/nextjs/components/user-button.tsx",dest:"src/components/auth/user-button.tsx"});else if(q.framework==="sveltekit")_.push({src:"auth/lucia/sveltekit/auth.ts.hbs",dest:"src/lib/server/auth.ts",isTemplate:!0},{src:"auth/lucia/sveltekit/hooks.server.ts",dest:"src/hooks.server.ts"},{src:"auth/lucia/sveltekit/app.d.ts",dest:"src/app.d.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/login/+page.server.ts",dest:"src/routes/(auth)/login/+page.server.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/login/+page.svelte",dest:"src/routes/(auth)/login/+page.svelte"},{src:"auth/lucia/sveltekit/routes/(auth)/register/+page.server.ts",dest:"src/routes/(auth)/register/+page.server.ts"},{src:"auth/lucia/sveltekit/routes/(auth)/register/+page.svelte",dest:"src/routes/(auth)/register/+page.svelte"},{src:"auth/lucia/sveltekit/components/UserButton.svelte",dest:"src/lib/components/auth/UserButton.svelte"});return _}function P1(q){let _=[{src:"backend/express/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/express/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/express/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/express/src/middleware/error.ts",dest:"src/api/middleware/error.ts"},{src:"backend/express/src/middleware/validate.ts",dest:"src/api/middleware/validate.ts"},{src:"backend/express/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/express/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/express/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/express/src/middleware/auth.ts.hbs",dest:"src/api/middleware/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/express/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}function j1(q){let _=[{src:"backend/fastify/src/index.ts.hbs",dest:"src/api/index.ts",isTemplate:!0},{src:"backend/fastify/src/plugins/cors.ts",dest:"src/api/plugins/cors.ts"},{src:"backend/fastify/src/plugins/swagger.ts",dest:"src/api/plugins/swagger.ts"},{src:"backend/fastify/src/routes/index.ts",dest:"src/api/routes/index.ts"},{src:"backend/fastify/src/routes/health.ts",dest:"src/api/routes/health.ts"},{src:"backend/fastify/src/schemas/common.ts",dest:"src/api/schemas/common.ts"},{src:"backend/fastify/src/lib/env.ts",dest:"src/api/lib/env.ts"},{src:"backend/fastify/tsconfig.api.json",dest:"tsconfig.api.json"}];if(q.hasAuth)_.push({src:"backend/fastify/src/routes/auth.ts.hbs",dest:"src/api/routes/auth.ts",isTemplate:!0}),_.push({src:"backend/fastify/src/plugins/auth.ts.hbs",dest:"src/api/plugins/auth.ts",isTemplate:!0});if(q.hasDatabase)_.push({src:"backend/fastify/src/lib/db.ts.hbs",dest:"src/api/lib/db.ts",isTemplate:!0});return _}var k={next:"^15.1.0",react:"^19.0.0","react-dom":"^19.0.0",svelte:"^5.0.0","@sveltejs/kit":"^2.15.0","@sveltejs/adapter-auto":"^3.3.0","@sveltejs/adapter-node":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0",nuxt:"^3.15.0",vue:"^3.5.0","@nuxtjs/tailwindcss":"^6.12.0","@vueuse/nuxt":"^12.0.0","@remix-run/node":"^2.15.0","@remix-run/react":"^2.15.0","@remix-run/serve":"^2.15.0","@remix-run/dev":"^2.15.0",isbot:"^5.1.0",astro:"^5.1.0","@astrojs/node":"^9.0.0","@astrojs/react":"^4.1.0","@astrojs/tailwind":"^6.0.0",vite:"^6.0.0","@solidjs/start":"^1.0.0","@solidjs/router":"^0.15.0","@solidjs/meta":"^0.29.0","solid-js":"^1.9.0",vinxi:"^0.5.0","@tanstack/react-start":"^1.95.0","@tanstack/react-router":"^1.95.0",typescript:"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","drizzle-orm":"^0.38.0","drizzle-kit":"^0.30.0",postgres:"^3.4.0","@prisma/client":"^6.0.0",prisma:"^6.0.0","@libsql/client":"^0.14.0","better-sqlite3":"^11.0.0","@types/better-sqlite3":"^7.6.0",kysely:"^0.27.0",pg:"^8.13.0","@types/pg":"^8.11.0","kysely-ctl":"^0.9.0",mongoose:"^8.9.0","better-auth":"^1.2.0","@better-auth/cli":"^1.2.0","@clerk/nextjs":"^6.0.0",lucia:"^3.2.0",oslo:"^1.2.0","@lucia-auth/adapter-drizzle":"^1.1.0","@lucia-auth/adapter-prisma":"^4.0.0","@oslojs/crypto":"^1.0.0","@oslojs/encoding":"^1.1.0","next-auth":"^5.0.0","@auth/core":"^0.37.0","@auth/sveltekit":"^1.7.0","@auth/drizzle-adapter":"^1.7.0","@sidebase/nuxt-auth":"^0.9.0","remix-auth":"^3.7.0","remix-auth-form":"^1.5.0","auth-astro":"^4.2.0","@auth0/nextjs-auth0":"^3.5.0","@auth0/auth0-vue":"^2.3.0","@auth0/auth0-spa-js":"^2.1.0","@auth0/auth0-react":"^2.2.0","@supabase/supabase-js":"^2.47.0","@supabase/ssr":"^0.5.0","@nuxtjs/supabase":"^1.4.0",stripe:"^17.0.0","@stripe/stripe-js":"^5.0.0","@paddle/paddle-node-sdk":"^1.6.0","@paddle/paddle-js":"^1.3.0","@lemonsqueezy/lemonsqueezy.js":"^3.4.0","@polar-sh/sdk":"^0.16.0",tailwindcss:"^4.0.0","@tailwindcss/vite":"^4.0.0",autoprefixer:"^10.4.0",postcss:"^8.4.0",clsx:"^2.1.0","tailwind-merge":"^2.6.0","lucide-react":"^0.469.0","lucide-svelte":"^0.469.0","lucide-vue-next":"^0.469.0",zod:"^3.24.0",nanoid:"^5.0.0","vite-tsconfig-paths":"^5.1.0",hono:"^4.6.0","@hono/node-server":"^1.13.0","@hono/zod-validator":"^0.4.0",elysia:"^1.2.0","@elysiajs/cors":"^1.1.0","@elysiajs/swagger":"^1.1.0",express:"^5.0.0","@types/express":"^5.0.0",helmet:"^8.0.0",cors:"^2.8.0","@types/cors":"^2.8.0","express-rate-limit":"^7.4.0",fastify:"^5.1.0","@fastify/cors":"^10.0.0","@fastify/helmet":"^12.0.0","@fastify/rate-limit":"^10.0.0","@fastify/swagger":"^9.0.0","@fastify/swagger-ui":"^5.0.0"};function tK(q){switch(q){case"nextjs":return{deps:{next:k.next,react:k.react,"react-dom":k["react-dom"]},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"next dev --turbopack",build:"next build",start:"next start",typecheck:"tsc --noEmit"}};case"sveltekit":return{deps:{"@sveltejs/kit":k["@sveltejs/kit"],svelte:k.svelte},devDeps:{"@sveltejs/adapter-auto":k["@sveltejs/adapter-auto"],"@sveltejs/vite-plugin-svelte":k["@sveltejs/vite-plugin-svelte"],vite:k.vite,typescript:k.typescript,"@types/node":k["@types/node"]},scripts:{dev:"vite dev",build:"vite build",preview:"vite preview",typecheck:"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"}};case"nuxt":return{deps:{nuxt:k.nuxt,vue:k.vue,"@nuxtjs/tailwindcss":k["@nuxtjs/tailwindcss"],"@vueuse/nuxt":k["@vueuse/nuxt"]},devDeps:{typescript:k.typescript},scripts:{dev:"nuxi dev",build:"nuxi build",preview:"nuxi preview",generate:"nuxi generate",typecheck:"nuxi typecheck"}};case"remix":return{deps:{"@remix-run/node":k["@remix-run/node"],"@remix-run/react":k["@remix-run/react"],"@remix-run/serve":k["@remix-run/serve"],react:k.react,"react-dom":k["react-dom"],isbot:k.isbot},devDeps:{"@remix-run/dev":k["@remix-run/dev"],vite:k.vite,"vite-tsconfig-paths":k["vite-tsconfig-paths"],typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"remix vite:dev",build:"remix vite:build",start:"remix-serve ./build/server/index.js",typecheck:"tsc --noEmit"}};case"astro":return{deps:{astro:k.astro,"@astrojs/node":k["@astrojs/node"],"@astrojs/react":k["@astrojs/react"],react:k.react,"react-dom":k["react-dom"]},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"astro dev",build:"astro build",preview:"astro preview",typecheck:"astro check && tsc --noEmit"}};case"solidstart":return{deps:{"@solidjs/start":k["@solidjs/start"],"@solidjs/router":k["@solidjs/router"],"@solidjs/meta":k["@solidjs/meta"],"solid-js":k["solid-js"],vinxi:k.vinxi},devDeps:{typescript:k.typescript,"@types/node":k["@types/node"]},scripts:{dev:"vinxi dev",build:"vinxi build",start:"vinxi start",typecheck:"tsc --noEmit"}};case"tanstack-start":return{deps:{"@tanstack/react-start":k["@tanstack/react-start"],"@tanstack/react-router":k["@tanstack/react-router"],react:k.react,"react-dom":k["react-dom"],vinxi:k.vinxi},devDeps:{vite:k.vite,"vite-tsconfig-paths":k["vite-tsconfig-paths"],typescript:k.typescript,"@types/node":k["@types/node"],"@types/react":k["@types/react"],"@types/react-dom":k["@types/react-dom"]},scripts:{dev:"vinxi dev",build:"vinxi build",start:"vinxi start",typecheck:"tsc --noEmit"}};default:return{deps:{},devDeps:{},scripts:{}}}}function GK(q,_){switch(q){case"better-auth":return{deps:{"better-auth":k["better-auth"]},devDeps:{"@better-auth/cli":k["@better-auth/cli"]}};case"clerk":if(_==="nextjs")return{deps:{"@clerk/nextjs":k["@clerk/nextjs"]},devDeps:{}};return{deps:{},devDeps:{}};case"authjs":if(_==="nextjs")return{deps:{"next-auth":k["next-auth"],"@auth/drizzle-adapter":k["@auth/drizzle-adapter"]},devDeps:{}};else if(_==="sveltekit")return{deps:{"@auth/sveltekit":k["@auth/sveltekit"],"@auth/drizzle-adapter":k["@auth/drizzle-adapter"]},devDeps:{}};else if(_==="nuxt")return{deps:{"@sidebase/nuxt-auth":k["@sidebase/nuxt-auth"]},devDeps:{}};else if(_==="remix")return{deps:{"remix-auth":k["remix-auth"],"remix-auth-form":k["remix-auth-form"]},devDeps:{}};else if(_==="astro")return{deps:{"auth-astro":k["auth-astro"],"@auth/core":k["@auth/core"]},devDeps:{}};return{deps:{},devDeps:{}};case"auth0":if(_==="nextjs")return{deps:{"@auth0/nextjs-auth0":k["@auth0/nextjs-auth0"]},devDeps:{}};else if(_==="nuxt")return{deps:{"@auth0/auth0-vue":k["@auth0/auth0-vue"]},devDeps:{}};else return{deps:{"@auth0/auth0-spa-js":k["@auth0/auth0-spa-js"]},devDeps:{}};case"lucia":return{deps:{lucia:k.lucia,"@oslojs/crypto":k["@oslojs/crypto"],"@oslojs/encoding":k["@oslojs/encoding"]},devDeps:{}};case"supabase":if(_==="nuxt")return{deps:{"@nuxtjs/supabase":k["@nuxtjs/supabase"]},devDeps:{}};return{deps:{"@supabase/supabase-js":k["@supabase/supabase-js"],"@supabase/ssr":k["@supabase/ssr"]},devDeps:{}};default:return{deps:{},devDeps:{}}}}function lK(q){switch(q){case"stripe":return{deps:{stripe:k.stripe,"@stripe/stripe-js":k["@stripe/stripe-js"]},devDeps:{}};case"paddle":return{deps:{"@paddle/paddle-node-sdk":k["@paddle/paddle-node-sdk"],"@paddle/paddle-js":k["@paddle/paddle-js"]},devDeps:{}};case"lemonsqueezy":return{deps:{"@lemonsqueezy/lemonsqueezy.js":k["@lemonsqueezy/lemonsqueezy.js"]},devDeps:{}};case"polar":return{deps:{"@polar-sh/sdk":k["@polar-sh/sdk"]},devDeps:{}};default:return{deps:{},devDeps:{}}}}function bK(q,_){let f=["postgres","neon","supabase"].includes(_),$=["sqlite","turso"].includes(_);if(q==="drizzle"){let P={"drizzle-orm":k["drizzle-orm"]};if(f)P.postgres=k.postgres;else if($)if(_==="turso")P["@libsql/client"]=k["@libsql/client"];else P["better-sqlite3"]=k["better-sqlite3"];return{deps:P,devDeps:{"drizzle-kit":k["drizzle-kit"],...$&&_!=="turso"?{"@types/better-sqlite3":k["@types/better-sqlite3"]}:{}},scripts:{"db:generate":"drizzle-kit generate","db:migrate":"drizzle-kit migrate","db:push":"drizzle-kit push","db:studio":"drizzle-kit studio"}}}if(q==="prisma")return{deps:{"@prisma/client":k["@prisma/client"]},devDeps:{prisma:k.prisma},scripts:{"db:generate":"prisma generate","db:push":"prisma db push","db:migrate":"prisma migrate dev","db:studio":"prisma studio"}};if(q==="kysely"){let P={kysely:k.kysely};if(f)P.pg=k.pg;else if($)if(_==="turso")P["@libsql/client"]=k["@libsql/client"];else P["better-sqlite3"]=k["better-sqlite3"];return{deps:P,devDeps:{"kysely-ctl":k["kysely-ctl"],...f?{"@types/pg":k["@types/pg"]}:{},...$&&_!=="turso"?{"@types/better-sqlite3":k["@types/better-sqlite3"]}:{}},scripts:{"db:migrate":"kysely migrate:latest","db:migrate:down":"kysely migrate:down","db:migrate:make":"kysely migrate:make"}}}if(q==="mongoose")return{deps:{mongoose:k.mongoose},devDeps:{},scripts:{}};return{deps:{},devDeps:{},scripts:{}}}function MK(q){let _=q==="sveltekit"?"lucide-svelte":q==="nuxt"?"lucide-vue-next":"lucide-react";return{deps:{clsx:k.clsx,"tailwind-merge":k["tailwind-merge"],[_]:k[_]},devDeps:{tailwindcss:k.tailwindcss,"@tailwindcss/vite":k["@tailwindcss/vite"]}}}function CK(){return{deps:{zod:k.zod},devDeps:{}}}import{exec as v1}from"child_process";import{promisify as w1}from"util";import{copyFile as r1,access as zf,constants as ef}from"fs/promises";import{join as Hf}from"path";var X8=w1(v1);async function VK(){try{return await X8("bun --version"),"bun"}catch{}try{return await X8("pnpm --version"),"pnpm"}catch{}return"npm"}async function m1(q,_){let f=_||await VK();try{let $=f==="npm"?"npm install":`${f} install`;return await X8($,{cwd:q,timeout:120000}),{success:!0,message:`Dependencies installed with ${f}`}}catch($){return{success:!1,message:`Failed to install dependencies with ${f}`,error:$}}}async function O1(q){try{try{return await zf(Hf(q,".git"),ef.F_OK),{success:!0,message:"Git repository already initialized"}}catch{}return await X8("git init",{cwd:q}),await X8("git add -A",{cwd:q}),await X8('git commit -m "Initial commit from create-stacksfinder"',{cwd:q}),{success:!0,message:"Git repository initialized"}}catch(_){return{success:!1,message:"Failed to initialize git",error:_}}}async function T1(q){let _=Hf(q,".env.example"),f=Hf(q,".env");try{try{return await zf(f,ef.F_OK),{success:!0,message:".env file already exists"}}catch{}try{await zf(_,ef.F_OK)}catch{return{success:!1,message:".env.example not found"}}return await r1(_,f),{success:!0,message:"Created .env from .env.example"}}catch($){return{success:!1,message:"Failed to create .env file",error:$}}}async function Y1(q,_){if(!_.orm)return{success:!0,message:"No ORM configured, skipping database setup"};let f=await VK(),$=f==="npm"?"npm run":`${f} run`;try{if(_.isDrizzle)await X8(`${$} db:generate`,{cwd:q,timeout:60000});else if(_.isPrisma)await X8(`${$} db:generate`,{cwd:q,timeout:60000});return{success:!0,message:`Database setup completed (${_.orm})`}}catch(P){return{success:!1,message:"Database setup skipped (configure .env first)",error:P}}}async function SK(q,_,f={}){let $=[];if(!f.skipInstall){let P=await m1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipEnv){let P=await T1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipGit){let P=await O1(q);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"✗"} ${P.message}`)}if(!f.skipDb&&_.orm){let P=await Y1(q,_);if($.push(P),f.verbose)console.log(` ${P.success?"✓":"⚠"} ${P.message}`)}return{results:$,allSuccess:$.every((P)=>P.success)}}var H1=e1(import.meta.url),W1=yK(H1),RK=hq(W1,"templates");function J1(){if(Z8.default.helpers.eq)return;Z8.default.registerHelper("eq",(q,_)=>q===_),Z8.default.registerHelper("neq",(q,_)=>q!==_),Z8.default.registerHelper("or",(...q)=>q.slice(0,-1).some(Boolean)),Z8.default.registerHelper("and",(...q)=>q.slice(0,-1).every(Boolean)),Z8.default.registerHelper("json",(q)=>JSON.stringify(q,null,2)),Z8.default.registerHelper("unless",function(q,_){return!q?_.fn(this):_.inverse(this)})}async function Z1(q){try{return await z1(hq(RK,q)),!0}catch{return!1}}async function n1(q,_,f){if(q.condition&&!q.condition(_))return!0;let $=hq(RK,q.src),P=hq(f,q.dest);if(await cK(yK(P),{recursive:!0}),!await Z1(q.src))return console.warn(`Template not found: ${q.src}`),!1;try{if(q.isTemplate){let K=await k1($,"utf-8"),r=Z8.default.compile(K,{noEscape:!0})(_);await NK(P,r)}else await h1($,P);return!0}catch(K){return console.error(`Error processing ${q.src}:`,K),!1}}function o1(q){let _=tK(q.framework||"nextjs"),f=q.orm?bK(q.orm,q.database||"postgres"):{deps:{},devDeps:{},scripts:{}},$=q.auth?GK(q.auth,q.framework||"nextjs"):{deps:{},devDeps:{}},P=q.payments?lK(q.payments):{deps:{},devDeps:{}},j=MK(q.framework||"nextjs"),K=CK();return{name:q.projectName,version:"0.1.0",private:!0,type:"module",scripts:{..._.scripts,...f.scripts},dependencies:{..._.deps,...f.deps,...$.deps,...P.deps,...j.deps,...K.deps},devDependencies:{..._.devDeps,...f.devDeps,...$.devDeps,...P.devDeps,...j.devDeps,...K.devDeps}}}async function gK(q,_,f,$={},P){J1();let j=xq(q,_);await cK(f,{recursive:!0}),P?.({phase:"init",current:0,total:0});let K=o1(j);await NK(hq(f,"package.json"),JSON.stringify(K,null,2)),P?.({phase:"config",file:"package.json",current:1,total:0});let v=AK(j),r=v.length,w=1,O=0,m="";for(let T=0;T<v.length;T++){let h=v[T],z=p1(h.src);if(z!==m)m=z,P?.({phase:z,current:T,total:r});if(await n1(h,j,f))w++,P?.({phase:m,file:h.dest,current:T+1,total:r});else O++}if(!$.skipInstall)P?.({phase:"install",current:r,total:r}),await SK(f,j,{skipInstall:$.skipInstall,skipGit:$.skipGit,verbose:$.verbose});return P?.({phase:"complete",current:r,total:r}),{success:O===0,generated:w,skipped:O,context:j}}function p1(q){if(q.includes("config")||q.includes("tsconfig")||q.includes("vite"))return"config";if(q.includes("auth"))return"auth";if(q.includes("database")||q.includes("drizzle")||q.includes("prisma"))return"database";if(q.includes("payment")||q.includes("stripe")||q.includes("paddle"))return"payments";if(q.includes("component"))return"components";if(q.includes("route")||q.includes("app/"))return"routes";return"files"}async function EK(q,_){let f=`https://stacksfinder.com/api/v1/blueprints/${q}`,$=await fetch(f,{method:"GET",headers:{Authorization:`Bearer ${_}`,"Content-Type":"application/json","User-Agent":"create-stacksfinder/0.1.0"}});if(!$.ok){if($.status===401)throw Error("Invalid API key. Get your key at stacksfinder.com/settings/api-keys");if($.status===403)throw Error("API access requires a Pro or Team subscription. Upgrade at stacksfinder.com/pro");if($.status===404)throw Error(`Blueprint "${q}" not found. Check the ID and try again.`);let P=await $.json().catch(()=>({}));throw Error(P.message||`API error: ${$.status} ${$.statusText}`)}return $.json()}function IK(q){if(q)return q;return process.env.STACKSFINDER_API_KEY}import{existsSync as DK,readFileSync as xK}from"fs";import{join as LK}from"path";var sK=[".stacksfinderrc.json",".stacksfinderrc","stacksfinder.config.json"],T8={projectType:"saas",scale:"mvp",priority:"speed",framework:"nextjs",database:"postgres",orm:"drizzle",auth:"better-auth",payments:null,hosting:"vercel"};async function Wf(){for(let _ of sK){let f=LK(process.cwd(),_);if(DK(f))try{let $=xK(f,"utf-8");return JSON.parse($)}catch($){return console.warn(`Warning: Failed to parse ${_}`),null}}let q=process.env.HOME||process.env.USERPROFILE;if(q)for(let _ of sK){let f=LK(q,_);if(DK(f))try{let $=xK(f,"utf-8");return JSON.parse($)}catch($){return console.warn(`Warning: Failed to parse ${_} in home directory`),null}}return null}async function u1(){let q=await Wf();if(!q?.defaults)return{};return{projectType:q.defaults.projectType,scale:q.defaults.scale,priority:q.defaults.priority,framework:q.defaults.framework,database:q.defaults.database,orm:q.defaults.orm,auth:q.defaults.auth,payments:q.defaults.payments}}async function BK(q){let _=await Wf();if(!_?.presets)return null;return _.presets[q]??null}async function UK(){let q=await Wf();if(!q?.presets)return[];return Object.keys(q.presets)}async function FK(){let q=await u1();return{...T8,...Object.fromEntries(Object.entries(q).filter(([_,f])=>f!==void 0))}}function QK(q){return{projectType:q.projectType??T8.projectType,scale:q.scale??T8.scale,priority:q.priority??T8.priority,framework:q.framework??T8.framework,database:q.database??T8.database,orm:q.orm??T8.orm,auth:q.auth!==void 0?q.auth:T8.auth,payments:q.payments!==void 0?q.payments:T8.payments,hosting:q.hosting??T8.hosting}}var l=L(f8(),1),i1={remix:{drizzle:"Drizzle's type-safe queries pair perfectly with Remix loaders",prisma:"Prisma's schema-first approach works well with Remix's data loading","better-auth":"Better Auth integrates natively with Remix's session handling",stripe:"Stripe webhooks fit naturally into Remix resource routes",supabase:"Supabase provides both database and auth for rapid Remix development"},nextjs:{drizzle:"Drizzle's edge-ready design complements Next.js middleware",prisma:"Prisma's mature ecosystem integrates seamlessly with Next.js API routes",clerk:"Clerk provides drop-in auth components for Next.js App Router","better-auth":"Better Auth's minimal footprint suits Next.js server components",stripe:"Next.js API routes provide a clean Stripe webhook integration",vercel:"Vercel's zero-config deployment is optimized for Next.js"},sveltekit:{drizzle:"Drizzle's lightweight design matches SvelteKit's performance focus",prisma:"Prisma works well with SvelteKit's server-side data loading","better-auth":"Better Auth's Svelte adapter provides native store integration",stripe:"SvelteKit endpoints handle Stripe webhooks efficiently",cloudflare:"Cloudflare Pages offers excellent SvelteKit adapter support"},nuxt:{drizzle:"Drizzle works well with Nuxt's server routes",prisma:"Prisma integrates with Nuxt's Nitro server","better-auth":"Better Auth provides Vue composables for Nuxt",stripe:"Nuxt server routes handle Stripe integration cleanly"}};function zq(q,_){return i1[q]?.[_]}function d1(q,_){let f=_.framework;if(!f)return;let $=[];if(_.orm){let P=zq(f,_.orm);if(P)$.push(P)}if(_.auth){let P=zq(f,_.auth);if(P)$.push(P)}if(_.payments){let P=zq(f,_.payments);if(P)$.push(P)}if(_.database){let P=zq(f,_.database);if(P)$.push(P)}if(_.hosting){let P=zq(f,_.hosting);if(P)$.push(P)}if($.length>0){console.log(""),console.log(l.default.dim(" Stack synergies detected:"));for(let P of $.slice(0,3))console.log(l.default.dim(` + ${P}`))}}function qP(q,_,f,$){if(console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(""),console.log(` ${l.default.bold("Generation complete")}`),console.log(""),console.log(` ${l.default.cyan(String(f))} files generated`),$>0)console.log(l.default.yellow(` ${$} templates not found`));console.log(""),console.log(l.default.dim(" Stack composition:"));let P=_.frameworkEntry?.name||_.framework||"Unknown",j=_.databaseEntry?.name||_.database||"None",K=_.ormEntry?.name||_.orm||"None",v=_.authEntry?.name||_.auth||"None",r=_.paymentsEntry?.name||_.payments||"None";if(console.log(l.default.dim(` Framework: ${P}`)),console.log(l.default.dim(` Database: ${j} + ${K}`)),_.auth)console.log(l.default.dim(` Auth: ${v}`));if(_.payments)console.log(l.default.dim(` Payments: ${r}`));let w=q.stackScore?.grade||"A";console.log(""),console.log(` Overall stack grade: ${l.default.green(`[${w}]`)} ${X1(w)}`)}function X1(q){return{"A+":"Optimal choice for your requirements",A:"Excellent match with proven synergies","A-":"Strong choice with minor trade-offs","B+":"Good fit, some alternatives worth considering",B:"Solid option for your use case","B-":"Adequate, but better options exist",C:"Consider alternatives for better results"}[q]||""}function _P(q,_){console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(""),console.log(` ${l.default.bold("Preparing generation...")}`),console.log("");let f=[];if(_.framework)f.push(`${_.frameworkEntry?.name||_.framework} project structure`);if(_.orm)f.push(`${_.ormEntry?.name||_.orm} database layer`);if(_.auth)f.push(`${_.authEntry?.name||_.auth} authentication`);if(_.payments)f.push(`${_.paymentsEntry?.name||_.payments} payment integration`);console.log(l.default.dim(" Generating:"));for(let $ of f)console.log(l.default.dim(` + ${$}`));d1(q,_)}function Jf(q,_){if(console.log(""),console.log(l.default.dim(" ───────────────────────────────────────────────────")),console.log(` ${l.default.bold("Seed:")} ${l.default.cyan(q)}`),console.log(l.default.dim(" Reproduce this config: --seed <seed>")),_)console.log(""),console.log(l.default.green(` Saved as "${_}"`)),console.log(l.default.dim(` Use: bun create stacksfinder my-app --seed ${_}`))}import{join as t1}from"path";function A1(){return!!(process.env.STACKSFINDER_TELEMETRY_DISABLED||process.env.DO_NOT_TRACK||process.env.CI)}function eq(q,_){if(A1())return;let f={v:"0.2.0",action:q,projectType:_?.projectType,scale:_?.scale,ecosystem:_?.ecosystem,priorityCount:_?.priorities?.length,constraintCount:_?.constraints?.length,os:process.platform,ts:Date.now()};fetch("https://stacksfinder.com/api/v1/cli/telemetry",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f),signal:AbortSignal.timeout(3000)}).catch(()=>{})}function fP(q){eq("generate",q)}function $P(){eq("error")}import{createHash as a1}from"crypto";var KP=1,U8="SF1-";function PP(q){let _={v:KP,t:q.projectType,s:q.scale,pr:q.priority,...q.ecosystem&&q.ecosystem!=="javascript"?{e:q.ecosystem}:{},...q.constraints&&q.constraints.length>0?{c:q.constraints}:{}},f=JSON.stringify(_),$=Buffer.from(f).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");return U8+$}function Zf(q){if(!q.startsWith(U8))throw Error(`Invalid seed format. Seeds must start with "${U8}". Example: SF1-abc123...`);try{let _=q.slice(U8.length).replace(/-/g,"+").replace(/_/g,"/"),f=_+"=".repeat((4-_.length%4)%4),$=Buffer.from(f,"base64").toString("utf-8"),P=JSON.parse($),j=P.v||1;if(j>KP)throw Error(`Seed version ${j} is not supported. Please update create-stacksfinder.`);let K;if(P.t)K={projectType:P.t,scale:P.s,priority:P.pr,ecosystem:P.e||"javascript",constraints:P.c||[]};else if(P.e&&P.p)K={projectType:"saas",scale:"mvp",priority:{pioneer:"speed",sprinter:"speed",guardian:"security",pragmatic:"dx"}[P.p]||"speed",ecosystem:P.e||"javascript",constraints:P.c||[]};else throw Error("Seed is missing required fields");let v=a1("sha256").update(JSON.stringify(K)).digest("hex").slice(0,8);return{version:j,config:K,hash:v}}catch(_){if(_ instanceof SyntaxError)throw Error("Invalid seed: corrupted data");throw _}}function jP(q){let _=q.trim();if(!_.startsWith(U8))return!1;let f=_.slice(U8.length);return/^[A-Za-z0-9_-]+$/.test(f)&&f.length>0}function vP(){return`${process.env.HOME||process.env.USERPROFILE||process.cwd()}/.stacksfinder-seeds.json`}async function Lq(){let q=await import("fs/promises"),_=vP();try{let f=await q.readFile(_,"utf-8");return JSON.parse(f).seeds||[]}catch{return[]}}async function wP(q,_,f){let $=await import("fs/promises"),P=vP(),j=await Lq(),K=j.findIndex((v)=>v.name===q);if(K>=0)j[K]={name:q,seed:_,createdAt:new Date().toISOString(),description:f};else j.push({name:q,seed:_,createdAt:new Date().toISOString(),description:f});await $.writeFile(P,JSON.stringify({seeds:j},null,2))}async function rP(q){return(await Lq()).find((f)=>f.name===q)||null}var mP="0.5.0";function Y8(q,_){let f=q.indexOf(_);return f!==-1&&q[f+1]&&!q[f+1].startsWith("-")?q[f+1]:void 0}var sq=["saas","web-app","marketplace","api","e-commerce","blog","portfolio"],Bq=["mvp","startup","growth","enterprise"],Uq=["speed","dx","perf","cost","scale","security"];async function G1(){console.clear(),Z6("box");let q=process.argv.slice(2),_=q.find((W)=>!W.startsWith("-")),f=q.includes("--recommend-only")||q.includes("-r"),$=q.includes("--json")||q.includes("-j"),P=q.includes("--expert")||q.includes("-e"),j=q.includes("--version")||q.includes("-v"),K=q.includes("--help")||q.includes("-h"),v=q.includes("--yes")||q.includes("-y"),r=q.includes("--verbose")||q.includes("-V"),w=q.includes("--no-install"),O=q.includes("--no-git"),m=Y8(q,"--preset"),T=q.includes("--quick")||q.includes("-q"),h=Y8(q,"--type"),z=Y8(q,"--scale"),H=Y8(q,"--priority"),o=Y8(q,"--from-blueprint"),X=Y8(q,"--api-key"),I=q.includes("--compare"),R=Y8(q,"--preset1")||"mvp",A=Y8(q,"--preset2")||"enterprise",b=Y8(q,"--seed"),j8=Y8(q,"--save-seed"),x=q.includes("--list-seeds");if(j){let W=v6();console.log(`create-stacksfinder v${mP}`),console.log(`Scoring data: v${W.scores}`),console.log(`Compatibility matrix: v${W.matrix}`),process.exit(0)}if(K)console.log(`
|
|
151
151
|
${u.default.bold("create-stacksfinder")} v${mP} - Scaffold optimized tech stacks
|
|
152
152
|
|
|
153
153
|
${u.default.bold("USAGE")}
|