[{"data":1,"prerenderedAt":18280},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"index-en":444,"mdc-49gura-key":704,"mdc-m8gt2x-key":728,"latest-blog-posts-en-3":760},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430,"page":-1},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"id":445,"title":446,"bento":447,"blogSection":515,"body":519,"cta":520,"description":531,"extension":532,"features":533,"hero":559,"meta":565,"navigation":201,"ogImage":519,"path":566,"schema":567,"sections":583,"seo":620,"servicesSection":623,"stem":627,"testimonials":628,"__hash__":703},"index/0.index.yml",":text-pixelated-morphing-text{:texts='[\"Modular\",\"Stunning\",\"Professional\",\"Beautiful\",\"World-class\"]'} landing pages assembled for :text-aurora-text{text=\"SaaS\" :colors='[\"#ffbd7a\", \"#fe8bbb\", \"#9e7aff\"]'}\n",{"headline":448,"title":449,"description":450,"animationDelay":451,"features":452},"READY-MADE FEATURES","Landing Pages & Modular Solutions","Every component battle-tested and production-ready. Choose what you need, skip what you don't.",200,[453,463,477,487,498,507],{"title":111,"description":454,"icon":455,"image":456,"size":457,"splitDirection":458,"ratio":459,"background":460,"border":460,"cta":461},"Collect feedback, manage roadmap, publish changelogs. Complete user feedback system with upvotes and status tracking.","i-lucide-message-circle","/images/solutions/feedback/feedback_module.webp","2x2","vertical","2/3","purple",{"text":462,"to":112},"View Feedback Docs",{"title":464,"description":465,"icon":466,"images":467,"imageAnimation":471,"size":472,"splitDirection":458,"ratio":459,"background":473,"border":473,"cta":474},"Landing Page Styles","Modern, conversion-focused landing pages in multiple styles. From minimalist to bold, pixel-perfect designs that work on every device.","i-lucide-layout-template",[468,469,470],"/images/placeholder/website01.webp","/images/placeholder/website02.webp","/images/placeholder/website03.webp","expand","1x2","candy",{"text":475,"formAction":476},"Get Your Landing Page","inquiry-form",{"title":478,"description":479,"icon":480,"image":481,"size":482,"splitDirection":458,"ratio":483,"background":484,"border":484,"cta":485},"Multi-Language (i18n)","Full internationalization for global markets. English, German, French, or any language you need. SEO-optimized routes included.","i-lucide-languages","/images/solutions/i18n/i18n.webp","1x1","1/3","blue",{"text":486,"to":43},"View i18n Documentation",{"title":488,"description":489,"icon":490,"image":491,"size":492,"splitDirection":493,"ratio":494,"background":495,"border":495,"cta":496},"Blog System","File-based blog with author profiles, categories, RSS feeds, and reading time. SEO-optimized and multi-language ready.","i-lucide-newspaper","/images/solutions/blog/blog.webp","2x1","horizontal","1/2","ocean",{"text":497,"to":53},"View Blog Documentation",{"title":499,"description":500,"icon":501,"image":502,"size":472,"splitDirection":458,"ratio":459,"background":503,"border":504,"cta":505},"Advanced Forms","15+ field types with admin dashboard. Spam protection, analytics, session tracking. Everything you need for lead generation.","i-lucide-file-input","/images/solutions/forms/forms_editor.webp","sunset","fire",{"text":506,"to":79},"View Forms Documentation",{"title":508,"description":509,"icon":510,"image":511,"size":457,"splitDirection":458,"ratio":459,"background":512,"border":512,"cta":513},"Newsletter System","Email subscription and newsletter management. GDPR compliant, double opt-in, location tracking, and admin dashboard.","i-lucide-mail","/images/solutions/newsletter/newsletter_dashboard.webp","pink",{"text":514,"to":174},"View Newsletter Docs",{"headline":516,"title":517,"description":518},"From The Blog","From Our Blog","Latest articles on SaaS development, landing page design, and growth strategies.",null,{"title":521,"description":522,"links":523},"Ready to Ship Faster?","We handle the landing page, blog, docs, and forms — so your team can stay focused on the product. Let's talk about what you're building.",[524,527],{"label":525,"icon":179,"trailing":526,"formAction":476},"Get in Touch",true,{"label":528,"to":529,"variant":530,"icon":466},"View All Services","/services","subtle","You focus on your :text-highlighter{text=\"product\" action=\"box\" color=\"#fe8bbb\" :iterations=3 :animationDuration=1000 :delay=600}. We handle the landing page, blog, docs, forms — every component in its right place. Built fast, shipped :text-highlighter{text=\"faster\" action=\"highlight\" color=\"#ffbd7a\" :iterations=2 :animationDuration=600 :delay=1600 :opacity=0.25}.","yml",{"headline":534,"title":535,"description":536,"items":537},"What's Included","Built for Production","Every feature battle-tested across dozens of projects. Privacy-first, performance-focused, and ready to scale.",[538,542,544,548,551,555],{"title":539,"description":540,"icon":541},"Privacy-First Analytics","Umami analytics integration. Self-hosted or cloud. No cookies, GDPR compliant by default. We can help you host it yourself.","i-lucide-shield-check",{"title":478,"description":543,"icon":480},"Full internationalization with automatic locale detection, translation fallbacks, and SEO-optimized routes. English, German, French, or any language.",{"title":545,"description":546,"icon":547},"Authentication Flows","Email/password, social OAuth (Google, GitHub), magic links. Session management, role-based access, email verification — production-ready auth.","i-lucide-lock",{"title":549,"description":550,"icon":399},"Modern Tech Stack","Nuxt 4, TypeScript, Tailwind CSS, Zod validation. Type-safe, fast, maintainable. Server-side rendering with edge optimization.",{"title":552,"description":553,"icon":554},"Edge-Optimized Performance","Cloudflare Workers for global edge deployment. Fast everywhere, for everyone. Core Web Vitals perfect scores out of the box.","i-lucide-zap",{"title":556,"description":557,"icon":558},"Developer Experience","Hot reload, type safety, auto-imports, ESLint config. Git-based workflows, CI/CD ready, fully documented.","i-lucide-code",{"links":560},[561,562],{"label":525,"icon":179,"trailing":526,"formAction":476},{"label":563,"icon":466,"color":564,"variant":530,"to":529,"trailing":526},"View Services","primary",{},"/",{"services":568},{"name":569,"type":570,"description":571,"areaServed":572,"offers":573},"SaaS Development Services","Software Development","Full-stack SaaS development, MVP architecture, and landing page development","Worldwide",[574,577,580],{"name":575,"description":576},"Landing Page Development","Professional landing pages with modern tech stack",{"name":578,"description":579},"MVP Development","Full-stack SaaS MVP development",{"name":581,"description":582},"Infrastructure & Deployment","Cloudflare and Hetzner deployment services",[584,602],{"headline":585,"title":586,"description":587,"id":588,"orientation":493,"media":589,"features":590},"Development Services","MVP & SaaS Development","Expert in database design, multi-tenancy, and scalable architecture. We build SaaS applications that handle growth from day one.","mvp-development","/images/services/mvp_landing.webp",[591,594,598],{"name":592,"description":593,"icon":354},"Full-Stack MVP Development","From database schema to deployment. Modern stack (Nuxt, Django, TypeScript), clean architecture, scalable patterns. Built for growth, not rewrites.",{"name":595,"description":596,"icon":597},"Database Design & Multi-Tenancy","Expert in SaaS database architecture. Row-level security, tenant isolation, efficient queries. We've designed schemas for dozens of SaaS products.","i-lucide-database",{"name":599,"description":600,"icon":601},"Architecture Planning","Make the right technical decisions before writing code. We help you choose the stack, plan the structure, and avoid costly mistakes.","i-lucide-layout-grid",{"headline":603,"title":581,"description":604,"id":605,"orientation":493,"reverse":526,"media":606,"features":607},"Infrastructure","Early-stage deployment help. We dockerize your backend, set up CI/CD pipelines, and deploy to Cloudflare or Hetzner.","infrastructure","/images/services/hosting.webp",[608,612,616],{"name":609,"description":610,"icon":611},"Docker & CI/CD Setup","Dockerize your application, set up GitHub Actions workflows, automate testing and deployment. Clean pipelines that just work.","i-lucide-git-branch",{"name":613,"description":614,"icon":615},"Cloudflare & Hetzner Deployment","Deploy to Cloudflare Workers for edge functions or Hetzner VPS for cost-effective hosting. We handle the DevOps complexity.","i-lucide-cloud",{"name":617,"description":618,"icon":619},"Early-Stage Support","Get your infrastructure right from the start. We help you set up monitoring, logging, backups, and scaling strategies.","i-lucide-activity",{"title":621,"description":622},"Professional Landing Pages & SaaS Development | websideproject","Landing pages, blogs, and full-stack MVPs for SaaS founders and solo startups. Ship faster — we handle the website so your team can focus on the product.",{"headline":624,"title":625,"description":626},"NEED MORE THAN A LANDING PAGE?","Full-Stack Development Services","We don't just build landing pages. From MVP development to infrastructure setup, we help SaaS founders ship products — not just websites.","0.index",{"headline":629,"title":630,"description":631,"items":632},"CLIENT SUCCESS STORIES","Trusted by SaaS Founders","From MVP development to infrastructure deployment — see what our clients say about working with us.",[633,640,647,654,661,668,675,682,689,696],{"quote":634,"user":635},"They built our MVP in 3 weeks. Clean code, modern stack, and it scaled to 10k users without breaking a sweat.",{"name":636,"description":637,"avatar":638},"Sarah Chen","Founder at DataFlow",{"src":639},"https://i.pravatar.cc/120?img=1",{"quote":641,"user":642},"The architecture review saved us months of technical debt. They spotted issues we didn't even know existed.",{"name":643,"description":644,"avatar":645},"Marcus Rodriguez","CTO at ScaleAI",{"src":646},"https://i.pravatar.cc/120?img=7",{"quote":648,"user":649},"Our browser extension works perfectly across Chrome, Firefox, and Edge. Cross-browser compatibility done right.",{"name":650,"description":651,"avatar":652},"David Kumar","Product Lead at ExtensionHub",{"src":653},"https://i.pravatar.cc/120?img=3",{"quote":655,"user":656},"The landing page converted 40% better than our old one. Multi-language support opened up European markets instantly.",{"name":657,"description":658,"avatar":659},"Emily Zhang","Growth Lead at CloudKit",{"src":660},"https://i.pravatar.cc/120?img=5",{"quote":662,"user":663},"Deployment pipeline is bulletproof. Push to GitHub, automatic tests, zero-downtime deploys. Perfect.",{"name":664,"description":665,"avatar":666},"James Wilson","DevOps at APIFlow",{"src":667},"https://i.pravatar.cc/120?img=8",{"quote":669,"user":670},"They didn't just build what we asked for — they asked the right questions and built what we actually needed.",{"name":671,"description":672,"avatar":673},"Lisa Patel","CEO at AutoScale",{"src":674},"https://i.pravatar.cc/120?img=9",{"quote":676,"user":677},"The documentation system alone saved us weeks of work. Search, navigation, translations — all built in.",{"name":678,"description":679,"avatar":680},"Michael Torres","Tech Lead at DocuHub",{"src":681},"https://i.pravatar.cc/120?img=11",{"quote":683,"user":684},"Fast, pragmatic, no over-engineering. They understood the balance between perfect and done.",{"name":685,"description":686,"avatar":687},"Rachel Kim","VP Engineering at ShipFast",{"src":688},"https://i.pravatar.cc/120?img=10",{"quote":690,"user":691},"From Docker containers to Cloudflare Workers — they know their deployment options and pick the right one.",{"name":692,"description":693,"avatar":694},"Thomas Weber","Infrastructure Lead at EdgeScale",{"src":695},"https://i.pravatar.cc/120?img=12",{"quote":697,"user":698},"This landing page you're looking at? That's our site. They ate their own dog food and it shows.",{"name":699,"description":700,"avatar":701},"Sophia Martinez","Marketing Lead at ConvertKit",{"src":702},"https://i.pravatar.cc/120?img=14","ZW9EiZ1zWboEq2Ik_80grWpfMTwASi4_PIdtvDdHUaQ",{"data":705,"body":706},{},{"type":707,"children":708},"root",[709],{"type":710,"tag":711,"props":712,"children":713},"element","p",{},[714,719,722],{"type":710,"tag":715,"props":716,"children":718},"text-pixelated-morphing-text",{":texts":717},"[\"Modular\",\"Stunning\",\"Professional\",\"Beautiful\",\"World-class\"]",[],{"type":720,"value":721},"text"," landing pages assembled for ",{"type":710,"tag":723,"props":724,"children":727},"text-aurora-text",{":colors":725,"text":726},"[\"#ffbd7a\", \"#fe8bbb\", \"#9e7aff\"]","SaaS",[],{"data":729,"body":730},{},{"type":707,"children":731},[732],{"type":710,"tag":711,"props":733,"children":734},{},[735,737,747,749,758],{"type":720,"value":736},"You focus on your ",{"type":710,"tag":738,"props":739,"children":746},"text-highlighter",{":animation-duration":740,":delay":741,":iterations":742,"action":743,"color":744,"text":745},"1000","600","3","box","#fe8bbb","product",[],{"type":720,"value":748},". We handle the landing page, blog, docs, forms — every component in its right place. Built fast, shipped ",{"type":710,"tag":738,"props":750,"children":757},{":animation-duration":741,":delay":751,":iterations":752,"action":753,"color":754,"text":755,":opacity":756},"1600","2","highlight","#ffbd7a","faster","0.25",[],{"type":720,"value":759},".",[761,2483,18017],{"id":762,"title":763,"authors":764,"badge":769,"body":771,"date":2468,"description":2469,"extension":2470,"image":2471,"meta":2473,"navigation":526,"ogImage":519,"path":2474,"published":526,"seo":2475,"stem":2476,"tags":2477,"__hash__":2482},"posts/3.blog/2.fix-nuxt-content-404.md","Nuxt Content 404 issues? One config can fix it",[765],{"name":766,"avatar":767},"Benjamin",{"src":768},"profile/benjamin.webp",{"label":770},"Guide",{"type":772,"value":773,"toc":2455},"minimark",[774,785,790,793,796,799,802,806,809,812,819,829,832,836,843,850,906,912,915,919,925,1015,1026,1029,1033,1036,1098,1105,1108,1122,1125,1128,1131,1134,1138,1141,1475,1478,1483,1486,1599,1602,1604,1608,1611,2391,2395,2402,2405,2412,2415,2418,2424,2427,2431,2434,2437,2440,2442,2451],[775,776,779,782],"callout",{"color":777,"icon":778},"neutral","i-lucide-info",[711,780,781],{},"This post is about prodction issue cause by prerendering.",[711,783,784],{},"If you are here because you get many 404 with the development server, then that can be fixed by building after adding new content files.",[786,787,789],"h2",{"id":788},"intro","Intro",[711,791,792],{},"Enabled prerendering today. I wanted to optimize the performance and the D1 db reads a bit.",[711,794,795],{},"Pushed to production and I was really lucky that someone reported a 404 error on my shared blog post on discord.",[711,797,798],{},"A quick review revealed the issue exist, so looking back my recent changes, the prerendering was a possible issue, so I wuickly reverted that change to fix the issue on prod.",[711,800,801],{},"But I was curious. Went to the blog index - worked fine. Clicked through to a post - worked fine. Everything seemed ok.\nSo what broke for that direct link?",[786,803,805],{"id":804},"the-problem","The Problem",[711,807,808],{},"After poking around, I found it. The file exists. The route is there. But direct URLs 404.",[711,810,811],{},"Blog index to post? Works.\nDirect link or refresh? 404.",[711,813,814,815,818],{},"Took way too long to spot it. That extra ",[816,817,566],"code",{}," at the end, just like an annoying comma in large codebase:",[711,820,821,822,825,826],{},"Navigate from index: ",[816,823,824],{},"/blog/my-post","\nHit the URL directly: ",[816,827,828],{},"/blog/my-post/",[711,830,831],{},"One character.",[786,833,835],{"id":834},"why-this-breaks","Why This Breaks",[711,837,838,839,842],{},"Prerendering creates ",[816,840,841],{},"/blog/my-post/index.html"," by default (subfolder with index file). When you hit that URL directly, browsers add a trailing slash. Standard browser behavior.",[711,844,845,846,849],{},"Your Nuxt Content query uses ",[816,847,848],{},"route.path",":",[851,852,857],"pre",{"className":853,"code":854,"language":855,"meta":856,"style":856},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","queryCollection('posts').path(route.path).first()\n","typescript","",[816,858,859],{"__ignoreMap":856},[860,861,864,868,872,876,880,882,885,887,890,893,895,898,900,903],"span",{"class":862,"line":863},"line",1,[860,865,867],{"class":866},"s2Zo4","queryCollection",[860,869,871],{"class":870},"sTEyZ","(",[860,873,875],{"class":874},"sMK4o","'",[860,877,879],{"class":878},"sfazB","posts",[860,881,875],{"class":874},[860,883,884],{"class":870},")",[860,886,759],{"class":874},[860,888,889],{"class":866},"path",[860,891,892],{"class":870},"(route",[860,894,759],{"class":874},[860,896,897],{"class":870},"path)",[860,899,759],{"class":874},[860,901,902],{"class":866},"first",[860,904,905],{"class":870},"()\n",[711,907,908,909,911],{},"Route path is now ",[816,910,828],{}," (with slash). Content query looks for exact match. Finds nothing. Returns null. You get 404.",[711,913,914],{},"The dev experience fools you - clicking links works because client-side routing doesn't add the slash. Everything seems fine until someone refreshes or shares a direct link.",[786,916,918],{"id":917},"the-fix","The Fix",[711,920,921,922,849],{},"One line in ",[816,923,924],{},"nuxt.config.ts",[851,926,930],{"className":853,"code":927,"highlights":928,"language":855,"meta":856,"style":856},"nitro: {\n  prerender: {\n    autoSubfolderIndex: false,\n    routes: ['/blog'],\n    crawlLinks: true\n  }\n}\n",[929],3,[816,931,932,943,953,968,992,1003,1009],{"__ignoreMap":856},[860,933,934,938,940],{"class":862,"line":863},[860,935,937],{"class":936},"sBMFI","nitro",[860,939,849],{"class":874},[860,941,942],{"class":874}," {\n",[860,944,946,949,951],{"class":862,"line":945},2,[860,947,948],{"class":936},"  prerender",[860,950,849],{"class":874},[860,952,942],{"class":874},[860,954,956,959,961,965],{"class":955,"line":929},[862,753],[860,957,958],{"class":936},"    autoSubfolderIndex",[860,960,849],{"class":874},[860,962,964],{"class":963},"sfNiH"," false",[860,966,967],{"class":874},",\n",[860,969,971,974,976,980,982,985,987,990],{"class":862,"line":970},4,[860,972,973],{"class":936},"    routes",[860,975,849],{"class":874},[860,977,979],{"class":978},"swJcz"," [",[860,981,875],{"class":874},[860,983,984],{"class":878},"/blog",[860,986,875],{"class":874},[860,988,989],{"class":978},"]",[860,991,967],{"class":874},[860,993,995,998,1000],{"class":862,"line":994},5,[860,996,997],{"class":936},"    crawlLinks",[860,999,849],{"class":874},[860,1001,1002],{"class":963}," true\n",[860,1004,1006],{"class":862,"line":1005},6,[860,1007,1008],{"class":874},"  }\n",[860,1010,1012],{"class":862,"line":1011},7,[860,1013,1014],{"class":874},"}\n",[711,1016,1017,1018,1021,1022,1025],{},"That's it. This tells Nuxt to create ",[816,1019,1020],{},"/blog/post.html"," instead of ",[816,1023,1024],{},"/blog/post/index.html",". No subfolder, no index file, no trailing slash.",[711,1027,1028],{},"Refresh now? Works.",[786,1030,1032],{"id":1031},"why-not-just-handle-it-in-code","Why Not Just Handle It in Code?",[711,1034,1035],{},"You could normalize the path in your component:",[851,1037,1039],{"className":853,"code":1038,"language":855,"meta":856,"style":856},"const normalizedPath = computed(() => route.path.replace(/\\/$/, ''))\n",[816,1040,1041],{"__ignoreMap":856},[860,1042,1043,1047,1050,1053,1056,1058,1061,1064,1067,1069,1071,1073,1076,1078,1080,1083,1087,1089,1092,1095],{"class":862,"line":863},[860,1044,1046],{"class":1045},"spNyl","const",[860,1048,1049],{"class":870}," normalizedPath ",[860,1051,1052],{"class":874},"=",[860,1054,1055],{"class":866}," computed",[860,1057,871],{"class":870},[860,1059,1060],{"class":874},"()",[860,1062,1063],{"class":1045}," =>",[860,1065,1066],{"class":870}," route",[860,1068,759],{"class":874},[860,1070,889],{"class":870},[860,1072,759],{"class":874},[860,1074,1075],{"class":866},"replace",[860,1077,871],{"class":870},[860,1079,566],{"class":874},[860,1081,1082],{"class":870},"\\/",[860,1084,1086],{"class":1085},"s7zQu","$",[860,1088,566],{"class":874},[860,1090,1091],{"class":874},",",[860,1093,1094],{"class":874}," ''",[860,1096,1097],{"class":870},"))\n",[711,1099,1100,1101,759],{},"This makes both URLs work. But now you have a worse problem: ",[1102,1103,1104],"strong",{},"split analytics",[711,1106,1107],{},"Umami (or GA, whatever you use) sees these as different pages:",[1109,1110,1111,1117],"ul",{},[1112,1113,1114,1116],"li",{},[816,1115,824],{}," - 45 views",[1112,1118,1119,1121],{},[816,1120,828],{}," - 23 views",[711,1123,1124],{},"Which one is the \"real\" number? Neither. You're splitting your traffic data for no reason.",[711,1126,1127],{},"Same with SEO. Google sees two URLs for the same content. Not ideal.",[711,1129,1130],{},"The config fix gives you one canonical URL. All traffic counts correctly. SEO stays clean. That's what you want.",[1132,1133],"hr",{},[786,1135,1137],{"id":1136},"the-workaround-if-you-must","The Workaround (If You Must)",[711,1139,1140],{},"Actually I fixed like this first, but I was not satisfied with this approach. Here's how to handle it in code:",[851,1142,1150],{"className":1143,"code":1144,"highlights":1145,"language":1149,"meta":856,"style":856},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\nconst appConfig = useAppConfig()\nconst { locale } = useI18n()\n\n// Normalize path by removing trailing slash\nconst normalizedPath = computed(() => route.path.replace(/\\/$/, ''))\n\nconst { data: post } = await useAsyncData(\n  `blog-post-${normalizedPath.value}-${locale.value}`,\n  async () => {\n    // Use normalized path for querying\n    const path = normalizedPath.value\n    const result = await queryCollection('posts')\n      .path(path)\n      .first()\n\n    return result\n  }\n)\n\u003C/script>\n",[1011,1146,1147,1148],13,14,15,"vue",[816,1151,1152,1179,1193,1207,1228,1233,1239,1282,1287,1315,1354,1367,1373,1392,1418,1432,1441,1446,1455,1460,1465],{"__ignoreMap":856},[860,1153,1154,1157,1160,1163,1166,1168,1171,1174,1176],{"class":862,"line":863},[860,1155,1156],{"class":874},"\u003C",[860,1158,1159],{"class":978},"script",[860,1161,1162],{"class":1045}," setup",[860,1164,1165],{"class":1045}," lang",[860,1167,1052],{"class":874},[860,1169,1170],{"class":874},"\"",[860,1172,1173],{"class":878},"ts",[860,1175,1170],{"class":874},[860,1177,1178],{"class":874},">\n",[860,1180,1181,1183,1186,1188,1191],{"class":862,"line":945},[860,1182,1046],{"class":1045},[860,1184,1185],{"class":870}," route ",[860,1187,1052],{"class":874},[860,1189,1190],{"class":866}," useRoute",[860,1192,905],{"class":870},[860,1194,1195,1197,1200,1202,1205],{"class":862,"line":929},[860,1196,1046],{"class":1045},[860,1198,1199],{"class":870}," appConfig ",[860,1201,1052],{"class":874},[860,1203,1204],{"class":866}," useAppConfig",[860,1206,905],{"class":870},[860,1208,1209,1211,1214,1217,1220,1223,1226],{"class":862,"line":970},[860,1210,1046],{"class":1045},[860,1212,1213],{"class":874}," {",[860,1215,1216],{"class":870}," locale ",[860,1218,1219],{"class":874},"}",[860,1221,1222],{"class":874}," =",[860,1224,1225],{"class":866}," useI18n",[860,1227,905],{"class":870},[860,1229,1230],{"class":862,"line":994},[860,1231,1232],{"emptyLinePlaceholder":526},"\n",[860,1234,1235],{"class":862,"line":1005},[860,1236,1238],{"class":1237},"sHwdD","// Normalize path by removing trailing slash\n",[860,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280],{"class":1241,"line":1011},[862,753],[860,1243,1046],{"class":1045},[860,1245,1049],{"class":870},[860,1247,1052],{"class":874},[860,1249,1055],{"class":866},[860,1251,871],{"class":870},[860,1253,1060],{"class":874},[860,1255,1063],{"class":1045},[860,1257,1066],{"class":870},[860,1259,759],{"class":874},[860,1261,889],{"class":870},[860,1263,759],{"class":874},[860,1265,1075],{"class":866},[860,1267,871],{"class":870},[860,1269,566],{"class":874},[860,1271,1082],{"class":870},[860,1273,1086],{"class":1085},[860,1275,566],{"class":874},[860,1277,1091],{"class":874},[860,1279,1094],{"class":874},[860,1281,1097],{"class":870},[860,1283,1285],{"class":862,"line":1284},8,[860,1286,1232],{"emptyLinePlaceholder":526},[860,1288,1290,1292,1294,1297,1299,1302,1304,1306,1309,1312],{"class":862,"line":1289},9,[860,1291,1046],{"class":1045},[860,1293,1213],{"class":874},[860,1295,1296],{"class":978}," data",[860,1298,849],{"class":874},[860,1300,1301],{"class":870}," post ",[860,1303,1219],{"class":874},[860,1305,1222],{"class":874},[860,1307,1308],{"class":1085}," await",[860,1310,1311],{"class":866}," useAsyncData",[860,1313,1314],{"class":870},"(\n",[860,1316,1318,1321,1324,1327,1330,1332,1335,1337,1340,1342,1345,1347,1349,1352],{"class":862,"line":1317},10,[860,1319,1320],{"class":874},"  `",[860,1322,1323],{"class":878},"blog-post-",[860,1325,1326],{"class":874},"${",[860,1328,1329],{"class":870},"normalizedPath",[860,1331,759],{"class":874},[860,1333,1334],{"class":870},"value",[860,1336,1219],{"class":874},[860,1338,1339],{"class":878},"-",[860,1341,1326],{"class":874},[860,1343,1344],{"class":870},"locale",[860,1346,759],{"class":874},[860,1348,1334],{"class":870},[860,1350,1351],{"class":874},"}`",[860,1353,967],{"class":874},[860,1355,1357,1360,1363,1365],{"class":862,"line":1356},11,[860,1358,1359],{"class":1045},"  async",[860,1361,1362],{"class":874}," ()",[860,1364,1063],{"class":1045},[860,1366,942],{"class":874},[860,1368,1370],{"class":862,"line":1369},12,[860,1371,1372],{"class":1237},"    // Use normalized path for querying\n",[860,1374,1376,1379,1382,1384,1387,1389],{"class":1375,"line":1146},[862,753],[860,1377,1378],{"class":1045},"    const",[860,1380,1381],{"class":870}," path",[860,1383,1222],{"class":874},[860,1385,1386],{"class":870}," normalizedPath",[860,1388,759],{"class":874},[860,1390,1391],{"class":870},"value\n",[860,1393,1395,1397,1400,1402,1404,1407,1409,1411,1413,1415],{"class":1394,"line":1147},[862,753],[860,1396,1378],{"class":1045},[860,1398,1399],{"class":870}," result",[860,1401,1222],{"class":874},[860,1403,1308],{"class":1085},[860,1405,1406],{"class":866}," queryCollection",[860,1408,871],{"class":978},[860,1410,875],{"class":874},[860,1412,879],{"class":878},[860,1414,875],{"class":874},[860,1416,1417],{"class":978},")\n",[860,1419,1421,1424,1426,1428,1430],{"class":1420,"line":1148},[862,753],[860,1422,1423],{"class":874},"      .",[860,1425,889],{"class":866},[860,1427,871],{"class":978},[860,1429,889],{"class":870},[860,1431,1417],{"class":978},[860,1433,1435,1437,1439],{"class":862,"line":1434},16,[860,1436,1423],{"class":874},[860,1438,902],{"class":866},[860,1440,905],{"class":978},[860,1442,1444],{"class":862,"line":1443},17,[860,1445,1232],{"emptyLinePlaceholder":526},[860,1447,1449,1452],{"class":862,"line":1448},18,[860,1450,1451],{"class":1085},"    return",[860,1453,1454],{"class":870}," result\n",[860,1456,1458],{"class":862,"line":1457},19,[860,1459,1008],{"class":874},[860,1461,1463],{"class":862,"line":1462},20,[860,1464,1417],{"class":870},[860,1466,1468,1471,1473],{"class":862,"line":1467},21,[860,1469,1470],{"class":874},"\u003C/",[860,1472,1159],{"class":978},[860,1474,1178],{"class":874},[711,1476,1477],{},"Both URLs work now. But analytics are still split. Not the solution I'd recommend.",[1479,1480,1482],"h3",{"id":1481},"performance-tip","Performance Tip",[711,1484,1485],{},"While you're here, add this to prevent client-side re-queries:",[851,1487,1490],{"className":853,"code":1488,"highlights":1489,"language":855,"meta":856,"style":856},"const { data: post } = await useAsyncData(\n  `blog-post-${normalizedPath.value}`,\n  async () => {\n    // query logic\n  },\n  {\n    getCachedData: (key) => useNuxtApp().payload.data[key]\n  }\n)\n",[1011],[816,1491,1492,1514,1532,1542,1547,1552,1557,1591,1595],{"__ignoreMap":856},[860,1493,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512],{"class":862,"line":863},[860,1495,1046],{"class":1045},[860,1497,1213],{"class":874},[860,1499,1296],{"class":978},[860,1501,849],{"class":874},[860,1503,1301],{"class":870},[860,1505,1219],{"class":874},[860,1507,1222],{"class":874},[860,1509,1308],{"class":1085},[860,1511,1311],{"class":866},[860,1513,1314],{"class":870},[860,1515,1516,1518,1520,1522,1524,1526,1528,1530],{"class":862,"line":945},[860,1517,1320],{"class":874},[860,1519,1323],{"class":878},[860,1521,1326],{"class":874},[860,1523,1329],{"class":870},[860,1525,759],{"class":874},[860,1527,1334],{"class":870},[860,1529,1351],{"class":874},[860,1531,967],{"class":874},[860,1533,1534,1536,1538,1540],{"class":862,"line":929},[860,1535,1359],{"class":1045},[860,1537,1362],{"class":874},[860,1539,1063],{"class":1045},[860,1541,942],{"class":874},[860,1543,1544],{"class":862,"line":970},[860,1545,1546],{"class":1237},"    // query logic\n",[860,1548,1549],{"class":862,"line":994},[860,1550,1551],{"class":874},"  },\n",[860,1553,1554],{"class":862,"line":1005},[860,1555,1556],{"class":874},"  {\n",[860,1558,1560,1563,1565,1568,1572,1574,1576,1579,1581,1583,1586,1588],{"class":1559,"line":1011},[862,753],[860,1561,1562],{"class":866},"    getCachedData",[860,1564,849],{"class":874},[860,1566,1567],{"class":874}," (",[860,1569,1571],{"class":1570},"sHdIc","key",[860,1573,884],{"class":874},[860,1575,1063],{"class":1045},[860,1577,1578],{"class":866}," useNuxtApp",[860,1580,1060],{"class":870},[860,1582,759],{"class":874},[860,1584,1585],{"class":870},"payload",[860,1587,759],{"class":874},[860,1589,1590],{"class":870},"data[key]\n",[860,1592,1593],{"class":862,"line":1284},[860,1594,1008],{"class":874},[860,1596,1597],{"class":862,"line":1289},[860,1598,1417],{"class":870},[711,1600,1601],{},"This tells Nuxt to use the prerendered data instead of querying again on the client. Small optimization, but it adds up.",[1132,1603],{},[786,1605,1607],{"id":1606},"complete-example","Complete Example",[711,1609,1610],{},"Here's a working blog setup with the config fix:",[1612,1613,1615,1956,2259],"code-tree",{"default-value":1614},"pages/blog/[slug].vue",[851,1616,1618],{"className":1143,"code":1617,"filename":1614,"language":1149,"meta":856,"style":856},"\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\n\nconst { data: post } = await useAsyncData(\n  `blog-post-${route.path}`,\n  async () => {\n    return await queryCollection('posts')\n      .path(route.path)\n      .first()\n  },\n  {\n    getCachedData: (key) => useNuxtApp().payload.data[key]\n  }\n)\n\nif (!post.value) {\n  throw createError({ statusCode: 404, statusMessage: 'Post not found' })\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>{{ post.title }}\u003C/h1>\n    \u003CContentRenderer :value=\"post\" />\n  \u003C/div>\n\u003C/template>\n",[816,1619,1620,1640,1652,1656,1678,1697,1707,1725,1741,1749,1753,1757,1783,1787,1791,1795,1816,1858,1862,1870,1874,1883,1894,1915,1937,1947],{"__ignoreMap":856},[860,1621,1622,1624,1626,1628,1630,1632,1634,1636,1638],{"class":862,"line":863},[860,1623,1156],{"class":874},[860,1625,1159],{"class":978},[860,1627,1162],{"class":1045},[860,1629,1165],{"class":1045},[860,1631,1052],{"class":874},[860,1633,1170],{"class":874},[860,1635,1173],{"class":878},[860,1637,1170],{"class":874},[860,1639,1178],{"class":874},[860,1641,1642,1644,1646,1648,1650],{"class":862,"line":945},[860,1643,1046],{"class":1045},[860,1645,1185],{"class":870},[860,1647,1052],{"class":874},[860,1649,1190],{"class":866},[860,1651,905],{"class":870},[860,1653,1654],{"class":862,"line":929},[860,1655,1232],{"emptyLinePlaceholder":526},[860,1657,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676],{"class":862,"line":970},[860,1659,1046],{"class":1045},[860,1661,1213],{"class":874},[860,1663,1296],{"class":978},[860,1665,849],{"class":874},[860,1667,1301],{"class":870},[860,1669,1219],{"class":874},[860,1671,1222],{"class":874},[860,1673,1308],{"class":1085},[860,1675,1311],{"class":866},[860,1677,1314],{"class":870},[860,1679,1680,1682,1684,1686,1689,1691,1693,1695],{"class":862,"line":994},[860,1681,1320],{"class":874},[860,1683,1323],{"class":878},[860,1685,1326],{"class":874},[860,1687,1688],{"class":870},"route",[860,1690,759],{"class":874},[860,1692,889],{"class":870},[860,1694,1351],{"class":874},[860,1696,967],{"class":874},[860,1698,1699,1701,1703,1705],{"class":862,"line":1005},[860,1700,1359],{"class":1045},[860,1702,1362],{"class":874},[860,1704,1063],{"class":1045},[860,1706,942],{"class":874},[860,1708,1709,1711,1713,1715,1717,1719,1721,1723],{"class":862,"line":1011},[860,1710,1451],{"class":1085},[860,1712,1308],{"class":1085},[860,1714,1406],{"class":866},[860,1716,871],{"class":978},[860,1718,875],{"class":874},[860,1720,879],{"class":878},[860,1722,875],{"class":874},[860,1724,1417],{"class":978},[860,1726,1727,1729,1731,1733,1735,1737,1739],{"class":862,"line":1284},[860,1728,1423],{"class":874},[860,1730,889],{"class":866},[860,1732,871],{"class":978},[860,1734,1688],{"class":870},[860,1736,759],{"class":874},[860,1738,889],{"class":870},[860,1740,1417],{"class":978},[860,1742,1743,1745,1747],{"class":862,"line":1289},[860,1744,1423],{"class":874},[860,1746,902],{"class":866},[860,1748,905],{"class":978},[860,1750,1751],{"class":862,"line":1317},[860,1752,1551],{"class":874},[860,1754,1755],{"class":862,"line":1356},[860,1756,1556],{"class":874},[860,1758,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781],{"class":862,"line":1369},[860,1760,1562],{"class":866},[860,1762,849],{"class":874},[860,1764,1567],{"class":874},[860,1766,1571],{"class":1570},[860,1768,884],{"class":874},[860,1770,1063],{"class":1045},[860,1772,1578],{"class":866},[860,1774,1060],{"class":870},[860,1776,759],{"class":874},[860,1778,1585],{"class":870},[860,1780,759],{"class":874},[860,1782,1590],{"class":870},[860,1784,1785],{"class":862,"line":1146},[860,1786,1008],{"class":874},[860,1788,1789],{"class":862,"line":1147},[860,1790,1417],{"class":870},[860,1792,1793],{"class":862,"line":1148},[860,1794,1232],{"emptyLinePlaceholder":526},[860,1796,1797,1800,1802,1805,1808,1810,1813],{"class":862,"line":1434},[860,1798,1799],{"class":1085},"if",[860,1801,1567],{"class":870},[860,1803,1804],{"class":874},"!",[860,1806,1807],{"class":870},"post",[860,1809,759],{"class":874},[860,1811,1812],{"class":870},"value) ",[860,1814,1815],{"class":874},"{\n",[860,1817,1818,1821,1824,1826,1829,1832,1834,1838,1840,1843,1845,1848,1851,1853,1856],{"class":862,"line":1443},[860,1819,1820],{"class":1085},"  throw",[860,1822,1823],{"class":866}," createError",[860,1825,871],{"class":978},[860,1827,1828],{"class":874},"{",[860,1830,1831],{"class":978}," statusCode",[860,1833,849],{"class":874},[860,1835,1837],{"class":1836},"sbssI"," 404",[860,1839,1091],{"class":874},[860,1841,1842],{"class":978}," statusMessage",[860,1844,849],{"class":874},[860,1846,1847],{"class":874}," '",[860,1849,1850],{"class":878},"Post not found",[860,1852,875],{"class":874},[860,1854,1855],{"class":874}," }",[860,1857,1417],{"class":978},[860,1859,1860],{"class":862,"line":1448},[860,1861,1014],{"class":874},[860,1863,1864,1866,1868],{"class":862,"line":1457},[860,1865,1470],{"class":874},[860,1867,1159],{"class":978},[860,1869,1178],{"class":874},[860,1871,1872],{"class":862,"line":1462},[860,1873,1232],{"emptyLinePlaceholder":526},[860,1875,1876,1878,1881],{"class":862,"line":1467},[860,1877,1156],{"class":874},[860,1879,1880],{"class":978},"template",[860,1882,1178],{"class":874},[860,1884,1886,1889,1892],{"class":862,"line":1885},22,[860,1887,1888],{"class":874},"  \u003C",[860,1890,1891],{"class":978},"div",[860,1893,1178],{"class":874},[860,1895,1897,1900,1903,1906,1909,1911,1913],{"class":862,"line":1896},23,[860,1898,1899],{"class":874},"    \u003C",[860,1901,1902],{"class":978},"h1",[860,1904,1905],{"class":874},">",[860,1907,1908],{"class":870},"{{ post.title }}",[860,1910,1470],{"class":874},[860,1912,1902],{"class":978},[860,1914,1178],{"class":874},[860,1916,1918,1920,1923,1926,1928,1930,1932,1934],{"class":862,"line":1917},24,[860,1919,1899],{"class":874},[860,1921,1922],{"class":978},"ContentRenderer",[860,1924,1925],{"class":1045}," :value",[860,1927,1052],{"class":874},[860,1929,1170],{"class":874},[860,1931,1807],{"class":878},[860,1933,1170],{"class":874},[860,1935,1936],{"class":874}," />\n",[860,1938,1940,1943,1945],{"class":862,"line":1939},25,[860,1941,1942],{"class":874},"  \u003C/",[860,1944,1891],{"class":978},[860,1946,1178],{"class":874},[860,1948,1950,1952,1954],{"class":862,"line":1949},26,[860,1951,1470],{"class":874},[860,1953,1880],{"class":978},[860,1955,1178],{"class":874},[851,1957,1960],{"className":853,"code":1958,"filename":1959,"language":855,"meta":856,"style":856},"import { defineContentConfig, defineCollection, z } from '@nuxt/content'\n\nconst postSchema = z.object({\n  title: z.string(),\n  description: z.string(),\n  date: z.date(),\n  image: z.object({\n    src: z.string()\n  }),\n  published: z.boolean().default(true)\n})\n\nexport const collections = {\n  // English posts (default locale)\n  posts: defineCollection({\n    type: 'page',\n    source: 'blog/**/*.md',\n    schema: postSchema\n  })\n}\n\nexport default defineContentConfig({ collections })\n","content.config.ts",[816,1961,1962,1995,1999,2019,2037,2054,2072,2089,2104,2113,2141,2147,2151,2166,2171,2184,2200,2216,2226,2232,2236,2240],{"__ignoreMap":856},[860,1963,1964,1967,1969,1972,1974,1977,1979,1982,1984,1987,1989,1992],{"class":862,"line":863},[860,1965,1966],{"class":1085},"import",[860,1968,1213],{"class":874},[860,1970,1971],{"class":870}," defineContentConfig",[860,1973,1091],{"class":874},[860,1975,1976],{"class":870}," defineCollection",[860,1978,1091],{"class":874},[860,1980,1981],{"class":870}," z",[860,1983,1855],{"class":874},[860,1985,1986],{"class":1085}," from",[860,1988,1847],{"class":874},[860,1990,1991],{"class":878},"@nuxt/content",[860,1993,1994],{"class":874},"'\n",[860,1996,1997],{"class":862,"line":945},[860,1998,1232],{"emptyLinePlaceholder":526},[860,2000,2001,2003,2006,2008,2010,2012,2015,2017],{"class":862,"line":929},[860,2002,1046],{"class":1045},[860,2004,2005],{"class":870}," postSchema ",[860,2007,1052],{"class":874},[860,2009,1981],{"class":870},[860,2011,759],{"class":874},[860,2013,2014],{"class":866},"object",[860,2016,871],{"class":870},[860,2018,1815],{"class":874},[860,2020,2021,2024,2026,2028,2030,2033,2035],{"class":862,"line":970},[860,2022,2023],{"class":978},"  title",[860,2025,849],{"class":874},[860,2027,1981],{"class":870},[860,2029,759],{"class":874},[860,2031,2032],{"class":866},"string",[860,2034,1060],{"class":870},[860,2036,967],{"class":874},[860,2038,2039,2042,2044,2046,2048,2050,2052],{"class":862,"line":994},[860,2040,2041],{"class":978},"  description",[860,2043,849],{"class":874},[860,2045,1981],{"class":870},[860,2047,759],{"class":874},[860,2049,2032],{"class":866},[860,2051,1060],{"class":870},[860,2053,967],{"class":874},[860,2055,2056,2059,2061,2063,2065,2068,2070],{"class":862,"line":1005},[860,2057,2058],{"class":978},"  date",[860,2060,849],{"class":874},[860,2062,1981],{"class":870},[860,2064,759],{"class":874},[860,2066,2067],{"class":866},"date",[860,2069,1060],{"class":870},[860,2071,967],{"class":874},[860,2073,2074,2077,2079,2081,2083,2085,2087],{"class":862,"line":1011},[860,2075,2076],{"class":978},"  image",[860,2078,849],{"class":874},[860,2080,1981],{"class":870},[860,2082,759],{"class":874},[860,2084,2014],{"class":866},[860,2086,871],{"class":870},[860,2088,1815],{"class":874},[860,2090,2091,2094,2096,2098,2100,2102],{"class":862,"line":1284},[860,2092,2093],{"class":978},"    src",[860,2095,849],{"class":874},[860,2097,1981],{"class":870},[860,2099,759],{"class":874},[860,2101,2032],{"class":866},[860,2103,905],{"class":870},[860,2105,2106,2109,2111],{"class":862,"line":1289},[860,2107,2108],{"class":874},"  }",[860,2110,884],{"class":870},[860,2112,967],{"class":874},[860,2114,2115,2118,2120,2122,2124,2127,2129,2131,2134,2136,2139],{"class":862,"line":1317},[860,2116,2117],{"class":978},"  published",[860,2119,849],{"class":874},[860,2121,1981],{"class":870},[860,2123,759],{"class":874},[860,2125,2126],{"class":866},"boolean",[860,2128,1060],{"class":870},[860,2130,759],{"class":874},[860,2132,2133],{"class":866},"default",[860,2135,871],{"class":870},[860,2137,2138],{"class":963},"true",[860,2140,1417],{"class":870},[860,2142,2143,2145],{"class":862,"line":1356},[860,2144,1219],{"class":874},[860,2146,1417],{"class":870},[860,2148,2149],{"class":862,"line":1369},[860,2150,1232],{"emptyLinePlaceholder":526},[860,2152,2153,2156,2159,2162,2164],{"class":862,"line":1146},[860,2154,2155],{"class":1085},"export",[860,2157,2158],{"class":1045}," const",[860,2160,2161],{"class":870}," collections ",[860,2163,1052],{"class":874},[860,2165,942],{"class":874},[860,2167,2168],{"class":862,"line":1147},[860,2169,2170],{"class":1237},"  // English posts (default locale)\n",[860,2172,2173,2176,2178,2180,2182],{"class":862,"line":1148},[860,2174,2175],{"class":978},"  posts",[860,2177,849],{"class":874},[860,2179,1976],{"class":866},[860,2181,871],{"class":870},[860,2183,1815],{"class":874},[860,2185,2186,2189,2191,2193,2196,2198],{"class":862,"line":1434},[860,2187,2188],{"class":978},"    type",[860,2190,849],{"class":874},[860,2192,1847],{"class":874},[860,2194,2195],{"class":878},"page",[860,2197,875],{"class":874},[860,2199,967],{"class":874},[860,2201,2202,2205,2207,2209,2212,2214],{"class":862,"line":1443},[860,2203,2204],{"class":978},"    source",[860,2206,849],{"class":874},[860,2208,1847],{"class":874},[860,2210,2211],{"class":878},"blog/**/*.md",[860,2213,875],{"class":874},[860,2215,967],{"class":874},[860,2217,2218,2221,2223],{"class":862,"line":1448},[860,2219,2220],{"class":978},"    schema",[860,2222,849],{"class":874},[860,2224,2225],{"class":870}," postSchema\n",[860,2227,2228,2230],{"class":862,"line":1457},[860,2229,2108],{"class":874},[860,2231,1417],{"class":870},[860,2233,2234],{"class":862,"line":1462},[860,2235,1014],{"class":874},[860,2237,2238],{"class":862,"line":1467},[860,2239,1232],{"emptyLinePlaceholder":526},[860,2241,2242,2244,2247,2249,2251,2253,2255,2257],{"class":862,"line":1885},[860,2243,2155],{"class":1085},[860,2245,2246],{"class":1085}," default",[860,2248,1971],{"class":866},[860,2250,871],{"class":870},[860,2252,1828],{"class":874},[860,2254,2161],{"class":870},[860,2256,1219],{"class":874},[860,2258,1417],{"class":870},[851,2260,2262],{"className":853,"code":2261,"filename":924,"language":855,"meta":856,"style":856},"export default defineNuxtConfig({\n  modules: ['@nuxt/content'],\n\n  nitro: {\n    preset: 'cloudflare_module',\n    prerender: {\n      autoSubfolderIndex: false, // The fix\n      routes: ['/blog'],\n      crawlLinks: true\n    }\n  }\n})\n",[816,2263,2264,2277,2296,2300,2309,2325,2334,2348,2367,2376,2381,2385],{"__ignoreMap":856},[860,2265,2266,2268,2270,2273,2275],{"class":862,"line":863},[860,2267,2155],{"class":1085},[860,2269,2246],{"class":1085},[860,2271,2272],{"class":866}," defineNuxtConfig",[860,2274,871],{"class":870},[860,2276,1815],{"class":874},[860,2278,2279,2282,2284,2286,2288,2290,2292,2294],{"class":862,"line":945},[860,2280,2281],{"class":978},"  modules",[860,2283,849],{"class":874},[860,2285,979],{"class":870},[860,2287,875],{"class":874},[860,2289,1991],{"class":878},[860,2291,875],{"class":874},[860,2293,989],{"class":870},[860,2295,967],{"class":874},[860,2297,2298],{"class":862,"line":929},[860,2299,1232],{"emptyLinePlaceholder":526},[860,2301,2302,2305,2307],{"class":862,"line":970},[860,2303,2304],{"class":978},"  nitro",[860,2306,849],{"class":874},[860,2308,942],{"class":874},[860,2310,2311,2314,2316,2318,2321,2323],{"class":862,"line":994},[860,2312,2313],{"class":978},"    preset",[860,2315,849],{"class":874},[860,2317,1847],{"class":874},[860,2319,2320],{"class":878},"cloudflare_module",[860,2322,875],{"class":874},[860,2324,967],{"class":874},[860,2326,2327,2330,2332],{"class":862,"line":1005},[860,2328,2329],{"class":978},"    prerender",[860,2331,849],{"class":874},[860,2333,942],{"class":874},[860,2335,2336,2339,2341,2343,2345],{"class":862,"line":1011},[860,2337,2338],{"class":978},"      autoSubfolderIndex",[860,2340,849],{"class":874},[860,2342,964],{"class":963},[860,2344,1091],{"class":874},[860,2346,2347],{"class":1237}," // The fix\n",[860,2349,2350,2353,2355,2357,2359,2361,2363,2365],{"class":862,"line":1284},[860,2351,2352],{"class":978},"      routes",[860,2354,849],{"class":874},[860,2356,979],{"class":870},[860,2358,875],{"class":874},[860,2360,984],{"class":878},[860,2362,875],{"class":874},[860,2364,989],{"class":870},[860,2366,967],{"class":874},[860,2368,2369,2372,2374],{"class":862,"line":1289},[860,2370,2371],{"class":978},"      crawlLinks",[860,2373,849],{"class":874},[860,2375,1002],{"class":963},[860,2377,2378],{"class":862,"line":1317},[860,2379,2380],{"class":874},"    }\n",[860,2382,2383],{"class":862,"line":1356},[860,2384,1008],{"class":874},[860,2386,2387,2389],{"class":862,"line":1369},[860,2388,1219],{"class":874},[860,2390,1417],{"class":870},[786,2392,2394],{"id":2393},"why-this-actually-matters","Why This Actually Matters",[711,2396,2397,2398,2401],{},"The real reason to use ",[816,2399,2400],{},"autoSubfolderIndex: false"," isn't just fixing the 404. It's your analytics.",[711,2403,2404],{},"Without the fix, Umami (or whatever you use) sees:",[851,2406,2410],{"className":2407,"code":2409,"language":720},[2408],"language-text","/blog/my-post       → 45 views\n/blog/my-post/      → 23 views\n",[816,2411,2409],{"__ignoreMap":856},[711,2413,2414],{},"Which number do you use? Neither's correct. You're splitting traffic across two URLs.",[711,2416,2417],{},"With the fix:",[851,2419,2422],{"className":2420,"code":2421,"language":720},[2408],"/blog/my-post       → 68 views\n",[816,2423,2421],{"__ignoreMap":856},[711,2425,2426],{},"One canonical URL. Accurate numbers. SEO doesn't get confused by duplicate content. Everyone's happy.",[786,2428,2430],{"id":2429},"bottom-line","Bottom Line",[711,2432,2433],{},"You would think AI will help these kind of issues easily, it just side tracked me this time, making the fix take longer than it should.",[711,2435,2436],{},"Prerendering is great for performance and reducing server load. But small config details can break things in unexpected ways.\nIt was another reminder to always test the built app in preview mode before pushing to production. Catch these issues early.",[711,2438,2439],{},"With good setup, the fix can be deployed quickly and painlessly. Anyway, there are many things that break in the cloud - so the preview is not always enough, but it helps a lot.",[1132,2441],{},[2443,2444],"callout-form",{"button-icon":179,"button-text":525,"className":2445,"color":777,"description":2448,"form-action":476,"icon":2449,"title":2450},[2446,2447],"border-dashed","hover:border-inverted","Running into prerendering issues or need help optimizing your Nuxt site? We can help you debug, optimize, and get your app deployed the right way.","i-lucide-headset","Need Help with Your Nuxt App?",[2452,2453,2454],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":856,"searchDepth":945,"depth":945,"links":2456},[2457,2458,2459,2460,2461,2462,2465,2466,2467],{"id":788,"depth":945,"text":789},{"id":804,"depth":945,"text":805},{"id":834,"depth":945,"text":835},{"id":917,"depth":945,"text":918},{"id":1031,"depth":945,"text":1032},{"id":1136,"depth":945,"text":1137,"children":2463},[2464],{"id":1481,"depth":929,"text":1482},{"id":1606,"depth":945,"text":1607},{"id":2393,"depth":945,"text":2394},{"id":2429,"depth":945,"text":2430},"2025-12-10","Enabled prerendering for optimization. Pushed to production. Suddenly receive weird 404 error. One config line fixes it - autoSubfolderIndex","md",{"src":2472},"blog/nuxt_pixel.png",{},"/blog/fix-nuxt-content-404",{"title":763,"description":2469},"3.blog/2.fix-nuxt-content-404",[2478,2479,2480,2481],"Nuxt","Bug Fix","Prerendering","Cloudflare","2O8DzCVjSqmzGTIBvonXCxVZFOGEDl5UthbefjYN74M",{"id":2484,"title":2485,"authors":2486,"badge":2489,"body":2490,"date":18005,"description":18006,"extension":2470,"image":18007,"meta":18009,"navigation":526,"ogImage":519,"path":18010,"published":526,"seo":18011,"stem":18012,"tags":18013,"__hash__":18016},"posts/3.blog/1.migrate-nuxthub-to-wrangler.md","Self-Hosting Nuxt on Cloudflare Workers: Setup & Migration Guide",[2487],{"name":766,"avatar":2488},{"src":768},{"label":770},{"type":772,"value":2491,"toc":17990},[2492,2496,2499,2505,2508,2511,2515,2518,2564,2567,2575,2577,2581,2584,2587,2602,2609,2614,2842,2853,3006,3009,3016,3406,3408,3412,3415,3429,3432,3443,3449,3456,3526,3529,3559,3563,3572,3586,3589,3609,3612,3618,3624,3626,3630,3633,3662,3665,3679,3690,3692,3696,3699,3728,3731,3760,3762,3766,3769,3772,3783,3786,3788,3792,3798,3800,3804,3807,17872,17874,17878,17900,17920,17938,17948,17950,17954,17957,17960,17977,17980,17982,17987],[786,2493,2495],{"id":2494},"why-self-host-on-cloudflare","Why Self-Host on Cloudflare?",[711,2497,2498],{},"If you're deploying a Nuxt app to Cloudflare Workers, you have options. You can use NuxtHub (which provides a nice abstraction layer), or you can go direct with Wrangler.",[711,2500,2501,2504],{},[1102,2502,2503],{},"Note:"," NuxtHub Admin is shutting down at the end of December 2025. The CLI and GitHub Actions are getting deprecated too. If you're currently using NuxtHub, you'll need to either switch to direct Cloudflare deployment even if you still use NuxtHub's self-hosted option.",[711,2506,2507],{},"I recently switched to direct Cloudflare deployment for my projects. Took some time to set up, and I've been happy with it after all. It was just the lack of good guides that made it harder.",[711,2509,2510],{},"This guide covers both scenarios: setting up a fresh project, or migrating from NuxtHub. I've written some scripts to handle the boring parts automatically.",[786,2512,2514],{"id":2513},"prerequisites","Prerequisites",[711,2516,2517],{},"Install wrangler and nitro-cloudflare-dev:",[2519,2520,2521,2545],"code-group",{},[851,2522,2527],{"className":2523,"code":2524,"filename":2525,"language":2526,"meta":856,"style":856},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add -D wrangler nitro-cloudflare-dev\n","pnpm","bash",[816,2528,2529],{"__ignoreMap":856},[860,2530,2531,2533,2536,2539,2542],{"class":862,"line":863},[860,2532,2525],{"class":936},[860,2534,2535],{"class":878}," add",[860,2537,2538],{"class":878}," -D",[860,2540,2541],{"class":878}," wrangler",[860,2543,2544],{"class":878}," nitro-cloudflare-dev\n",[851,2546,2549],{"className":2523,"code":2547,"filename":2548,"language":2526,"meta":856,"style":856},"npm install -D wrangler nitro-cloudflare-dev\n","npm",[816,2550,2551],{"__ignoreMap":856},[860,2552,2553,2555,2558,2560,2562],{"class":862,"line":863},[860,2554,2548],{"class":936},[860,2556,2557],{"class":878}," install",[860,2559,2538],{"class":878},[860,2561,2541],{"class":878},[860,2563,2544],{"class":878},[711,2565,2566],{},"You'll also need a Cloudflare account, an API token (read all is enough for the extract), and your Account ID.",[775,2568,2569],{},[711,2570,2571,2572,2574],{},"💡 ",[1102,2573,2503],{}," If this is your first time using Cloudflare Workers, the 5mb free tier limit might be restrictive for Nuxt apps. You might get an error about exceeding the size limit during deployment. Good news is that a single plan allows to deploy many apps, so you can share it across projects.",[1132,2576],{},[786,2578,2580],{"id":2579},"migrating-an-existing-app","Migrating an Existing App",[711,2582,2583],{},"If you're already running on NuxtHub, the extraction script pulls your config from Cloudflare automatically.",[711,2585,2586],{},"Run it:",[851,2588,2590],{"className":2523,"code":2589,"language":2526,"meta":856,"style":856},"pnpm run cf:extract\n",[816,2591,2592],{"__ignoreMap":856},[860,2593,2594,2596,2599],{"class":862,"line":863},[860,2595,2525],{"class":936},[860,2597,2598],{"class":878}," run",[860,2600,2601],{"class":878}," cf:extract\n",[711,2603,2604,2605,2608],{},"It lists your workers, you pick one, and it generates ",[816,2606,2607],{},"wrangler.jsonc"," with all your bindings (D1, KV, etc.). The full script is at the bottom of this post.",[711,2610,2611,2612,849],{},"Now update ",[816,2613,924],{},[851,2615,2617],{"className":853,"code":2616,"filename":924,"language":855,"meta":856,"style":856},"export default defineNuxtConfig({\n  modules: [\n    '@nuxtjs/tailwindcss',\n    // '@nuxthub/core', // ❌ Remove this\n    '@nuxt/ui',\n    // ... other modules\n  ],\n\n  // Remove hub configuration\n  // hub: { ... }, // ❌ Remove this entire section\n\n  nitro: {\n    preset: 'cloudflare_module',\n    compatibility_flags: ['nodejs_compat'],\n    cloudflare: {\n      deployConfig: true,\n      nodeCompat: true,\n      wrangler: {\n        triggers: {\n          crons: ['*/2 * * * *'] // Nitro adds these during build\n        }\n      }\n    }\n  }\n})\n",[816,2618,2619,2631,2640,2652,2660,2671,2676,2683,2687,2692,2700,2704,2712,2726,2746,2755,2767,2778,2787,2796,2818,2823,2828,2832,2836],{"__ignoreMap":856},[860,2620,2621,2623,2625,2627,2629],{"class":862,"line":863},[860,2622,2155],{"class":1085},[860,2624,2246],{"class":1085},[860,2626,2272],{"class":866},[860,2628,871],{"class":870},[860,2630,1815],{"class":874},[860,2632,2633,2635,2637],{"class":862,"line":945},[860,2634,2281],{"class":978},[860,2636,849],{"class":874},[860,2638,2639],{"class":870}," [\n",[860,2641,2642,2645,2648,2650],{"class":862,"line":929},[860,2643,2644],{"class":874},"    '",[860,2646,2647],{"class":878},"@nuxtjs/tailwindcss",[860,2649,875],{"class":874},[860,2651,967],{"class":874},[860,2653,2654,2657],{"class":862,"line":970},[860,2655,2656],{"class":1237},"    // '@nuxthub/core',",[860,2658,2659],{"class":1237}," // ❌ Remove this\n",[860,2661,2662,2664,2667,2669],{"class":862,"line":994},[860,2663,2644],{"class":874},[860,2665,2666],{"class":878},"@nuxt/ui",[860,2668,875],{"class":874},[860,2670,967],{"class":874},[860,2672,2673],{"class":862,"line":1005},[860,2674,2675],{"class":1237},"    // ... other modules\n",[860,2677,2678,2681],{"class":862,"line":1011},[860,2679,2680],{"class":870},"  ]",[860,2682,967],{"class":874},[860,2684,2685],{"class":862,"line":1284},[860,2686,1232],{"emptyLinePlaceholder":526},[860,2688,2689],{"class":862,"line":1289},[860,2690,2691],{"class":1237},"  // Remove hub configuration\n",[860,2693,2694,2697],{"class":862,"line":1317},[860,2695,2696],{"class":1237},"  // hub: { ... },",[860,2698,2699],{"class":1237}," // ❌ Remove this entire section\n",[860,2701,2702],{"class":862,"line":1356},[860,2703,1232],{"emptyLinePlaceholder":526},[860,2705,2706,2708,2710],{"class":862,"line":1369},[860,2707,2304],{"class":978},[860,2709,849],{"class":874},[860,2711,942],{"class":874},[860,2713,2714,2716,2718,2720,2722,2724],{"class":862,"line":1146},[860,2715,2313],{"class":978},[860,2717,849],{"class":874},[860,2719,1847],{"class":874},[860,2721,2320],{"class":878},[860,2723,875],{"class":874},[860,2725,967],{"class":874},[860,2727,2728,2731,2733,2735,2737,2740,2742,2744],{"class":862,"line":1147},[860,2729,2730],{"class":978},"    compatibility_flags",[860,2732,849],{"class":874},[860,2734,979],{"class":870},[860,2736,875],{"class":874},[860,2738,2739],{"class":878},"nodejs_compat",[860,2741,875],{"class":874},[860,2743,989],{"class":870},[860,2745,967],{"class":874},[860,2747,2748,2751,2753],{"class":862,"line":1148},[860,2749,2750],{"class":978},"    cloudflare",[860,2752,849],{"class":874},[860,2754,942],{"class":874},[860,2756,2757,2760,2762,2765],{"class":862,"line":1434},[860,2758,2759],{"class":978},"      deployConfig",[860,2761,849],{"class":874},[860,2763,2764],{"class":963}," true",[860,2766,967],{"class":874},[860,2768,2769,2772,2774,2776],{"class":862,"line":1443},[860,2770,2771],{"class":978},"      nodeCompat",[860,2773,849],{"class":874},[860,2775,2764],{"class":963},[860,2777,967],{"class":874},[860,2779,2780,2783,2785],{"class":862,"line":1448},[860,2781,2782],{"class":978},"      wrangler",[860,2784,849],{"class":874},[860,2786,942],{"class":874},[860,2788,2789,2792,2794],{"class":862,"line":1457},[860,2790,2791],{"class":978},"        triggers",[860,2793,849],{"class":874},[860,2795,942],{"class":874},[860,2797,2798,2801,2803,2805,2807,2810,2812,2815],{"class":862,"line":1462},[860,2799,2800],{"class":978},"          crons",[860,2802,849],{"class":874},[860,2804,979],{"class":870},[860,2806,875],{"class":874},[860,2808,2809],{"class":878},"*/2 * * * *",[860,2811,875],{"class":874},[860,2813,2814],{"class":870},"] ",[860,2816,2817],{"class":1237},"// Nitro adds these during build\n",[860,2819,2820],{"class":862,"line":1467},[860,2821,2822],{"class":874},"        }\n",[860,2824,2825],{"class":862,"line":1885},[860,2826,2827],{"class":874},"      }\n",[860,2829,2830],{"class":862,"line":1896},[860,2831,2380],{"class":874},[860,2833,2834],{"class":862,"line":1917},[860,2835,1008],{"class":874},[860,2837,2838,2840],{"class":862,"line":1939},[860,2839,1219],{"class":874},[860,2841,1417],{"class":870},[711,2843,2844,2845,2848,2849,2852],{},"Change how you access D1 and KV. NuxtHub used ",[816,2846,2847],{},"hubDatabase()"," and ",[816,2850,2851],{},"hubKV()",". Now you access them directly:",[851,2854,2856],{"className":853,"code":2855,"language":855,"meta":856,"style":856},"// Instead of hubDatabase()\nconst DB = process.env.DB || globalThis.__env__?.DB || globalThis.DB\nreturn drizzle(DB, { schema })\n\n// Instead of hubKV()\nconst KV = process.env.KV || globalThis.__env__?.KV || globalThis.KV\nawait KV.get('my-key')\n",[816,2857,2858,2863,2910,2932,2936,2941,2982],{"__ignoreMap":856},[860,2859,2860],{"class":862,"line":863},[860,2861,2862],{"class":1237},"// Instead of hubDatabase()\n",[860,2864,2865,2867,2870,2872,2875,2877,2880,2882,2885,2888,2891,2893,2896,2899,2901,2903,2905,2907],{"class":862,"line":945},[860,2866,1046],{"class":1045},[860,2868,2869],{"class":870}," DB ",[860,2871,1052],{"class":874},[860,2873,2874],{"class":870}," process",[860,2876,759],{"class":874},[860,2878,2879],{"class":870},"env",[860,2881,759],{"class":874},[860,2883,2884],{"class":870},"DB ",[860,2886,2887],{"class":874},"||",[860,2889,2890],{"class":870}," globalThis",[860,2892,759],{"class":874},[860,2894,2895],{"class":870},"__env__",[860,2897,2898],{"class":874},"?.",[860,2900,2884],{"class":870},[860,2902,2887],{"class":874},[860,2904,2890],{"class":870},[860,2906,759],{"class":874},[860,2908,2909],{"class":870},"DB\n",[860,2911,2912,2915,2918,2921,2923,2925,2928,2930],{"class":862,"line":929},[860,2913,2914],{"class":1085},"return",[860,2916,2917],{"class":866}," drizzle",[860,2919,2920],{"class":870},"(DB",[860,2922,1091],{"class":874},[860,2924,1213],{"class":874},[860,2926,2927],{"class":870}," schema ",[860,2929,1219],{"class":874},[860,2931,1417],{"class":870},[860,2933,2934],{"class":862,"line":970},[860,2935,1232],{"emptyLinePlaceholder":526},[860,2937,2938],{"class":862,"line":994},[860,2939,2940],{"class":1237},"// Instead of hubKV()\n",[860,2942,2943,2945,2948,2950,2952,2954,2956,2958,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979],{"class":862,"line":1005},[860,2944,1046],{"class":1045},[860,2946,2947],{"class":870}," KV ",[860,2949,1052],{"class":874},[860,2951,2874],{"class":870},[860,2953,759],{"class":874},[860,2955,2879],{"class":870},[860,2957,759],{"class":874},[860,2959,2960],{"class":870},"KV ",[860,2962,2887],{"class":874},[860,2964,2890],{"class":870},[860,2966,759],{"class":874},[860,2968,2895],{"class":870},[860,2970,2898],{"class":874},[860,2972,2960],{"class":870},[860,2974,2887],{"class":874},[860,2976,2890],{"class":870},[860,2978,759],{"class":874},[860,2980,2981],{"class":870},"KV\n",[860,2983,2984,2987,2990,2992,2995,2997,2999,3002,3004],{"class":862,"line":1011},[860,2985,2986],{"class":1085},"await",[860,2988,2989],{"class":870}," KV",[860,2991,759],{"class":874},[860,2993,2994],{"class":866},"get",[860,2996,871],{"class":870},[860,2998,875],{"class":874},[860,3000,3001],{"class":878},"my-key",[860,3003,875],{"class":874},[860,3005,1417],{"class":870},[711,3007,3008],{},"The weird triple-check is because Cloudflare exposes bindings in different places depending on the environment. This pattern works everywhere.",[711,3010,3011,3012,3015],{},"Update your ",[816,3013,3014],{},"package.json"," scripts:",[851,3017,3021],{"className":3018,"code":3019,"filename":3014,"language":3020,"meta":856,"style":856},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"dev\": \"nuxt dev\",\n    \"build\": \"nuxi build\",\n    \"preview\": \"pnpm run build && wrangler dev\",\n    \"preview:only\": \"wrangler dev\",\n    \"preview:local\": \"wrangler dev --local --persist-to .wrangler/state\",\n\n    \"db:generate\": \"drizzle-kit generate\",\n    \"db:migrate\": \"wrangler d1 migrations apply my-db --remote\",\n    \"db:migrate:local\": \"wrangler d1 migrations apply my-db --local\",\n\n    \"db:seed\": \"node scripts/seed-database.mjs --remote\",\n    \"db:seed:local\": \"node scripts/seed-database.mjs --local\",\n    \"db:seed:all:local\": \"node scripts/seed-database.mjs --local --all\",\n\n    \"deploy\": \"pnpm run build && wrangler deploy\",\n    \"deploy:nobuild\": \"wrangler deploy\",\n\n    \"cf:extract\": \"node scripts/extract-worker-config.mjs\",\n    \"cf:setup\": \"node scripts/setup-cloudflare.mjs\",\n    \"cf:typegen\": \"wrangler types\",\n    \"env:sync\": \"node scripts/sync-env-to-wrangler.mjs\"\n  }\n}\n","json",[816,3022,3023,3027,3041,3063,3083,3103,3123,3143,3147,3167,3187,3207,3211,3231,3251,3271,3275,3295,3315,3319,3339,3359,3379,3398,3402],{"__ignoreMap":856},[860,3024,3025],{"class":862,"line":863},[860,3026,1815],{"class":874},[860,3028,3029,3032,3035,3037,3039],{"class":862,"line":945},[860,3030,3031],{"class":874},"  \"",[860,3033,3034],{"class":1045},"scripts",[860,3036,1170],{"class":874},[860,3038,849],{"class":874},[860,3040,942],{"class":874},[860,3042,3043,3046,3049,3051,3053,3056,3059,3061],{"class":862,"line":929},[860,3044,3045],{"class":874},"    \"",[860,3047,3048],{"class":936},"dev",[860,3050,1170],{"class":874},[860,3052,849],{"class":874},[860,3054,3055],{"class":874}," \"",[860,3057,3058],{"class":878},"nuxt dev",[860,3060,1170],{"class":874},[860,3062,967],{"class":874},[860,3064,3065,3067,3070,3072,3074,3076,3079,3081],{"class":862,"line":970},[860,3066,3045],{"class":874},[860,3068,3069],{"class":936},"build",[860,3071,1170],{"class":874},[860,3073,849],{"class":874},[860,3075,3055],{"class":874},[860,3077,3078],{"class":878},"nuxi build",[860,3080,1170],{"class":874},[860,3082,967],{"class":874},[860,3084,3085,3087,3090,3092,3094,3096,3099,3101],{"class":862,"line":994},[860,3086,3045],{"class":874},[860,3088,3089],{"class":936},"preview",[860,3091,1170],{"class":874},[860,3093,849],{"class":874},[860,3095,3055],{"class":874},[860,3097,3098],{"class":878},"pnpm run build && wrangler dev",[860,3100,1170],{"class":874},[860,3102,967],{"class":874},[860,3104,3105,3107,3110,3112,3114,3116,3119,3121],{"class":862,"line":1005},[860,3106,3045],{"class":874},[860,3108,3109],{"class":936},"preview:only",[860,3111,1170],{"class":874},[860,3113,849],{"class":874},[860,3115,3055],{"class":874},[860,3117,3118],{"class":878},"wrangler dev",[860,3120,1170],{"class":874},[860,3122,967],{"class":874},[860,3124,3125,3127,3130,3132,3134,3136,3139,3141],{"class":862,"line":1011},[860,3126,3045],{"class":874},[860,3128,3129],{"class":936},"preview:local",[860,3131,1170],{"class":874},[860,3133,849],{"class":874},[860,3135,3055],{"class":874},[860,3137,3138],{"class":878},"wrangler dev --local --persist-to .wrangler/state",[860,3140,1170],{"class":874},[860,3142,967],{"class":874},[860,3144,3145],{"class":862,"line":1284},[860,3146,1232],{"emptyLinePlaceholder":526},[860,3148,3149,3151,3154,3156,3158,3160,3163,3165],{"class":862,"line":1289},[860,3150,3045],{"class":874},[860,3152,3153],{"class":936},"db:generate",[860,3155,1170],{"class":874},[860,3157,849],{"class":874},[860,3159,3055],{"class":874},[860,3161,3162],{"class":878},"drizzle-kit generate",[860,3164,1170],{"class":874},[860,3166,967],{"class":874},[860,3168,3169,3171,3174,3176,3178,3180,3183,3185],{"class":862,"line":1317},[860,3170,3045],{"class":874},[860,3172,3173],{"class":936},"db:migrate",[860,3175,1170],{"class":874},[860,3177,849],{"class":874},[860,3179,3055],{"class":874},[860,3181,3182],{"class":878},"wrangler d1 migrations apply my-db --remote",[860,3184,1170],{"class":874},[860,3186,967],{"class":874},[860,3188,3189,3191,3194,3196,3198,3200,3203,3205],{"class":862,"line":1356},[860,3190,3045],{"class":874},[860,3192,3193],{"class":936},"db:migrate:local",[860,3195,1170],{"class":874},[860,3197,849],{"class":874},[860,3199,3055],{"class":874},[860,3201,3202],{"class":878},"wrangler d1 migrations apply my-db --local",[860,3204,1170],{"class":874},[860,3206,967],{"class":874},[860,3208,3209],{"class":862,"line":1369},[860,3210,1232],{"emptyLinePlaceholder":526},[860,3212,3213,3215,3218,3220,3222,3224,3227,3229],{"class":862,"line":1146},[860,3214,3045],{"class":874},[860,3216,3217],{"class":936},"db:seed",[860,3219,1170],{"class":874},[860,3221,849],{"class":874},[860,3223,3055],{"class":874},[860,3225,3226],{"class":878},"node scripts/seed-database.mjs --remote",[860,3228,1170],{"class":874},[860,3230,967],{"class":874},[860,3232,3233,3235,3238,3240,3242,3244,3247,3249],{"class":862,"line":1147},[860,3234,3045],{"class":874},[860,3236,3237],{"class":936},"db:seed:local",[860,3239,1170],{"class":874},[860,3241,849],{"class":874},[860,3243,3055],{"class":874},[860,3245,3246],{"class":878},"node scripts/seed-database.mjs --local",[860,3248,1170],{"class":874},[860,3250,967],{"class":874},[860,3252,3253,3255,3258,3260,3262,3264,3267,3269],{"class":862,"line":1148},[860,3254,3045],{"class":874},[860,3256,3257],{"class":936},"db:seed:all:local",[860,3259,1170],{"class":874},[860,3261,849],{"class":874},[860,3263,3055],{"class":874},[860,3265,3266],{"class":878},"node scripts/seed-database.mjs --local --all",[860,3268,1170],{"class":874},[860,3270,967],{"class":874},[860,3272,3273],{"class":862,"line":1434},[860,3274,1232],{"emptyLinePlaceholder":526},[860,3276,3277,3279,3282,3284,3286,3288,3291,3293],{"class":862,"line":1443},[860,3278,3045],{"class":874},[860,3280,3281],{"class":936},"deploy",[860,3283,1170],{"class":874},[860,3285,849],{"class":874},[860,3287,3055],{"class":874},[860,3289,3290],{"class":878},"pnpm run build && wrangler deploy",[860,3292,1170],{"class":874},[860,3294,967],{"class":874},[860,3296,3297,3299,3302,3304,3306,3308,3311,3313],{"class":862,"line":1448},[860,3298,3045],{"class":874},[860,3300,3301],{"class":936},"deploy:nobuild",[860,3303,1170],{"class":874},[860,3305,849],{"class":874},[860,3307,3055],{"class":874},[860,3309,3310],{"class":878},"wrangler deploy",[860,3312,1170],{"class":874},[860,3314,967],{"class":874},[860,3316,3317],{"class":862,"line":1457},[860,3318,1232],{"emptyLinePlaceholder":526},[860,3320,3321,3323,3326,3328,3330,3332,3335,3337],{"class":862,"line":1462},[860,3322,3045],{"class":874},[860,3324,3325],{"class":936},"cf:extract",[860,3327,1170],{"class":874},[860,3329,849],{"class":874},[860,3331,3055],{"class":874},[860,3333,3334],{"class":878},"node scripts/extract-worker-config.mjs",[860,3336,1170],{"class":874},[860,3338,967],{"class":874},[860,3340,3341,3343,3346,3348,3350,3352,3355,3357],{"class":862,"line":1467},[860,3342,3045],{"class":874},[860,3344,3345],{"class":936},"cf:setup",[860,3347,1170],{"class":874},[860,3349,849],{"class":874},[860,3351,3055],{"class":874},[860,3353,3354],{"class":878},"node scripts/setup-cloudflare.mjs",[860,3356,1170],{"class":874},[860,3358,967],{"class":874},[860,3360,3361,3363,3366,3368,3370,3372,3375,3377],{"class":862,"line":1885},[860,3362,3045],{"class":874},[860,3364,3365],{"class":936},"cf:typegen",[860,3367,1170],{"class":874},[860,3369,849],{"class":874},[860,3371,3055],{"class":874},[860,3373,3374],{"class":878},"wrangler types",[860,3376,1170],{"class":874},[860,3378,967],{"class":874},[860,3380,3381,3383,3386,3388,3390,3392,3395],{"class":862,"line":1896},[860,3382,3045],{"class":874},[860,3384,3385],{"class":936},"env:sync",[860,3387,1170],{"class":874},[860,3389,849],{"class":874},[860,3391,3055],{"class":874},[860,3393,3394],{"class":878},"node scripts/sync-env-to-wrangler.mjs",[860,3396,3397],{"class":874},"\"\n",[860,3399,3400],{"class":862,"line":1917},[860,3401,1008],{"class":874},[860,3403,3404],{"class":862,"line":1939},[860,3405,1014],{"class":874},[1132,3407],{},[786,3409,3411],{"id":3410},"starting-fresh-no-existing-nuxthub-app","Starting Fresh (No Existing NuxtHub App)",[711,3413,3414],{},"If you're setting up from scratch, run the setup script:",[851,3416,3418],{"className":2523,"code":3417,"language":2526,"meta":856,"style":856},"pnpm run cf:setup\n",[816,3419,3420],{"__ignoreMap":856},[860,3421,3422,3424,3426],{"class":862,"line":863},[860,3423,2525],{"class":936},[860,3425,2598],{"class":878},[860,3427,3428],{"class":878}," cf:setup\n",[711,3430,3431],{},"It asks you to pick a D1 region (choose the one closest to your users), then creates:",[1109,3433,3434,3437,3440],{},[1112,3435,3436],{},"D1 database",[1112,3438,3439],{},"KV namespaces (production + preview)",[1112,3441,3442],{},"Analytics Engine dataset",[711,3444,3445,3446,3448],{},"You need to update ",[816,3447,2607],{}," manually with the binding IDs.",[711,3450,3451,3452,3455],{},"For local development, create a ",[816,3453,3454],{},".dev.vars"," file:",[2519,3457,3458],{},[851,3459,3462],{"className":2523,"code":3460,"filename":3461,"language":2526,"meta":856,"style":856},"# Copy from .dev.vars.example\n# Used by `wrangler dev` for local development\n\nBETTER_AUTH_SECRET=your-secret-key-change-in-production\nBETTER_AUTH_URL=http://localhost:3000\n\nNUXT_TURNSTILE_SECRET_KEY=your-turnstile-secret-key\n\nNODE_ENV=development\n",".dev.vars (Local)",[816,3463,3464,3469,3474,3478,3488,3498,3502,3512,3516],{"__ignoreMap":856},[860,3465,3466],{"class":862,"line":863},[860,3467,3468],{"class":1237},"# Copy from .dev.vars.example\n",[860,3470,3471],{"class":862,"line":945},[860,3472,3473],{"class":1237},"# Used by `wrangler dev` for local development\n",[860,3475,3476],{"class":862,"line":929},[860,3477,1232],{"emptyLinePlaceholder":526},[860,3479,3480,3483,3485],{"class":862,"line":970},[860,3481,3482],{"class":870},"BETTER_AUTH_SECRET",[860,3484,1052],{"class":874},[860,3486,3487],{"class":878},"your-secret-key-change-in-production\n",[860,3489,3490,3493,3495],{"class":862,"line":994},[860,3491,3492],{"class":870},"BETTER_AUTH_URL",[860,3494,1052],{"class":874},[860,3496,3497],{"class":878},"http://localhost:3000\n",[860,3499,3500],{"class":862,"line":1005},[860,3501,1232],{"emptyLinePlaceholder":526},[860,3503,3504,3507,3509],{"class":862,"line":1011},[860,3505,3506],{"class":870},"NUXT_TURNSTILE_SECRET_KEY",[860,3508,1052],{"class":874},[860,3510,3511],{"class":878},"your-turnstile-secret-key\n",[860,3513,3514],{"class":862,"line":1284},[860,3515,1232],{"emptyLinePlaceholder":526},[860,3517,3518,3521,3523],{"class":862,"line":1289},[860,3519,3520],{"class":870},"NODE_ENV",[860,3522,1052],{"class":874},[860,3524,3525],{"class":878},"development\n",[711,3527,3528],{},"For production secrets, use wrangler:",[851,3530,3532],{"className":2523,"code":3531,"language":2526,"meta":856,"style":856},"wrangler secret put BETTER_AUTH_SECRET\nwrangler secret put NUXT_TURNSTILE_SECRET_KEY\n",[816,3533,3534,3548],{"__ignoreMap":856},[860,3535,3536,3539,3542,3545],{"class":862,"line":863},[860,3537,3538],{"class":936},"wrangler",[860,3540,3541],{"class":878}," secret",[860,3543,3544],{"class":878}," put",[860,3546,3547],{"class":878}," BETTER_AUTH_SECRET\n",[860,3549,3550,3552,3554,3556],{"class":862,"line":945},[860,3551,3538],{"class":936},[860,3553,3541],{"class":878},[860,3555,3544],{"class":878},[860,3557,3558],{"class":878}," NUXT_TURNSTILE_SECRET_KEY\n",[1479,3560,3562],{"id":3561},"environment-variable-sync-helper","Environment Variable Sync Helper",[711,3564,3565,3566,2848,3569,3571],{},"Managing environment variables between ",[816,3567,3568],{},".env",[816,3570,2607],{}," can be tedious. I created a helper script that automates this:",[851,3573,3575],{"className":2523,"code":3574,"language":2526,"meta":856,"style":856},"pnpm run env:sync\n",[816,3576,3577],{"__ignoreMap":856},[860,3578,3579,3581,3583],{"class":862,"line":863},[860,3580,2525],{"class":936},[860,3582,2598],{"class":878},[860,3584,3585],{"class":878}," env:sync\n",[711,3587,3588],{},"This script:",[1109,3590,3591,3597,3600,3606],{},[1112,3592,3593,3594,3596],{},"Reads your ",[816,3595,3568],{}," file",[1112,3598,3599],{},"Automatically separates public vars from secrets",[1112,3601,3602,3603,3605],{},"Updates ",[816,3604,2607],{}," with public variables",[1112,3607,3608],{},"Prints wrangler CLI commands for secrets",[711,3610,3611],{},"Example output:",[851,3613,3616],{"className":3614,"code":3615,"language":720},[2408],"✅ Adding: BETTER_AUTH_URL\n✅ Adding: GOOGLE_CLIENT_ID\n🔐 Secret detected: BETTER_AUTH_SECRET\n🔐 Secret detected: GOOGLE_CLIENT_SECRET\n\n✅ wrangler.jsonc updated successfully!\n   Added 2 public variables\n\n🔐 SECRETS DETECTED - Add manually using wrangler CLI:\n\n   wrangler secret put BETTER_AUTH_SECRET\n   # Enter value when prompted\n\n   wrangler secret put GOOGLE_CLIENT_SECRET\n   # Enter value when prompted\n",[816,3617,3615],{"__ignoreMap":856},[711,3619,3620,3621,3623],{},"This saves time and ensures you never accidentally commit secrets to ",[816,3622,2607],{},". The script is included in the complete code section below.",[1132,3625],{},[786,3627,3629],{"id":3628},"database-migrations-and-seeding","Database Migrations and Seeding",[711,3631,3632],{},"Run migrations:",[851,3634,3636],{"className":2523,"code":3635,"language":2526,"meta":856,"style":856},"pnpm run db:migrate:local   # local\npnpm run db:migrate          # production\n",[816,3637,3638,3650],{"__ignoreMap":856},[860,3639,3640,3642,3644,3647],{"class":862,"line":863},[860,3641,2525],{"class":936},[860,3643,2598],{"class":878},[860,3645,3646],{"class":878}," db:migrate:local",[860,3648,3649],{"class":1237},"   # local\n",[860,3651,3652,3654,3656,3659],{"class":862,"line":945},[860,3653,2525],{"class":936},[860,3655,2598],{"class":878},[860,3657,3658],{"class":878}," db:migrate",[860,3660,3661],{"class":1237},"          # production\n",[711,3663,3664],{},"The seeding script I wrote lets you pick which seeders to run:",[851,3666,3668],{"className":2523,"code":3667,"language":2526,"meta":856,"style":856},"pnpm run db:seed:local\n",[816,3669,3670],{"__ignoreMap":856},[860,3671,3672,3674,3676],{"class":862,"line":863},[860,3673,2525],{"class":936},[860,3675,2598],{"class":878},[860,3677,3678],{"class":878}," db:seed:local\n",[711,3680,3681,3682,3685,3686,3689],{},"It shows you all available seeders, you type the numbers you want (like ",[816,3683,3684],{},"1 3","), and it runs them. Or type ",[816,3687,3688],{},"all"," to run everything.",[1132,3691],{},[786,3693,3695],{"id":3694},"development-and-deployment","Development and Deployment",[711,3697,3698],{},"For development:",[851,3700,3702],{"className":2523,"code":3701,"language":2526,"meta":856,"style":856},"pnpm run dev              # Standard Nuxt dev server\npnpm run preview:local    # Local Workers environment\n",[816,3703,3704,3716],{"__ignoreMap":856},[860,3705,3706,3708,3710,3713],{"class":862,"line":863},[860,3707,2525],{"class":936},[860,3709,2598],{"class":878},[860,3711,3712],{"class":878}," dev",[860,3714,3715],{"class":1237},"              # Standard Nuxt dev server\n",[860,3717,3718,3720,3722,3725],{"class":862,"line":945},[860,3719,2525],{"class":936},[860,3721,2598],{"class":878},[860,3723,3724],{"class":878}," preview:local",[860,3726,3727],{"class":1237},"    # Local Workers environment\n",[711,3729,3730],{},"For deployment:",[851,3732,3734],{"className":2523,"code":3733,"language":2526,"meta":856,"style":856},"pnpm run deploy           # Build + deploy\npnpm run deploy:nobuild   # Just deploy (if already built)\n",[816,3735,3736,3748],{"__ignoreMap":856},[860,3737,3738,3740,3742,3745],{"class":862,"line":863},[860,3739,2525],{"class":936},[860,3741,2598],{"class":878},[860,3743,3744],{"class":878}," deploy",[860,3746,3747],{"class":1237},"           # Build + deploy\n",[860,3749,3750,3752,3754,3757],{"class":862,"line":945},[860,3751,2525],{"class":936},[860,3753,2598],{"class":878},[860,3755,3756],{"class":878}," deploy:nobuild",[860,3758,3759],{"class":1237},"   # Just deploy (if already built)\n",[1132,3761],{},[786,3763,3765],{"id":3764},"auto-deployment-setup","Auto-Deployment Setup",[711,3767,3768],{},"You don't need GitHub Actions. Cloudflare has auto-deployment built in.",[711,3770,3771],{},"Go to Workers & Pages in Cloudflare Dashboard → Settings → Builds & Deployments → Connect to Git.",[711,3773,3774,3775,3778,3779,3782],{},"Pick your repo, set build command to ",[816,3776,3777],{},"pnpm run build",", output directory to ",[816,3780,3781],{},".output",", and you're done.",[711,3784,3785],{},"Now every push to main automatically builds and deploys. PRs get preview deployments. No YAML configs needed.",[1132,3787],{},[786,3789,3791],{"id":3790},"file-structure","File Structure",[851,3793,3796],{"className":3794,"code":3795,"language":720},[2408],"my-nuxt-app/\n├── scripts/\n│   ├── setup-cloudflare.mjs        # Creates resources\n│   ├── extract-worker-config.mjs   # Pulls from existing worker\n│   ├── seed-database.mjs           # Interactive seeding\n│   └── sync-env-to-wrangler.mjs    # Syncs .env to wrangler.jsonc\n├── server/database/\n│   ├── migrations/\n│   └── schema.ts\n├── seeders/                        # SQL seed files\n├── .dev.vars                       # Local secrets (gitignored)\n├── .env                            # Environment variables\n├── nuxt.config.ts\n├── package.json\n└── wrangler.jsonc                  # Cloudflare config\n",[816,3797,3795],{"__ignoreMap":856},[1132,3799],{},[786,3801,3803],{"id":3802},"complete-code","Complete Code",[711,3805,3806],{},"All the scripts and config files:",[1612,3808,3809,4177,4414,5095,5173,5379,5516,5744,8965,11794,15390,17675,17770],{"default-value":2607},[851,3810,3814],{"className":3811,"code":3812,"filename":2607,"language":3813,"meta":856,"style":856},"language-jsonc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","/**\n * Cloudflare Workers Configuration\n * Direct Cloudflare setup with Wrangler\n */\n{\n  \"$schema\": \"node_modules/wrangler/config-schema.json\",\n\n  \"name\": \"my-nuxt-app\",\n  \"main\": \"./.output/server/index.mjs\",\n  \"compatibility_date\": \"2025-10-30\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n\n  /**\n   * Static Assets Binding\n   */\n  \"assets\": {\n    \"binding\": \"ASSETS\",\n    \"directory\": \"./.output/public/\"\n  },\n\n  /**\n   * Observability & Analytics\n   */\n  \"observability\": {\n    \"enabled\": true\n  },\n\n  /**\n   * D1 Database Binding\n   * To create: wrangler d1 create my-database --location=weur\n   */\n  \"d1_databases\": [\n    {\n      \"binding\": \"DB\",\n      \"database_name\": \"my-database\",\n      \"database_id\": \"YOUR_D1_DATABASE_ID_HERE\",\n      \"migrations_dir\": \"./server/database/migrations\"\n    }\n  ],\n\n  /**\n   * KV Namespace Binding\n   * To create: wrangler kv namespace create my-kv\n   * To create preview: wrangler kv namespace create my-kv --preview\n   */\n  \"kv_namespaces\": [\n    {\n      \"binding\": \"KV\",\n      \"id\": \"YOUR_KV_NAMESPACE_ID_HERE\",\n      \"preview_id\": \"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"\n    }\n  ],\n\n  /**\n   * Cron Triggers\n   * Note: Nitro needs this in nuxt.config.ts as well\n   * in nuxt.config.ts > nitro.cloudflare.wrangler.triggers\n   */\n  \"triggers\": {\n    \"crons\": [\"*/2 * * * *\"]\n  },\n\n  /**\n   * Environment Variables\n   */\n  \"vars\": {\n    \"NODE_ENV\": \"production\"\n  }\n}\n","jsonc",[816,3815,3816,3821,3826,3831,3836,3840,3845,3849,3854,3859,3864,3869,3873,3878,3883,3888,3893,3898,3903,3907,3911,3915,3920,3924,3929,3934,3938,3943,3948,3954,3960,3965,3971,3977,3983,3989,3995,4001,4006,4012,4017,4022,4028,4034,4040,4045,4051,4056,4062,4068,4074,4079,4084,4089,4094,4100,4106,4112,4117,4123,4129,4134,4139,4144,4150,4155,4161,4167,4172],{"__ignoreMap":856},[860,3817,3818],{"class":862,"line":863},[860,3819,3820],{},"/**\n",[860,3822,3823],{"class":862,"line":945},[860,3824,3825],{}," * Cloudflare Workers Configuration\n",[860,3827,3828],{"class":862,"line":929},[860,3829,3830],{}," * Direct Cloudflare setup with Wrangler\n",[860,3832,3833],{"class":862,"line":970},[860,3834,3835],{}," */\n",[860,3837,3838],{"class":862,"line":994},[860,3839,1815],{},[860,3841,3842],{"class":862,"line":1005},[860,3843,3844],{},"  \"$schema\": \"node_modules/wrangler/config-schema.json\",\n",[860,3846,3847],{"class":862,"line":1011},[860,3848,1232],{"emptyLinePlaceholder":526},[860,3850,3851],{"class":862,"line":1284},[860,3852,3853],{},"  \"name\": \"my-nuxt-app\",\n",[860,3855,3856],{"class":862,"line":1289},[860,3857,3858],{},"  \"main\": \"./.output/server/index.mjs\",\n",[860,3860,3861],{"class":862,"line":1317},[860,3862,3863],{},"  \"compatibility_date\": \"2025-10-30\",\n",[860,3865,3866],{"class":862,"line":1356},[860,3867,3868],{},"  \"compatibility_flags\": [\"nodejs_compat\"],\n",[860,3870,3871],{"class":862,"line":1369},[860,3872,1232],{"emptyLinePlaceholder":526},[860,3874,3875],{"class":862,"line":1146},[860,3876,3877],{},"  /**\n",[860,3879,3880],{"class":862,"line":1147},[860,3881,3882],{},"   * Static Assets Binding\n",[860,3884,3885],{"class":862,"line":1148},[860,3886,3887],{},"   */\n",[860,3889,3890],{"class":862,"line":1434},[860,3891,3892],{},"  \"assets\": {\n",[860,3894,3895],{"class":862,"line":1443},[860,3896,3897],{},"    \"binding\": \"ASSETS\",\n",[860,3899,3900],{"class":862,"line":1448},[860,3901,3902],{},"    \"directory\": \"./.output/public/\"\n",[860,3904,3905],{"class":862,"line":1457},[860,3906,1551],{},[860,3908,3909],{"class":862,"line":1462},[860,3910,1232],{"emptyLinePlaceholder":526},[860,3912,3913],{"class":862,"line":1467},[860,3914,3877],{},[860,3916,3917],{"class":862,"line":1885},[860,3918,3919],{},"   * Observability & Analytics\n",[860,3921,3922],{"class":862,"line":1896},[860,3923,3887],{},[860,3925,3926],{"class":862,"line":1917},[860,3927,3928],{},"  \"observability\": {\n",[860,3930,3931],{"class":862,"line":1939},[860,3932,3933],{},"    \"enabled\": true\n",[860,3935,3936],{"class":862,"line":1949},[860,3937,1551],{},[860,3939,3941],{"class":862,"line":3940},27,[860,3942,1232],{"emptyLinePlaceholder":526},[860,3944,3946],{"class":862,"line":3945},28,[860,3947,3877],{},[860,3949,3951],{"class":862,"line":3950},29,[860,3952,3953],{},"   * D1 Database Binding\n",[860,3955,3957],{"class":862,"line":3956},30,[860,3958,3959],{},"   * To create: wrangler d1 create my-database --location=weur\n",[860,3961,3963],{"class":862,"line":3962},31,[860,3964,3887],{},[860,3966,3968],{"class":862,"line":3967},32,[860,3969,3970],{},"  \"d1_databases\": [\n",[860,3972,3974],{"class":862,"line":3973},33,[860,3975,3976],{},"    {\n",[860,3978,3980],{"class":862,"line":3979},34,[860,3981,3982],{},"      \"binding\": \"DB\",\n",[860,3984,3986],{"class":862,"line":3985},35,[860,3987,3988],{},"      \"database_name\": \"my-database\",\n",[860,3990,3992],{"class":862,"line":3991},36,[860,3993,3994],{},"      \"database_id\": \"YOUR_D1_DATABASE_ID_HERE\",\n",[860,3996,3998],{"class":862,"line":3997},37,[860,3999,4000],{},"      \"migrations_dir\": \"./server/database/migrations\"\n",[860,4002,4004],{"class":862,"line":4003},38,[860,4005,2380],{},[860,4007,4009],{"class":862,"line":4008},39,[860,4010,4011],{},"  ],\n",[860,4013,4015],{"class":862,"line":4014},40,[860,4016,1232],{"emptyLinePlaceholder":526},[860,4018,4020],{"class":862,"line":4019},41,[860,4021,3877],{},[860,4023,4025],{"class":862,"line":4024},42,[860,4026,4027],{},"   * KV Namespace Binding\n",[860,4029,4031],{"class":862,"line":4030},43,[860,4032,4033],{},"   * To create: wrangler kv namespace create my-kv\n",[860,4035,4037],{"class":862,"line":4036},44,[860,4038,4039],{},"   * To create preview: wrangler kv namespace create my-kv --preview\n",[860,4041,4043],{"class":862,"line":4042},45,[860,4044,3887],{},[860,4046,4048],{"class":862,"line":4047},46,[860,4049,4050],{},"  \"kv_namespaces\": [\n",[860,4052,4054],{"class":862,"line":4053},47,[860,4055,3976],{},[860,4057,4059],{"class":862,"line":4058},48,[860,4060,4061],{},"      \"binding\": \"KV\",\n",[860,4063,4065],{"class":862,"line":4064},49,[860,4066,4067],{},"      \"id\": \"YOUR_KV_NAMESPACE_ID_HERE\",\n",[860,4069,4071],{"class":862,"line":4070},50,[860,4072,4073],{},"      \"preview_id\": \"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"\n",[860,4075,4077],{"class":862,"line":4076},51,[860,4078,2380],{},[860,4080,4082],{"class":862,"line":4081},52,[860,4083,4011],{},[860,4085,4087],{"class":862,"line":4086},53,[860,4088,1232],{"emptyLinePlaceholder":526},[860,4090,4092],{"class":862,"line":4091},54,[860,4093,3877],{},[860,4095,4097],{"class":862,"line":4096},55,[860,4098,4099],{},"   * Cron Triggers\n",[860,4101,4103],{"class":862,"line":4102},56,[860,4104,4105],{},"   * Note: Nitro needs this in nuxt.config.ts as well\n",[860,4107,4109],{"class":862,"line":4108},57,[860,4110,4111],{},"   * in nuxt.config.ts > nitro.cloudflare.wrangler.triggers\n",[860,4113,4115],{"class":862,"line":4114},58,[860,4116,3887],{},[860,4118,4120],{"class":862,"line":4119},59,[860,4121,4122],{},"  \"triggers\": {\n",[860,4124,4126],{"class":862,"line":4125},60,[860,4127,4128],{},"    \"crons\": [\"*/2 * * * *\"]\n",[860,4130,4132],{"class":862,"line":4131},61,[860,4133,1551],{},[860,4135,4137],{"class":862,"line":4136},62,[860,4138,1232],{"emptyLinePlaceholder":526},[860,4140,4142],{"class":862,"line":4141},63,[860,4143,3877],{},[860,4145,4147],{"class":862,"line":4146},64,[860,4148,4149],{},"   * Environment Variables\n",[860,4151,4153],{"class":862,"line":4152},65,[860,4154,3887],{},[860,4156,4158],{"class":862,"line":4157},66,[860,4159,4160],{},"  \"vars\": {\n",[860,4162,4164],{"class":862,"line":4163},67,[860,4165,4166],{},"    \"NODE_ENV\": \"production\"\n",[860,4168,4170],{"class":862,"line":4169},68,[860,4171,1008],{},[860,4173,4175],{"class":862,"line":4174},69,[860,4176,1014],{},[851,4178,4180],{"className":853,"code":4179,"filename":924,"language":855,"meta":856,"style":856},"export default defineNuxtConfig({\n  modules: [\n    '@nuxtjs/tailwindcss',\n    '@nuxt/ui',\n    // ... other modules (NOT @nuxthub/core)\n  ],\n\n  nitro: {\n    preset: 'cloudflare_module',\n    compatibility_flags: ['nodejs_compat'],\n    cloudflare: {\n      deployConfig: true,\n      nodeCompat: true,\n      wrangler: {\n        triggers: {\n          crons: ['*/2 * * * *']\n        }\n      }\n    },\n    scheduledTasks: {\n      '*/2 * * * *': ['notifications:process-queue']\n    }\n  },\n\n  compatibilityDate: '2025-10-30'\n})\n",[816,4181,4182,4194,4202,4212,4222,4227,4233,4237,4245,4259,4277,4285,4295,4305,4313,4321,4338,4342,4346,4351,4360,4382,4386,4390,4394,4408],{"__ignoreMap":856},[860,4183,4184,4186,4188,4190,4192],{"class":862,"line":863},[860,4185,2155],{"class":1085},[860,4187,2246],{"class":1085},[860,4189,2272],{"class":866},[860,4191,871],{"class":870},[860,4193,1815],{"class":874},[860,4195,4196,4198,4200],{"class":862,"line":945},[860,4197,2281],{"class":978},[860,4199,849],{"class":874},[860,4201,2639],{"class":870},[860,4203,4204,4206,4208,4210],{"class":862,"line":929},[860,4205,2644],{"class":874},[860,4207,2647],{"class":878},[860,4209,875],{"class":874},[860,4211,967],{"class":874},[860,4213,4214,4216,4218,4220],{"class":862,"line":970},[860,4215,2644],{"class":874},[860,4217,2666],{"class":878},[860,4219,875],{"class":874},[860,4221,967],{"class":874},[860,4223,4224],{"class":862,"line":994},[860,4225,4226],{"class":1237},"    // ... other modules (NOT @nuxthub/core)\n",[860,4228,4229,4231],{"class":862,"line":1005},[860,4230,2680],{"class":870},[860,4232,967],{"class":874},[860,4234,4235],{"class":862,"line":1011},[860,4236,1232],{"emptyLinePlaceholder":526},[860,4238,4239,4241,4243],{"class":862,"line":1284},[860,4240,2304],{"class":978},[860,4242,849],{"class":874},[860,4244,942],{"class":874},[860,4246,4247,4249,4251,4253,4255,4257],{"class":862,"line":1289},[860,4248,2313],{"class":978},[860,4250,849],{"class":874},[860,4252,1847],{"class":874},[860,4254,2320],{"class":878},[860,4256,875],{"class":874},[860,4258,967],{"class":874},[860,4260,4261,4263,4265,4267,4269,4271,4273,4275],{"class":862,"line":1317},[860,4262,2730],{"class":978},[860,4264,849],{"class":874},[860,4266,979],{"class":870},[860,4268,875],{"class":874},[860,4270,2739],{"class":878},[860,4272,875],{"class":874},[860,4274,989],{"class":870},[860,4276,967],{"class":874},[860,4278,4279,4281,4283],{"class":862,"line":1356},[860,4280,2750],{"class":978},[860,4282,849],{"class":874},[860,4284,942],{"class":874},[860,4286,4287,4289,4291,4293],{"class":862,"line":1369},[860,4288,2759],{"class":978},[860,4290,849],{"class":874},[860,4292,2764],{"class":963},[860,4294,967],{"class":874},[860,4296,4297,4299,4301,4303],{"class":862,"line":1146},[860,4298,2771],{"class":978},[860,4300,849],{"class":874},[860,4302,2764],{"class":963},[860,4304,967],{"class":874},[860,4306,4307,4309,4311],{"class":862,"line":1147},[860,4308,2782],{"class":978},[860,4310,849],{"class":874},[860,4312,942],{"class":874},[860,4314,4315,4317,4319],{"class":862,"line":1148},[860,4316,2791],{"class":978},[860,4318,849],{"class":874},[860,4320,942],{"class":874},[860,4322,4323,4325,4327,4329,4331,4333,4335],{"class":862,"line":1434},[860,4324,2800],{"class":978},[860,4326,849],{"class":874},[860,4328,979],{"class":870},[860,4330,875],{"class":874},[860,4332,2809],{"class":878},[860,4334,875],{"class":874},[860,4336,4337],{"class":870},"]\n",[860,4339,4340],{"class":862,"line":1443},[860,4341,2822],{"class":874},[860,4343,4344],{"class":862,"line":1448},[860,4345,2827],{"class":874},[860,4347,4348],{"class":862,"line":1457},[860,4349,4350],{"class":874},"    },\n",[860,4352,4353,4356,4358],{"class":862,"line":1462},[860,4354,4355],{"class":978},"    scheduledTasks",[860,4357,849],{"class":874},[860,4359,942],{"class":874},[860,4361,4362,4365,4367,4369,4371,4373,4375,4378,4380],{"class":862,"line":1467},[860,4363,4364],{"class":874},"      '",[860,4366,2809],{"class":978},[860,4368,875],{"class":874},[860,4370,849],{"class":874},[860,4372,979],{"class":870},[860,4374,875],{"class":874},[860,4376,4377],{"class":878},"notifications:process-queue",[860,4379,875],{"class":874},[860,4381,4337],{"class":870},[860,4383,4384],{"class":862,"line":1885},[860,4385,2380],{"class":874},[860,4387,4388],{"class":862,"line":1896},[860,4389,1551],{"class":874},[860,4391,4392],{"class":862,"line":1917},[860,4393,1232],{"emptyLinePlaceholder":526},[860,4395,4396,4399,4401,4403,4406],{"class":862,"line":1939},[860,4397,4398],{"class":978},"  compatibilityDate",[860,4400,849],{"class":874},[860,4402,1847],{"class":874},[860,4404,4405],{"class":878},"2025-10-30",[860,4407,1994],{"class":874},[860,4409,4410,4412],{"class":862,"line":1949},[860,4411,1219],{"class":874},[860,4413,1417],{"class":870},[851,4415,4417],{"className":3018,"code":4416,"filename":3014,"language":3020,"meta":856,"style":856},"{\n  \"name\": \"my-nuxt-app\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"nuxi build\",\n    \"dev\": \"nuxt dev\",\n\n    \"preview\": \"pnpm run build && wrangler dev\",\n    \"preview:only\": \"wrangler dev\",\n    \"preview:local\": \"wrangler dev --local --persist-to .wrangler/state\",\n    \"preview:remote\": \"wrangler dev --remote\",\n\n    \"postinstall\": \"nuxt prepare\",\n    \"lint\": \"eslint .\",\n    \"typecheck\": \"nuxt typecheck\",\n\n    \"db:generate\": \"drizzle-kit generate\",\n    \"db:migrate\": \"wrangler d1 migrations apply my-database --remote\",\n    \"db:migrate:local\": \"wrangler d1 migrations apply my-database --local\",\n\n    \"db:seed\": \"node scripts/seed-database.mjs --remote\",\n    \"db:seed:local\": \"node scripts/seed-database.mjs --local\",\n    \"db:seed:all\": \"node scripts/seed-database.mjs --remote --all\",\n    \"db:seed:all:local\": \"node scripts/seed-database.mjs --local --all\",\n\n    \"deploy\": \"pnpm run build && wrangler deploy\",\n    \"deploy:nobuild\": \"wrangler deploy\",\n\n    \"cf:setup\": \"node scripts/setup-cloudflare.mjs\",\n    \"cf:extract\": \"node scripts/extract-worker-config.mjs\",\n    \"cf:typegen\": \"wrangler types\"\n  },\n  \"dependencies\": {\n    \"@nuxt/ui\": \"^4.2.1\",\n    \"nuxt\": \"^4.2.1\",\n    \"vue\": \"^3.5.25\"\n  },\n  \"devDependencies\": {\n    \"@nuxt/eslint\": \"^1.9.0\",\n    \"drizzle-kit\": \"^0.31.5\",\n    \"drizzle-orm\": \"^0.36.4\",\n    \"nitro-cloudflare-dev\": \"^0.2.2\",\n    \"wrangler\": \"^4.51.0\"\n  }\n}\n",[816,4418,4419,4423,4443,4457,4477,4489,4507,4525,4529,4547,4565,4583,4603,4607,4627,4647,4667,4671,4689,4708,4727,4731,4749,4767,4787,4805,4809,4827,4845,4849,4867,4885,4901,4905,4918,4937,4956,4973,4977,4990,5010,5030,5050,5070,5087,5091],{"__ignoreMap":856},[860,4420,4421],{"class":862,"line":863},[860,4422,1815],{"class":874},[860,4424,4425,4427,4430,4432,4434,4436,4439,4441],{"class":862,"line":945},[860,4426,3031],{"class":874},[860,4428,4429],{"class":1045},"name",[860,4431,1170],{"class":874},[860,4433,849],{"class":874},[860,4435,3055],{"class":874},[860,4437,4438],{"class":878},"my-nuxt-app",[860,4440,1170],{"class":874},[860,4442,967],{"class":874},[860,4444,4445,4447,4450,4452,4454],{"class":862,"line":929},[860,4446,3031],{"class":874},[860,4448,4449],{"class":1045},"private",[860,4451,1170],{"class":874},[860,4453,849],{"class":874},[860,4455,4456],{"class":874}," true,\n",[860,4458,4459,4461,4464,4466,4468,4470,4473,4475],{"class":862,"line":970},[860,4460,3031],{"class":874},[860,4462,4463],{"class":1045},"type",[860,4465,1170],{"class":874},[860,4467,849],{"class":874},[860,4469,3055],{"class":874},[860,4471,4472],{"class":878},"module",[860,4474,1170],{"class":874},[860,4476,967],{"class":874},[860,4478,4479,4481,4483,4485,4487],{"class":862,"line":994},[860,4480,3031],{"class":874},[860,4482,3034],{"class":1045},[860,4484,1170],{"class":874},[860,4486,849],{"class":874},[860,4488,942],{"class":874},[860,4490,4491,4493,4495,4497,4499,4501,4503,4505],{"class":862,"line":1005},[860,4492,3045],{"class":874},[860,4494,3069],{"class":936},[860,4496,1170],{"class":874},[860,4498,849],{"class":874},[860,4500,3055],{"class":874},[860,4502,3078],{"class":878},[860,4504,1170],{"class":874},[860,4506,967],{"class":874},[860,4508,4509,4511,4513,4515,4517,4519,4521,4523],{"class":862,"line":1011},[860,4510,3045],{"class":874},[860,4512,3048],{"class":936},[860,4514,1170],{"class":874},[860,4516,849],{"class":874},[860,4518,3055],{"class":874},[860,4520,3058],{"class":878},[860,4522,1170],{"class":874},[860,4524,967],{"class":874},[860,4526,4527],{"class":862,"line":1284},[860,4528,1232],{"emptyLinePlaceholder":526},[860,4530,4531,4533,4535,4537,4539,4541,4543,4545],{"class":862,"line":1289},[860,4532,3045],{"class":874},[860,4534,3089],{"class":936},[860,4536,1170],{"class":874},[860,4538,849],{"class":874},[860,4540,3055],{"class":874},[860,4542,3098],{"class":878},[860,4544,1170],{"class":874},[860,4546,967],{"class":874},[860,4548,4549,4551,4553,4555,4557,4559,4561,4563],{"class":862,"line":1317},[860,4550,3045],{"class":874},[860,4552,3109],{"class":936},[860,4554,1170],{"class":874},[860,4556,849],{"class":874},[860,4558,3055],{"class":874},[860,4560,3118],{"class":878},[860,4562,1170],{"class":874},[860,4564,967],{"class":874},[860,4566,4567,4569,4571,4573,4575,4577,4579,4581],{"class":862,"line":1356},[860,4568,3045],{"class":874},[860,4570,3129],{"class":936},[860,4572,1170],{"class":874},[860,4574,849],{"class":874},[860,4576,3055],{"class":874},[860,4578,3138],{"class":878},[860,4580,1170],{"class":874},[860,4582,967],{"class":874},[860,4584,4585,4587,4590,4592,4594,4596,4599,4601],{"class":862,"line":1369},[860,4586,3045],{"class":874},[860,4588,4589],{"class":936},"preview:remote",[860,4591,1170],{"class":874},[860,4593,849],{"class":874},[860,4595,3055],{"class":874},[860,4597,4598],{"class":878},"wrangler dev --remote",[860,4600,1170],{"class":874},[860,4602,967],{"class":874},[860,4604,4605],{"class":862,"line":1146},[860,4606,1232],{"emptyLinePlaceholder":526},[860,4608,4609,4611,4614,4616,4618,4620,4623,4625],{"class":862,"line":1147},[860,4610,3045],{"class":874},[860,4612,4613],{"class":936},"postinstall",[860,4615,1170],{"class":874},[860,4617,849],{"class":874},[860,4619,3055],{"class":874},[860,4621,4622],{"class":878},"nuxt prepare",[860,4624,1170],{"class":874},[860,4626,967],{"class":874},[860,4628,4629,4631,4634,4636,4638,4640,4643,4645],{"class":862,"line":1148},[860,4630,3045],{"class":874},[860,4632,4633],{"class":936},"lint",[860,4635,1170],{"class":874},[860,4637,849],{"class":874},[860,4639,3055],{"class":874},[860,4641,4642],{"class":878},"eslint .",[860,4644,1170],{"class":874},[860,4646,967],{"class":874},[860,4648,4649,4651,4654,4656,4658,4660,4663,4665],{"class":862,"line":1434},[860,4650,3045],{"class":874},[860,4652,4653],{"class":936},"typecheck",[860,4655,1170],{"class":874},[860,4657,849],{"class":874},[860,4659,3055],{"class":874},[860,4661,4662],{"class":878},"nuxt typecheck",[860,4664,1170],{"class":874},[860,4666,967],{"class":874},[860,4668,4669],{"class":862,"line":1443},[860,4670,1232],{"emptyLinePlaceholder":526},[860,4672,4673,4675,4677,4679,4681,4683,4685,4687],{"class":862,"line":1448},[860,4674,3045],{"class":874},[860,4676,3153],{"class":936},[860,4678,1170],{"class":874},[860,4680,849],{"class":874},[860,4682,3055],{"class":874},[860,4684,3162],{"class":878},[860,4686,1170],{"class":874},[860,4688,967],{"class":874},[860,4690,4691,4693,4695,4697,4699,4701,4704,4706],{"class":862,"line":1457},[860,4692,3045],{"class":874},[860,4694,3173],{"class":936},[860,4696,1170],{"class":874},[860,4698,849],{"class":874},[860,4700,3055],{"class":874},[860,4702,4703],{"class":878},"wrangler d1 migrations apply my-database --remote",[860,4705,1170],{"class":874},[860,4707,967],{"class":874},[860,4709,4710,4712,4714,4716,4718,4720,4723,4725],{"class":862,"line":1462},[860,4711,3045],{"class":874},[860,4713,3193],{"class":936},[860,4715,1170],{"class":874},[860,4717,849],{"class":874},[860,4719,3055],{"class":874},[860,4721,4722],{"class":878},"wrangler d1 migrations apply my-database --local",[860,4724,1170],{"class":874},[860,4726,967],{"class":874},[860,4728,4729],{"class":862,"line":1467},[860,4730,1232],{"emptyLinePlaceholder":526},[860,4732,4733,4735,4737,4739,4741,4743,4745,4747],{"class":862,"line":1885},[860,4734,3045],{"class":874},[860,4736,3217],{"class":936},[860,4738,1170],{"class":874},[860,4740,849],{"class":874},[860,4742,3055],{"class":874},[860,4744,3226],{"class":878},[860,4746,1170],{"class":874},[860,4748,967],{"class":874},[860,4750,4751,4753,4755,4757,4759,4761,4763,4765],{"class":862,"line":1896},[860,4752,3045],{"class":874},[860,4754,3237],{"class":936},[860,4756,1170],{"class":874},[860,4758,849],{"class":874},[860,4760,3055],{"class":874},[860,4762,3246],{"class":878},[860,4764,1170],{"class":874},[860,4766,967],{"class":874},[860,4768,4769,4771,4774,4776,4778,4780,4783,4785],{"class":862,"line":1917},[860,4770,3045],{"class":874},[860,4772,4773],{"class":936},"db:seed:all",[860,4775,1170],{"class":874},[860,4777,849],{"class":874},[860,4779,3055],{"class":874},[860,4781,4782],{"class":878},"node scripts/seed-database.mjs --remote --all",[860,4784,1170],{"class":874},[860,4786,967],{"class":874},[860,4788,4789,4791,4793,4795,4797,4799,4801,4803],{"class":862,"line":1939},[860,4790,3045],{"class":874},[860,4792,3257],{"class":936},[860,4794,1170],{"class":874},[860,4796,849],{"class":874},[860,4798,3055],{"class":874},[860,4800,3266],{"class":878},[860,4802,1170],{"class":874},[860,4804,967],{"class":874},[860,4806,4807],{"class":862,"line":1949},[860,4808,1232],{"emptyLinePlaceholder":526},[860,4810,4811,4813,4815,4817,4819,4821,4823,4825],{"class":862,"line":3940},[860,4812,3045],{"class":874},[860,4814,3281],{"class":936},[860,4816,1170],{"class":874},[860,4818,849],{"class":874},[860,4820,3055],{"class":874},[860,4822,3290],{"class":878},[860,4824,1170],{"class":874},[860,4826,967],{"class":874},[860,4828,4829,4831,4833,4835,4837,4839,4841,4843],{"class":862,"line":3945},[860,4830,3045],{"class":874},[860,4832,3301],{"class":936},[860,4834,1170],{"class":874},[860,4836,849],{"class":874},[860,4838,3055],{"class":874},[860,4840,3310],{"class":878},[860,4842,1170],{"class":874},[860,4844,967],{"class":874},[860,4846,4847],{"class":862,"line":3950},[860,4848,1232],{"emptyLinePlaceholder":526},[860,4850,4851,4853,4855,4857,4859,4861,4863,4865],{"class":862,"line":3956},[860,4852,3045],{"class":874},[860,4854,3345],{"class":936},[860,4856,1170],{"class":874},[860,4858,849],{"class":874},[860,4860,3055],{"class":874},[860,4862,3354],{"class":878},[860,4864,1170],{"class":874},[860,4866,967],{"class":874},[860,4868,4869,4871,4873,4875,4877,4879,4881,4883],{"class":862,"line":3962},[860,4870,3045],{"class":874},[860,4872,3325],{"class":936},[860,4874,1170],{"class":874},[860,4876,849],{"class":874},[860,4878,3055],{"class":874},[860,4880,3334],{"class":878},[860,4882,1170],{"class":874},[860,4884,967],{"class":874},[860,4886,4887,4889,4891,4893,4895,4897,4899],{"class":862,"line":3967},[860,4888,3045],{"class":874},[860,4890,3365],{"class":936},[860,4892,1170],{"class":874},[860,4894,849],{"class":874},[860,4896,3055],{"class":874},[860,4898,3374],{"class":878},[860,4900,3397],{"class":874},[860,4902,4903],{"class":862,"line":3973},[860,4904,1551],{"class":874},[860,4906,4907,4909,4912,4914,4916],{"class":862,"line":3979},[860,4908,3031],{"class":874},[860,4910,4911],{"class":1045},"dependencies",[860,4913,1170],{"class":874},[860,4915,849],{"class":874},[860,4917,942],{"class":874},[860,4919,4920,4922,4924,4926,4928,4930,4933,4935],{"class":862,"line":3985},[860,4921,3045],{"class":874},[860,4923,2666],{"class":936},[860,4925,1170],{"class":874},[860,4927,849],{"class":874},[860,4929,3055],{"class":874},[860,4931,4932],{"class":878},"^4.2.1",[860,4934,1170],{"class":874},[860,4936,967],{"class":874},[860,4938,4939,4941,4944,4946,4948,4950,4952,4954],{"class":862,"line":3991},[860,4940,3045],{"class":874},[860,4942,4943],{"class":936},"nuxt",[860,4945,1170],{"class":874},[860,4947,849],{"class":874},[860,4949,3055],{"class":874},[860,4951,4932],{"class":878},[860,4953,1170],{"class":874},[860,4955,967],{"class":874},[860,4957,4958,4960,4962,4964,4966,4968,4971],{"class":862,"line":3997},[860,4959,3045],{"class":874},[860,4961,1149],{"class":936},[860,4963,1170],{"class":874},[860,4965,849],{"class":874},[860,4967,3055],{"class":874},[860,4969,4970],{"class":878},"^3.5.25",[860,4972,3397],{"class":874},[860,4974,4975],{"class":862,"line":4003},[860,4976,1551],{"class":874},[860,4978,4979,4981,4984,4986,4988],{"class":862,"line":4008},[860,4980,3031],{"class":874},[860,4982,4983],{"class":1045},"devDependencies",[860,4985,1170],{"class":874},[860,4987,849],{"class":874},[860,4989,942],{"class":874},[860,4991,4992,4994,4997,4999,5001,5003,5006,5008],{"class":862,"line":4014},[860,4993,3045],{"class":874},[860,4995,4996],{"class":936},"@nuxt/eslint",[860,4998,1170],{"class":874},[860,5000,849],{"class":874},[860,5002,3055],{"class":874},[860,5004,5005],{"class":878},"^1.9.0",[860,5007,1170],{"class":874},[860,5009,967],{"class":874},[860,5011,5012,5014,5017,5019,5021,5023,5026,5028],{"class":862,"line":4019},[860,5013,3045],{"class":874},[860,5015,5016],{"class":936},"drizzle-kit",[860,5018,1170],{"class":874},[860,5020,849],{"class":874},[860,5022,3055],{"class":874},[860,5024,5025],{"class":878},"^0.31.5",[860,5027,1170],{"class":874},[860,5029,967],{"class":874},[860,5031,5032,5034,5037,5039,5041,5043,5046,5048],{"class":862,"line":4024},[860,5033,3045],{"class":874},[860,5035,5036],{"class":936},"drizzle-orm",[860,5038,1170],{"class":874},[860,5040,849],{"class":874},[860,5042,3055],{"class":874},[860,5044,5045],{"class":878},"^0.36.4",[860,5047,1170],{"class":874},[860,5049,967],{"class":874},[860,5051,5052,5054,5057,5059,5061,5063,5066,5068],{"class":862,"line":4030},[860,5053,3045],{"class":874},[860,5055,5056],{"class":936},"nitro-cloudflare-dev",[860,5058,1170],{"class":874},[860,5060,849],{"class":874},[860,5062,3055],{"class":874},[860,5064,5065],{"class":878},"^0.2.2",[860,5067,1170],{"class":874},[860,5069,967],{"class":874},[860,5071,5072,5074,5076,5078,5080,5082,5085],{"class":862,"line":4036},[860,5073,3045],{"class":874},[860,5075,3538],{"class":936},[860,5077,1170],{"class":874},[860,5079,849],{"class":874},[860,5081,3055],{"class":874},[860,5083,5084],{"class":878},"^4.51.0",[860,5086,3397],{"class":874},[860,5088,5089],{"class":862,"line":4042},[860,5090,1008],{"class":874},[860,5092,5093],{"class":862,"line":4047},[860,5094,1014],{"class":874},[851,5096,5098],{"className":2523,"code":5097,"filename":3454,"language":2526,"meta":856,"style":856},"# Local Development Environment Variables\n# Copy from .dev.vars.example and fill in your values\n\nBETTER_AUTH_SECRET=your-secret-key-change-in-production\nBETTER_AUTH_URL=http://localhost:3000\n\nNUXT_TURNSTILE_SECRET_KEY=your-turnstile-secret-key\n\n# OAuth Providers (if enabled)\n# GOOGLE_CLIENT_ID=\n# GOOGLE_CLIENT_SECRET=\n\nNODE_ENV=development\n",[816,5099,5100,5105,5110,5114,5122,5130,5134,5142,5146,5151,5156,5161,5165],{"__ignoreMap":856},[860,5101,5102],{"class":862,"line":863},[860,5103,5104],{"class":1237},"# Local Development Environment Variables\n",[860,5106,5107],{"class":862,"line":945},[860,5108,5109],{"class":1237},"# Copy from .dev.vars.example and fill in your values\n",[860,5111,5112],{"class":862,"line":929},[860,5113,1232],{"emptyLinePlaceholder":526},[860,5115,5116,5118,5120],{"class":862,"line":970},[860,5117,3482],{"class":870},[860,5119,1052],{"class":874},[860,5121,3487],{"class":878},[860,5123,5124,5126,5128],{"class":862,"line":994},[860,5125,3492],{"class":870},[860,5127,1052],{"class":874},[860,5129,3497],{"class":878},[860,5131,5132],{"class":862,"line":1005},[860,5133,1232],{"emptyLinePlaceholder":526},[860,5135,5136,5138,5140],{"class":862,"line":1011},[860,5137,3506],{"class":870},[860,5139,1052],{"class":874},[860,5141,3511],{"class":878},[860,5143,5144],{"class":862,"line":1284},[860,5145,1232],{"emptyLinePlaceholder":526},[860,5147,5148],{"class":862,"line":1289},[860,5149,5150],{"class":1237},"# OAuth Providers (if enabled)\n",[860,5152,5153],{"class":862,"line":1317},[860,5154,5155],{"class":1237},"# GOOGLE_CLIENT_ID=\n",[860,5157,5158],{"class":862,"line":1356},[860,5159,5160],{"class":1237},"# GOOGLE_CLIENT_SECRET=\n",[860,5162,5163],{"class":862,"line":1369},[860,5164,1232],{"emptyLinePlaceholder":526},[860,5166,5167,5169,5171],{"class":862,"line":1146},[860,5168,3520],{"class":870},[860,5170,1052],{"class":874},[860,5172,3525],{"class":878},[851,5174,5177],{"className":853,"code":5175,"filename":5176,"language":855,"meta":856,"style":856},"import { drizzle } from 'drizzle-orm/d1'\nimport * as schema from '../database/schema'\n\n/**\n * Access D1 database with Drizzle ORM\n * Replaces hubDatabase() from NuxtHub\n */\nexport function useDrizzle() {\n  // Check multiple possible locations for the DB binding\n  const DB = process.env.DB || globalThis.__env__?.DB || globalThis.DB\n\n  if (!DB) {\n    throw new Error('D1 Database binding not found. Make sure DB is configured in wrangler.jsonc')\n  }\n\n  return drizzle(DB, { schema })\n}\n","server/utils/drizzle.ts",[816,5178,5179,5198,5220,5224,5228,5233,5238,5242,5256,5261,5303,5307,5323,5345,5349,5353,5375],{"__ignoreMap":856},[860,5180,5181,5183,5185,5187,5189,5191,5193,5196],{"class":862,"line":863},[860,5182,1966],{"class":1085},[860,5184,1213],{"class":874},[860,5186,2917],{"class":870},[860,5188,1855],{"class":874},[860,5190,1986],{"class":1085},[860,5192,1847],{"class":874},[860,5194,5195],{"class":878},"drizzle-orm/d1",[860,5197,1994],{"class":874},[860,5199,5200,5202,5205,5208,5210,5213,5215,5218],{"class":862,"line":945},[860,5201,1966],{"class":1085},[860,5203,5204],{"class":874}," *",[860,5206,5207],{"class":1085}," as",[860,5209,2927],{"class":870},[860,5211,5212],{"class":1085},"from",[860,5214,1847],{"class":874},[860,5216,5217],{"class":878},"../database/schema",[860,5219,1994],{"class":874},[860,5221,5222],{"class":862,"line":929},[860,5223,1232],{"emptyLinePlaceholder":526},[860,5225,5226],{"class":862,"line":970},[860,5227,3820],{"class":1237},[860,5229,5230],{"class":862,"line":994},[860,5231,5232],{"class":1237}," * Access D1 database with Drizzle ORM\n",[860,5234,5235],{"class":862,"line":1005},[860,5236,5237],{"class":1237}," * Replaces hubDatabase() from NuxtHub\n",[860,5239,5240],{"class":862,"line":1011},[860,5241,3835],{"class":1237},[860,5243,5244,5246,5249,5252,5254],{"class":862,"line":1284},[860,5245,2155],{"class":1085},[860,5247,5248],{"class":1045}," function",[860,5250,5251],{"class":866}," useDrizzle",[860,5253,1060],{"class":874},[860,5255,942],{"class":874},[860,5257,5258],{"class":862,"line":1289},[860,5259,5260],{"class":1237},"  // Check multiple possible locations for the DB binding\n",[860,5262,5263,5266,5269,5271,5273,5275,5277,5279,5282,5285,5287,5289,5291,5293,5295,5297,5299,5301],{"class":862,"line":1317},[860,5264,5265],{"class":1045},"  const",[860,5267,5268],{"class":870}," DB",[860,5270,1222],{"class":874},[860,5272,2874],{"class":870},[860,5274,759],{"class":874},[860,5276,2879],{"class":870},[860,5278,759],{"class":874},[860,5280,5281],{"class":870},"DB",[860,5283,5284],{"class":874}," ||",[860,5286,2890],{"class":870},[860,5288,759],{"class":874},[860,5290,2895],{"class":870},[860,5292,2898],{"class":874},[860,5294,5281],{"class":870},[860,5296,5284],{"class":874},[860,5298,2890],{"class":870},[860,5300,759],{"class":874},[860,5302,2909],{"class":870},[860,5304,5305],{"class":862,"line":1356},[860,5306,1232],{"emptyLinePlaceholder":526},[860,5308,5309,5312,5314,5316,5318,5321],{"class":862,"line":1369},[860,5310,5311],{"class":1085},"  if",[860,5313,1567],{"class":978},[860,5315,1804],{"class":874},[860,5317,5281],{"class":870},[860,5319,5320],{"class":978},") ",[860,5322,1815],{"class":874},[860,5324,5325,5328,5331,5334,5336,5338,5341,5343],{"class":862,"line":1146},[860,5326,5327],{"class":1085},"    throw",[860,5329,5330],{"class":874}," new",[860,5332,5333],{"class":866}," Error",[860,5335,871],{"class":978},[860,5337,875],{"class":874},[860,5339,5340],{"class":878},"D1 Database binding not found. Make sure DB is configured in wrangler.jsonc",[860,5342,875],{"class":874},[860,5344,1417],{"class":978},[860,5346,5347],{"class":862,"line":1147},[860,5348,1008],{"class":874},[860,5350,5351],{"class":862,"line":1148},[860,5352,1232],{"emptyLinePlaceholder":526},[860,5354,5355,5358,5360,5362,5364,5366,5368,5371,5373],{"class":862,"line":1434},[860,5356,5357],{"class":1085},"  return",[860,5359,2917],{"class":866},[860,5361,871],{"class":978},[860,5363,5281],{"class":870},[860,5365,1091],{"class":874},[860,5367,1213],{"class":874},[860,5369,5370],{"class":870}," schema",[860,5372,1855],{"class":874},[860,5374,1417],{"class":978},[860,5376,5377],{"class":862,"line":1443},[860,5378,1014],{"class":874},[851,5380,5383],{"className":853,"code":5381,"filename":5382,"language":855,"meta":856,"style":856},"/**\n * Access KV storage\n * Replaces hubKV() from NuxtHub\n */\nexport function useKV() {\n  // Check multiple possible locations for the KV binding\n  const KV = process.env.KV || globalThis.__env__?.KV || globalThis.KV\n\n  if (!KV) {\n    throw new Error('KV binding not found. Make sure KV is configured in wrangler.jsonc')\n  }\n\n  return KV\n}\n","server/utils/kv.ts",[816,5384,5385,5389,5394,5399,5403,5416,5421,5460,5464,5478,5497,5501,5505,5512],{"__ignoreMap":856},[860,5386,5387],{"class":862,"line":863},[860,5388,3820],{"class":1237},[860,5390,5391],{"class":862,"line":945},[860,5392,5393],{"class":1237}," * Access KV storage\n",[860,5395,5396],{"class":862,"line":929},[860,5397,5398],{"class":1237}," * Replaces hubKV() from NuxtHub\n",[860,5400,5401],{"class":862,"line":970},[860,5402,3835],{"class":1237},[860,5404,5405,5407,5409,5412,5414],{"class":862,"line":994},[860,5406,2155],{"class":1085},[860,5408,5248],{"class":1045},[860,5410,5411],{"class":866}," useKV",[860,5413,1060],{"class":874},[860,5415,942],{"class":874},[860,5417,5418],{"class":862,"line":1005},[860,5419,5420],{"class":1237},"  // Check multiple possible locations for the KV binding\n",[860,5422,5423,5425,5427,5429,5431,5433,5435,5437,5440,5442,5444,5446,5448,5450,5452,5454,5456,5458],{"class":862,"line":1011},[860,5424,5265],{"class":1045},[860,5426,2989],{"class":870},[860,5428,1222],{"class":874},[860,5430,2874],{"class":870},[860,5432,759],{"class":874},[860,5434,2879],{"class":870},[860,5436,759],{"class":874},[860,5438,5439],{"class":870},"KV",[860,5441,5284],{"class":874},[860,5443,2890],{"class":870},[860,5445,759],{"class":874},[860,5447,2895],{"class":870},[860,5449,2898],{"class":874},[860,5451,5439],{"class":870},[860,5453,5284],{"class":874},[860,5455,2890],{"class":870},[860,5457,759],{"class":874},[860,5459,2981],{"class":870},[860,5461,5462],{"class":862,"line":1284},[860,5463,1232],{"emptyLinePlaceholder":526},[860,5465,5466,5468,5470,5472,5474,5476],{"class":862,"line":1289},[860,5467,5311],{"class":1085},[860,5469,1567],{"class":978},[860,5471,1804],{"class":874},[860,5473,5439],{"class":870},[860,5475,5320],{"class":978},[860,5477,1815],{"class":874},[860,5479,5480,5482,5484,5486,5488,5490,5493,5495],{"class":862,"line":1317},[860,5481,5327],{"class":1085},[860,5483,5330],{"class":874},[860,5485,5333],{"class":866},[860,5487,871],{"class":978},[860,5489,875],{"class":874},[860,5491,5492],{"class":878},"KV binding not found. Make sure KV is configured in wrangler.jsonc",[860,5494,875],{"class":874},[860,5496,1417],{"class":978},[860,5498,5499],{"class":862,"line":1356},[860,5500,1008],{"class":874},[860,5502,5503],{"class":862,"line":1369},[860,5504,1232],{"emptyLinePlaceholder":526},[860,5506,5507,5509],{"class":862,"line":1146},[860,5508,5357],{"class":1085},[860,5510,5511],{"class":870}," KV\n",[860,5513,5514],{"class":862,"line":1147},[860,5515,1014],{"class":874},[851,5517,5520],{"className":853,"code":5518,"filename":5519,"language":855,"meta":856,"style":856},"import { setResponseStatus, setResponseHeader } from 'h3'\n\nexport default function (error: any, event: any) {\n  const statusCode = error.statusCode || error.status || 500\n  const statusMessage = error.statusMessage || error.message\n\n  // Set proper HTTP status code\n  setResponseStatus(event, statusCode, statusMessage)\n  setResponseHeader(event, 'Content-Type', 'application/json')\n\n  return {\n    statusCode,\n    statusMessage,\n    message: error.message || statusMessage\n  }\n}\n","server/error-handler.ts",[816,5521,5522,5546,5550,5581,5611,5635,5639,5644,5664,5693,5697,5703,5710,5717,5736,5740],{"__ignoreMap":856},[860,5523,5524,5526,5528,5531,5533,5536,5538,5540,5542,5544],{"class":862,"line":863},[860,5525,1966],{"class":1085},[860,5527,1213],{"class":874},[860,5529,5530],{"class":870}," setResponseStatus",[860,5532,1091],{"class":874},[860,5534,5535],{"class":870}," setResponseHeader",[860,5537,1855],{"class":874},[860,5539,1986],{"class":1085},[860,5541,1847],{"class":874},[860,5543,1479],{"class":878},[860,5545,1994],{"class":874},[860,5547,5548],{"class":862,"line":945},[860,5549,1232],{"emptyLinePlaceholder":526},[860,5551,5552,5554,5556,5558,5560,5563,5565,5568,5570,5573,5575,5577,5579],{"class":862,"line":929},[860,5553,2155],{"class":1085},[860,5555,2246],{"class":1085},[860,5557,5248],{"class":1045},[860,5559,1567],{"class":874},[860,5561,5562],{"class":1570},"error",[860,5564,849],{"class":874},[860,5566,5567],{"class":936}," any",[860,5569,1091],{"class":874},[860,5571,5572],{"class":1570}," event",[860,5574,849],{"class":874},[860,5576,5567],{"class":936},[860,5578,884],{"class":874},[860,5580,942],{"class":874},[860,5582,5583,5585,5587,5589,5592,5594,5597,5599,5601,5603,5606,5608],{"class":862,"line":970},[860,5584,5265],{"class":1045},[860,5586,1831],{"class":870},[860,5588,1222],{"class":874},[860,5590,5591],{"class":870}," error",[860,5593,759],{"class":874},[860,5595,5596],{"class":870},"statusCode",[860,5598,5284],{"class":874},[860,5600,5591],{"class":870},[860,5602,759],{"class":874},[860,5604,5605],{"class":870},"status",[860,5607,5284],{"class":874},[860,5609,5610],{"class":1836}," 500\n",[860,5612,5613,5615,5617,5619,5621,5623,5626,5628,5630,5632],{"class":862,"line":994},[860,5614,5265],{"class":1045},[860,5616,1842],{"class":870},[860,5618,1222],{"class":874},[860,5620,5591],{"class":870},[860,5622,759],{"class":874},[860,5624,5625],{"class":870},"statusMessage",[860,5627,5284],{"class":874},[860,5629,5591],{"class":870},[860,5631,759],{"class":874},[860,5633,5634],{"class":870},"message\n",[860,5636,5637],{"class":862,"line":1005},[860,5638,1232],{"emptyLinePlaceholder":526},[860,5640,5641],{"class":862,"line":1011},[860,5642,5643],{"class":1237},"  // Set proper HTTP status code\n",[860,5645,5646,5649,5651,5654,5656,5658,5660,5662],{"class":862,"line":1284},[860,5647,5648],{"class":866},"  setResponseStatus",[860,5650,871],{"class":978},[860,5652,5653],{"class":870},"event",[860,5655,1091],{"class":874},[860,5657,1831],{"class":870},[860,5659,1091],{"class":874},[860,5661,1842],{"class":870},[860,5663,1417],{"class":978},[860,5665,5666,5669,5671,5673,5675,5677,5680,5682,5684,5686,5689,5691],{"class":862,"line":1289},[860,5667,5668],{"class":866},"  setResponseHeader",[860,5670,871],{"class":978},[860,5672,5653],{"class":870},[860,5674,1091],{"class":874},[860,5676,1847],{"class":874},[860,5678,5679],{"class":878},"Content-Type",[860,5681,875],{"class":874},[860,5683,1091],{"class":874},[860,5685,1847],{"class":874},[860,5687,5688],{"class":878},"application/json",[860,5690,875],{"class":874},[860,5692,1417],{"class":978},[860,5694,5695],{"class":862,"line":1317},[860,5696,1232],{"emptyLinePlaceholder":526},[860,5698,5699,5701],{"class":862,"line":1356},[860,5700,5357],{"class":1085},[860,5702,942],{"class":874},[860,5704,5705,5708],{"class":862,"line":1369},[860,5706,5707],{"class":870},"    statusCode",[860,5709,967],{"class":874},[860,5711,5712,5715],{"class":862,"line":1146},[860,5713,5714],{"class":870},"    statusMessage",[860,5716,967],{"class":874},[860,5718,5719,5722,5724,5726,5728,5731,5733],{"class":862,"line":1147},[860,5720,5721],{"class":978},"    message",[860,5723,849],{"class":874},[860,5725,5591],{"class":870},[860,5727,759],{"class":874},[860,5729,5730],{"class":870},"message",[860,5732,5284],{"class":874},[860,5734,5735],{"class":870}," statusMessage\n",[860,5737,5738],{"class":862,"line":1148},[860,5739,1008],{"class":874},[860,5741,5742],{"class":862,"line":1434},[860,5743,1014],{"class":874},[851,5745,5750],{"className":5746,"code":5747,"filename":5748,"language":5749,"meta":856,"style":856},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#!/usr/bin/env node\n\n/**\n * Cloudflare Setup Script\n * Creates D1, KV, and other resources interactively\n */\n\nimport { execSync } from 'child_process'\nimport { readFileSync, writeFileSync } from 'fs'\nimport { join, dirname } from 'path'\nimport { fileURLToPath } from 'url'\nimport * as readline from 'readline'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\nconst projectRoot = join(__dirname, '..')\n\nconst colors = {\n  reset: '\\x1b[0m',\n  bright: '\\x1b[1m',\n  green: '\\x1b[32m',\n  yellow: '\\x1b[33m',\n  blue: '\\x1b[34m',\n  red: '\\x1b[31m',\n  cyan: '\\x1b[36m'\n}\n\nconst D1_REGIONS = [\n  { code: 'weur', name: 'Western Europe', recommended: true },\n  { code: 'eeur', name: 'Eastern Europe', recommended: false },\n  { code: 'apac', name: 'Asia Pacific', recommended: false },\n  { code: 'wnam', name: 'Western North America (US)', recommended: false },\n  { code: 'enam', name: 'Eastern North America (US)', recommended: false }\n]\n\nfunction log(message, color = colors.reset) {\n  console.log(`${color}${message}${colors.reset}`)\n}\n\nfunction execCommand(command, options = {}) {\n  try {\n    return execSync(command, {\n      encoding: 'utf-8',\n      stdio: options.silent ? 'pipe' : 'inherit',\n      cwd: projectRoot,\n      ...options\n    })\n  } catch (error) {\n    if (options.ignoreError) return null\n    throw error\n  }\n}\n\nasync function promptUser(question) {\n  const rl = readline.createInterface({\n    input: process.stdin,\n    output: process.stdout\n  })\n\n  return new Promise(resolve => {\n    rl.question(question, answer => {\n      rl.close()\n      resolve(answer.trim())\n    })\n  })\n}\n\nasync function selectRegion() {\n  log('\\n🌍 Select D1 Database Region:', colors.blue + colors.bright)\n  log('   Tip: Choose closest to your users\\n', colors.yellow)\n\n  D1_REGIONS.forEach((region, index) => {\n    const recommended = region.recommended ? ' ⭐ (Recommended)' : ''\n    log(`   ${index + 1}. ${region.name} (${region.code})${recommended}`, colors.cyan)\n  })\n\n  log('')\n  const answer = await promptUser('Select region (1-5) or Enter for default [1]: ')\n  const selection = answer === '' ? 1 : parseInt(answer)\n\n  if (isNaN(selection) || selection \u003C 1 || selection > D1_REGIONS.length) {\n    log('⚠️  Invalid selection, using default', colors.yellow)\n    return D1_REGIONS[0]\n  }\n\n  const selected = D1_REGIONS[selection - 1]\n  log(`✅ Selected: ${selected.name} (${selected.code})`, colors.green)\n  return selected\n}\n\nasync function createD1Database(region) {\n  log(`\\n📊 Creating D1 Database in ${region.name}...`, colors.blue)\n\n  try {\n    const locationFlag = `--location=${region.code}`\n    const output = execCommand(\n      `wrangler d1 create my-database ${locationFlag}`,\n      { silent: true }\n    )\n\n    const match = output.match(/database_id\\s*=\\s*\"([^\"]+)\"/)\n    if (match && match[1]) {\n      log(`✅ D1 Database created!`, colors.green)\n      log(`   Database ID: ${match[1]}`, colors.bright)\n      return match[1]\n    }\n    return null\n  } catch (error) {\n    log('❌ Failed to create D1 database', colors.red)\n    return null\n  }\n}\n\nfunction createKVNamespace(name, preview = false) {\n  const suffix = preview ? ' (Preview)' : ''\n  log(`\\n🗄️  Creating KV Namespace: ${name}${suffix}...`, colors.blue)\n\n  try {\n    const previewFlag = preview ? '--preview' : ''\n    const output = execCommand(\n      `wrangler kv namespace create ${name} ${previewFlag}`,\n      { silent: true }\n    )\n\n    const match = output.match(/id\\s*=\\s*\"([^\"]+)\"/)\n    if (match && match[1]) {\n      log(`✅ KV Namespace created!`, colors.green)\n      log(`   ID: ${match[1]}`, colors.bright)\n      return match[1]\n    }\n    return null\n  } catch (error) {\n    log('❌ Failed to create KV namespace', colors.red)\n    return null\n  }\n}\n\nfunction updateWranglerConfig(databaseId, kvId, kvPreviewId) {\n  log('\\n📝 Updating wrangler.jsonc...', colors.blue)\n\n  try {\n    const wranglerPath = join(projectRoot, 'wrangler.jsonc')\n    let content = readFileSync(wranglerPath, 'utf-8')\n\n    if (databaseId) {\n      content = content.replace(\n        /\"database_id\":\\s*\"YOUR_D1_DATABASE_ID_HERE\"/,\n        `\"database_id\": \"${databaseId}\"`\n      )\n    }\n\n    if (kvId) {\n      content = content.replace(\n        /\"id\":\\s*\"YOUR_KV_NAMESPACE_ID_HERE\"/,\n        `\"id\": \"${kvId}\"`\n      )\n    }\n\n    if (kvPreviewId) {\n      content = content.replace(\n        /\"preview_id\":\\s*\"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"/,\n        `\"preview_id\": \"${kvPreviewId}\"`\n      )\n    }\n\n    writeFileSync(wranglerPath, content, 'utf-8')\n    log('✅ wrangler.jsonc updated!', colors.green)\n    return true\n  } catch (error) {\n    log('❌ Failed to update wrangler.jsonc', colors.red)\n    return false\n  }\n}\n\nasync function main() {\n  log('\\n' + '='.repeat(60), colors.bright)\n  log('🚀 Cloudflare Setup', colors.blue + colors.bright)\n  log('='.repeat(60) + '\\n', colors.bright)\n\n  const region = await selectRegion()\n  const databaseId = await createD1Database(region)\n  const kvId = createKVNamespace('my-kv', false)\n  const kvPreviewId = createKVNamespace('my-kv', true)\n\n  updateWranglerConfig(databaseId, kvId, kvPreviewId)\n\n  log('\\n🎉 Setup Complete!', colors.green + colors.bright)\n  log('\\nNext Steps:', colors.blue)\n  log('1. pnpm run db:migrate', colors.bright)\n  log('2. pnpm run db:seed:local', colors.bright)\n  log('3. pnpm run deploy\\n', colors.bright)\n}\n\nmain().catch(error => {\n  log('\\n❌ Setup failed', colors.red)\n  log(error.stack, colors.red)\n  process.exit(1)\n})\n","scripts/setup-cloudflare.mjs","javascript",[816,5751,5752,5757,5761,5765,5770,5775,5779,5783,5803,5828,5852,5872,5892,5896,5921,5935,5960,5964,5975,5994,6012,6030,6048,6066,6084,6100,6104,6108,6119,6162,6200,6238,6276,6315,6319,6323,6354,6390,6394,6398,6422,6429,6443,6459,6495,6507,6515,6522,6537,6559,6566,6570,6574,6578,6597,6618,6634,6648,6654,6658,6676,6698,6710,6728,6734,6740,6744,6748,6761,6798,6825,6830,6859,6890,6959,6966,6971,6983,7007,7039,7044,7089,7113,7128,7133,7138,7161,7211,7219,7224,7229,7247,7286,7291,7298,7325,7339,7357,7372,7378,7383,7431,7455,7480,7513,7527,7532,7539,7554,7579,7586,7591,7596,7601,7626,7651,7690,7695,7702,7727,7740,7764,7777,7782,7787,7829,7850,7874,7906,7919,7924,7931,7946,7970,7977,7982,7987,7992,8019,8045,8050,8057,8084,8112,8117,8130,8146,8164,8184,8190,8195,8200,8214,8229,8246,8264,8269,8274,8279,8293,8308,8325,8343,8348,8353,8358,8382,8406,8413,8428,8452,8460,8465,8470,8475,8489,8532,8564,8605,8610,8625,8645,8671,8696,8701,8721,8726,8760,8786,8810,8834,8860,8865,8870,8891,8917,8941,8958],{"__ignoreMap":856},[860,5753,5754],{"class":862,"line":863},[860,5755,5756],{"class":1237},"#!/usr/bin/env node\n",[860,5758,5759],{"class":862,"line":945},[860,5760,1232],{"emptyLinePlaceholder":526},[860,5762,5763],{"class":862,"line":929},[860,5764,3820],{"class":1237},[860,5766,5767],{"class":862,"line":970},[860,5768,5769],{"class":1237}," * Cloudflare Setup Script\n",[860,5771,5772],{"class":862,"line":994},[860,5773,5774],{"class":1237}," * Creates D1, KV, and other resources interactively\n",[860,5776,5777],{"class":862,"line":1005},[860,5778,3835],{"class":1237},[860,5780,5781],{"class":862,"line":1011},[860,5782,1232],{"emptyLinePlaceholder":526},[860,5784,5785,5787,5789,5792,5794,5796,5798,5801],{"class":862,"line":1284},[860,5786,1966],{"class":1085},[860,5788,1213],{"class":874},[860,5790,5791],{"class":870}," execSync",[860,5793,1855],{"class":874},[860,5795,1986],{"class":1085},[860,5797,1847],{"class":874},[860,5799,5800],{"class":878},"child_process",[860,5802,1994],{"class":874},[860,5804,5805,5807,5809,5812,5814,5817,5819,5821,5823,5826],{"class":862,"line":1289},[860,5806,1966],{"class":1085},[860,5808,1213],{"class":874},[860,5810,5811],{"class":870}," readFileSync",[860,5813,1091],{"class":874},[860,5815,5816],{"class":870}," writeFileSync",[860,5818,1855],{"class":874},[860,5820,1986],{"class":1085},[860,5822,1847],{"class":874},[860,5824,5825],{"class":878},"fs",[860,5827,1994],{"class":874},[860,5829,5830,5832,5834,5837,5839,5842,5844,5846,5848,5850],{"class":862,"line":1317},[860,5831,1966],{"class":1085},[860,5833,1213],{"class":874},[860,5835,5836],{"class":870}," join",[860,5838,1091],{"class":874},[860,5840,5841],{"class":870}," dirname",[860,5843,1855],{"class":874},[860,5845,1986],{"class":1085},[860,5847,1847],{"class":874},[860,5849,889],{"class":878},[860,5851,1994],{"class":874},[860,5853,5854,5856,5858,5861,5863,5865,5867,5870],{"class":862,"line":1356},[860,5855,1966],{"class":1085},[860,5857,1213],{"class":874},[860,5859,5860],{"class":870}," fileURLToPath",[860,5862,1855],{"class":874},[860,5864,1986],{"class":1085},[860,5866,1847],{"class":874},[860,5868,5869],{"class":878},"url",[860,5871,1994],{"class":874},[860,5873,5874,5876,5878,5880,5883,5885,5887,5890],{"class":862,"line":1369},[860,5875,1966],{"class":1085},[860,5877,5204],{"class":874},[860,5879,5207],{"class":1085},[860,5881,5882],{"class":870}," readline ",[860,5884,5212],{"class":1085},[860,5886,1847],{"class":874},[860,5888,5889],{"class":878},"readline",[860,5891,1994],{"class":874},[860,5893,5894],{"class":862,"line":1146},[860,5895,1232],{"emptyLinePlaceholder":526},[860,5897,5898,5900,5903,5905,5907,5909,5911,5913,5916,5918],{"class":862,"line":1147},[860,5899,1046],{"class":1045},[860,5901,5902],{"class":870}," __filename ",[860,5904,1052],{"class":874},[860,5906,5860],{"class":866},[860,5908,871],{"class":870},[860,5910,1966],{"class":1085},[860,5912,759],{"class":874},[860,5914,5915],{"class":870},"meta",[860,5917,759],{"class":874},[860,5919,5920],{"class":870},"url)\n",[860,5922,5923,5925,5928,5930,5932],{"class":862,"line":1148},[860,5924,1046],{"class":1045},[860,5926,5927],{"class":870}," __dirname ",[860,5929,1052],{"class":874},[860,5931,5841],{"class":866},[860,5933,5934],{"class":870},"(__filename)\n",[860,5936,5937,5939,5942,5944,5946,5949,5951,5953,5956,5958],{"class":862,"line":1434},[860,5938,1046],{"class":1045},[860,5940,5941],{"class":870}," projectRoot ",[860,5943,1052],{"class":874},[860,5945,5836],{"class":866},[860,5947,5948],{"class":870},"(__dirname",[860,5950,1091],{"class":874},[860,5952,1847],{"class":874},[860,5954,5955],{"class":878},"..",[860,5957,875],{"class":874},[860,5959,1417],{"class":870},[860,5961,5962],{"class":862,"line":1443},[860,5963,1232],{"emptyLinePlaceholder":526},[860,5965,5966,5968,5971,5973],{"class":862,"line":1448},[860,5967,1046],{"class":1045},[860,5969,5970],{"class":870}," colors ",[860,5972,1052],{"class":874},[860,5974,942],{"class":874},[860,5976,5977,5980,5982,5984,5987,5990,5992],{"class":862,"line":1457},[860,5978,5979],{"class":978},"  reset",[860,5981,849],{"class":874},[860,5983,1847],{"class":874},[860,5985,5986],{"class":870},"\\x1b",[860,5988,5989],{"class":878},"[0m",[860,5991,875],{"class":874},[860,5993,967],{"class":874},[860,5995,5996,5999,6001,6003,6005,6008,6010],{"class":862,"line":1462},[860,5997,5998],{"class":978},"  bright",[860,6000,849],{"class":874},[860,6002,1847],{"class":874},[860,6004,5986],{"class":870},[860,6006,6007],{"class":878},"[1m",[860,6009,875],{"class":874},[860,6011,967],{"class":874},[860,6013,6014,6017,6019,6021,6023,6026,6028],{"class":862,"line":1467},[860,6015,6016],{"class":978},"  green",[860,6018,849],{"class":874},[860,6020,1847],{"class":874},[860,6022,5986],{"class":870},[860,6024,6025],{"class":878},"[32m",[860,6027,875],{"class":874},[860,6029,967],{"class":874},[860,6031,6032,6035,6037,6039,6041,6044,6046],{"class":862,"line":1885},[860,6033,6034],{"class":978},"  yellow",[860,6036,849],{"class":874},[860,6038,1847],{"class":874},[860,6040,5986],{"class":870},[860,6042,6043],{"class":878},"[33m",[860,6045,875],{"class":874},[860,6047,967],{"class":874},[860,6049,6050,6053,6055,6057,6059,6062,6064],{"class":862,"line":1896},[860,6051,6052],{"class":978},"  blue",[860,6054,849],{"class":874},[860,6056,1847],{"class":874},[860,6058,5986],{"class":870},[860,6060,6061],{"class":878},"[34m",[860,6063,875],{"class":874},[860,6065,967],{"class":874},[860,6067,6068,6071,6073,6075,6077,6080,6082],{"class":862,"line":1917},[860,6069,6070],{"class":978},"  red",[860,6072,849],{"class":874},[860,6074,1847],{"class":874},[860,6076,5986],{"class":870},[860,6078,6079],{"class":878},"[31m",[860,6081,875],{"class":874},[860,6083,967],{"class":874},[860,6085,6086,6089,6091,6093,6095,6098],{"class":862,"line":1939},[860,6087,6088],{"class":978},"  cyan",[860,6090,849],{"class":874},[860,6092,1847],{"class":874},[860,6094,5986],{"class":870},[860,6096,6097],{"class":878},"[36m",[860,6099,1994],{"class":874},[860,6101,6102],{"class":862,"line":1949},[860,6103,1014],{"class":874},[860,6105,6106],{"class":862,"line":3940},[860,6107,1232],{"emptyLinePlaceholder":526},[860,6109,6110,6112,6115,6117],{"class":862,"line":3945},[860,6111,1046],{"class":1045},[860,6113,6114],{"class":870}," D1_REGIONS ",[860,6116,1052],{"class":874},[860,6118,2639],{"class":870},[860,6120,6121,6124,6127,6129,6131,6134,6136,6138,6141,6143,6145,6148,6150,6152,6155,6157,6159],{"class":862,"line":3950},[860,6122,6123],{"class":874},"  {",[860,6125,6126],{"class":978}," code",[860,6128,849],{"class":874},[860,6130,1847],{"class":874},[860,6132,6133],{"class":878},"weur",[860,6135,875],{"class":874},[860,6137,1091],{"class":874},[860,6139,6140],{"class":978}," name",[860,6142,849],{"class":874},[860,6144,1847],{"class":874},[860,6146,6147],{"class":878},"Western Europe",[860,6149,875],{"class":874},[860,6151,1091],{"class":874},[860,6153,6154],{"class":978}," recommended",[860,6156,849],{"class":874},[860,6158,2764],{"class":963},[860,6160,6161],{"class":874}," },\n",[860,6163,6164,6166,6168,6170,6172,6175,6177,6179,6181,6183,6185,6188,6190,6192,6194,6196,6198],{"class":862,"line":3956},[860,6165,6123],{"class":874},[860,6167,6126],{"class":978},[860,6169,849],{"class":874},[860,6171,1847],{"class":874},[860,6173,6174],{"class":878},"eeur",[860,6176,875],{"class":874},[860,6178,1091],{"class":874},[860,6180,6140],{"class":978},[860,6182,849],{"class":874},[860,6184,1847],{"class":874},[860,6186,6187],{"class":878},"Eastern Europe",[860,6189,875],{"class":874},[860,6191,1091],{"class":874},[860,6193,6154],{"class":978},[860,6195,849],{"class":874},[860,6197,964],{"class":963},[860,6199,6161],{"class":874},[860,6201,6202,6204,6206,6208,6210,6213,6215,6217,6219,6221,6223,6226,6228,6230,6232,6234,6236],{"class":862,"line":3962},[860,6203,6123],{"class":874},[860,6205,6126],{"class":978},[860,6207,849],{"class":874},[860,6209,1847],{"class":874},[860,6211,6212],{"class":878},"apac",[860,6214,875],{"class":874},[860,6216,1091],{"class":874},[860,6218,6140],{"class":978},[860,6220,849],{"class":874},[860,6222,1847],{"class":874},[860,6224,6225],{"class":878},"Asia Pacific",[860,6227,875],{"class":874},[860,6229,1091],{"class":874},[860,6231,6154],{"class":978},[860,6233,849],{"class":874},[860,6235,964],{"class":963},[860,6237,6161],{"class":874},[860,6239,6240,6242,6244,6246,6248,6251,6253,6255,6257,6259,6261,6264,6266,6268,6270,6272,6274],{"class":862,"line":3967},[860,6241,6123],{"class":874},[860,6243,6126],{"class":978},[860,6245,849],{"class":874},[860,6247,1847],{"class":874},[860,6249,6250],{"class":878},"wnam",[860,6252,875],{"class":874},[860,6254,1091],{"class":874},[860,6256,6140],{"class":978},[860,6258,849],{"class":874},[860,6260,1847],{"class":874},[860,6262,6263],{"class":878},"Western North America (US)",[860,6265,875],{"class":874},[860,6267,1091],{"class":874},[860,6269,6154],{"class":978},[860,6271,849],{"class":874},[860,6273,964],{"class":963},[860,6275,6161],{"class":874},[860,6277,6278,6280,6282,6284,6286,6289,6291,6293,6295,6297,6299,6302,6304,6306,6308,6310,6312],{"class":862,"line":3973},[860,6279,6123],{"class":874},[860,6281,6126],{"class":978},[860,6283,849],{"class":874},[860,6285,1847],{"class":874},[860,6287,6288],{"class":878},"enam",[860,6290,875],{"class":874},[860,6292,1091],{"class":874},[860,6294,6140],{"class":978},[860,6296,849],{"class":874},[860,6298,1847],{"class":874},[860,6300,6301],{"class":878},"Eastern North America (US)",[860,6303,875],{"class":874},[860,6305,1091],{"class":874},[860,6307,6154],{"class":978},[860,6309,849],{"class":874},[860,6311,964],{"class":963},[860,6313,6314],{"class":874}," }\n",[860,6316,6317],{"class":862,"line":3979},[860,6318,4337],{"class":870},[860,6320,6321],{"class":862,"line":3985},[860,6322,1232],{"emptyLinePlaceholder":526},[860,6324,6325,6328,6331,6333,6335,6337,6340,6342,6345,6347,6350,6352],{"class":862,"line":3991},[860,6326,6327],{"class":1045},"function",[860,6329,6330],{"class":866}," log",[860,6332,871],{"class":874},[860,6334,5730],{"class":1570},[860,6336,1091],{"class":874},[860,6338,6339],{"class":1570}," color",[860,6341,1222],{"class":874},[860,6343,6344],{"class":870}," colors",[860,6346,759],{"class":874},[860,6348,6349],{"class":870},"reset",[860,6351,884],{"class":874},[860,6353,942],{"class":874},[860,6355,6356,6359,6361,6364,6366,6369,6372,6375,6377,6379,6382,6384,6386,6388],{"class":862,"line":3997},[860,6357,6358],{"class":870},"  console",[860,6360,759],{"class":874},[860,6362,6363],{"class":866},"log",[860,6365,871],{"class":978},[860,6367,6368],{"class":874},"`${",[860,6370,6371],{"class":870},"color",[860,6373,6374],{"class":874},"}${",[860,6376,5730],{"class":870},[860,6378,6374],{"class":874},[860,6380,6381],{"class":870},"colors",[860,6383,759],{"class":874},[860,6385,6349],{"class":870},[860,6387,1351],{"class":874},[860,6389,1417],{"class":978},[860,6391,6392],{"class":862,"line":4003},[860,6393,1014],{"class":874},[860,6395,6396],{"class":862,"line":4008},[860,6397,1232],{"emptyLinePlaceholder":526},[860,6399,6400,6402,6405,6407,6410,6412,6415,6417,6420],{"class":862,"line":4014},[860,6401,6327],{"class":1045},[860,6403,6404],{"class":866}," execCommand",[860,6406,871],{"class":874},[860,6408,6409],{"class":1570},"command",[860,6411,1091],{"class":874},[860,6413,6414],{"class":1570}," options",[860,6416,1222],{"class":874},[860,6418,6419],{"class":874}," {})",[860,6421,942],{"class":874},[860,6423,6424,6427],{"class":862,"line":4019},[860,6425,6426],{"class":1085},"  try",[860,6428,942],{"class":874},[860,6430,6431,6433,6435,6437,6439,6441],{"class":862,"line":4024},[860,6432,1451],{"class":1085},[860,6434,5791],{"class":866},[860,6436,871],{"class":978},[860,6438,6409],{"class":870},[860,6440,1091],{"class":874},[860,6442,942],{"class":874},[860,6444,6445,6448,6450,6452,6455,6457],{"class":862,"line":4030},[860,6446,6447],{"class":978},"      encoding",[860,6449,849],{"class":874},[860,6451,1847],{"class":874},[860,6453,6454],{"class":878},"utf-8",[860,6456,875],{"class":874},[860,6458,967],{"class":874},[860,6460,6461,6464,6466,6468,6470,6473,6476,6478,6481,6483,6486,6488,6491,6493],{"class":862,"line":4036},[860,6462,6463],{"class":978},"      stdio",[860,6465,849],{"class":874},[860,6467,6414],{"class":870},[860,6469,759],{"class":874},[860,6471,6472],{"class":870},"silent",[860,6474,6475],{"class":874}," ?",[860,6477,1847],{"class":874},[860,6479,6480],{"class":878},"pipe",[860,6482,875],{"class":874},[860,6484,6485],{"class":874}," :",[860,6487,1847],{"class":874},[860,6489,6490],{"class":878},"inherit",[860,6492,875],{"class":874},[860,6494,967],{"class":874},[860,6496,6497,6500,6502,6505],{"class":862,"line":4042},[860,6498,6499],{"class":978},"      cwd",[860,6501,849],{"class":874},[860,6503,6504],{"class":870}," projectRoot",[860,6506,967],{"class":874},[860,6508,6509,6512],{"class":862,"line":4047},[860,6510,6511],{"class":874},"      ...",[860,6513,6514],{"class":870},"options\n",[860,6516,6517,6520],{"class":862,"line":4053},[860,6518,6519],{"class":874},"    }",[860,6521,1417],{"class":978},[860,6523,6524,6526,6529,6531,6533,6535],{"class":862,"line":4058},[860,6525,2108],{"class":874},[860,6527,6528],{"class":1085}," catch",[860,6530,1567],{"class":978},[860,6532,5562],{"class":870},[860,6534,5320],{"class":978},[860,6536,1815],{"class":874},[860,6538,6539,6542,6544,6547,6549,6552,6554,6556],{"class":862,"line":4064},[860,6540,6541],{"class":1085},"    if",[860,6543,1567],{"class":978},[860,6545,6546],{"class":870},"options",[860,6548,759],{"class":874},[860,6550,6551],{"class":870},"ignoreError",[860,6553,5320],{"class":978},[860,6555,2914],{"class":1085},[860,6557,6558],{"class":874}," null\n",[860,6560,6561,6563],{"class":862,"line":4070},[860,6562,5327],{"class":1085},[860,6564,6565],{"class":870}," error\n",[860,6567,6568],{"class":862,"line":4076},[860,6569,1008],{"class":874},[860,6571,6572],{"class":862,"line":4081},[860,6573,1014],{"class":874},[860,6575,6576],{"class":862,"line":4086},[860,6577,1232],{"emptyLinePlaceholder":526},[860,6579,6580,6583,6585,6588,6590,6593,6595],{"class":862,"line":4091},[860,6581,6582],{"class":1045},"async",[860,6584,5248],{"class":1045},[860,6586,6587],{"class":866}," promptUser",[860,6589,871],{"class":874},[860,6591,6592],{"class":1570},"question",[860,6594,884],{"class":874},[860,6596,942],{"class":874},[860,6598,6599,6601,6604,6606,6609,6611,6614,6616],{"class":862,"line":4096},[860,6600,5265],{"class":1045},[860,6602,6603],{"class":870}," rl",[860,6605,1222],{"class":874},[860,6607,6608],{"class":870}," readline",[860,6610,759],{"class":874},[860,6612,6613],{"class":866},"createInterface",[860,6615,871],{"class":978},[860,6617,1815],{"class":874},[860,6619,6620,6623,6625,6627,6629,6632],{"class":862,"line":4102},[860,6621,6622],{"class":978},"    input",[860,6624,849],{"class":874},[860,6626,2874],{"class":870},[860,6628,759],{"class":874},[860,6630,6631],{"class":870},"stdin",[860,6633,967],{"class":874},[860,6635,6636,6639,6641,6643,6645],{"class":862,"line":4108},[860,6637,6638],{"class":978},"    output",[860,6640,849],{"class":874},[860,6642,2874],{"class":870},[860,6644,759],{"class":874},[860,6646,6647],{"class":870},"stdout\n",[860,6649,6650,6652],{"class":862,"line":4114},[860,6651,2108],{"class":874},[860,6653,1417],{"class":978},[860,6655,6656],{"class":862,"line":4119},[860,6657,1232],{"emptyLinePlaceholder":526},[860,6659,6660,6662,6664,6667,6669,6672,6674],{"class":862,"line":4125},[860,6661,5357],{"class":1085},[860,6663,5330],{"class":874},[860,6665,6666],{"class":936}," Promise",[860,6668,871],{"class":978},[860,6670,6671],{"class":1570},"resolve",[860,6673,1063],{"class":1045},[860,6675,942],{"class":874},[860,6677,6678,6681,6683,6685,6687,6689,6691,6694,6696],{"class":862,"line":4131},[860,6679,6680],{"class":870},"    rl",[860,6682,759],{"class":874},[860,6684,6592],{"class":866},[860,6686,871],{"class":978},[860,6688,6592],{"class":870},[860,6690,1091],{"class":874},[860,6692,6693],{"class":1570}," answer",[860,6695,1063],{"class":1045},[860,6697,942],{"class":874},[860,6699,6700,6703,6705,6708],{"class":862,"line":4136},[860,6701,6702],{"class":870},"      rl",[860,6704,759],{"class":874},[860,6706,6707],{"class":866},"close",[860,6709,905],{"class":978},[860,6711,6712,6715,6717,6720,6722,6725],{"class":862,"line":4141},[860,6713,6714],{"class":866},"      resolve",[860,6716,871],{"class":978},[860,6718,6719],{"class":870},"answer",[860,6721,759],{"class":874},[860,6723,6724],{"class":866},"trim",[860,6726,6727],{"class":978},"())\n",[860,6729,6730,6732],{"class":862,"line":4146},[860,6731,6519],{"class":874},[860,6733,1417],{"class":978},[860,6735,6736,6738],{"class":862,"line":4152},[860,6737,2108],{"class":874},[860,6739,1417],{"class":978},[860,6741,6742],{"class":862,"line":4157},[860,6743,1014],{"class":874},[860,6745,6746],{"class":862,"line":4163},[860,6747,1232],{"emptyLinePlaceholder":526},[860,6749,6750,6752,6754,6757,6759],{"class":862,"line":4169},[860,6751,6582],{"class":1045},[860,6753,5248],{"class":1045},[860,6755,6756],{"class":866}," selectRegion",[860,6758,1060],{"class":874},[860,6760,942],{"class":874},[860,6762,6763,6766,6768,6770,6773,6776,6778,6780,6782,6784,6786,6789,6791,6793,6796],{"class":862,"line":4174},[860,6764,6765],{"class":866},"  log",[860,6767,871],{"class":978},[860,6769,875],{"class":874},[860,6771,6772],{"class":870},"\\n",[860,6774,6775],{"class":878},"🌍 Select D1 Database Region:",[860,6777,875],{"class":874},[860,6779,1091],{"class":874},[860,6781,6344],{"class":870},[860,6783,759],{"class":874},[860,6785,484],{"class":870},[860,6787,6788],{"class":874}," +",[860,6790,6344],{"class":870},[860,6792,759],{"class":874},[860,6794,6795],{"class":870},"bright",[860,6797,1417],{"class":978},[860,6799,6801,6803,6805,6807,6810,6812,6814,6816,6818,6820,6823],{"class":862,"line":6800},70,[860,6802,6765],{"class":866},[860,6804,871],{"class":978},[860,6806,875],{"class":874},[860,6808,6809],{"class":878},"   Tip: Choose closest to your users",[860,6811,6772],{"class":870},[860,6813,875],{"class":874},[860,6815,1091],{"class":874},[860,6817,6344],{"class":870},[860,6819,759],{"class":874},[860,6821,6822],{"class":870},"yellow",[860,6824,1417],{"class":978},[860,6826,6828],{"class":862,"line":6827},71,[860,6829,1232],{"emptyLinePlaceholder":526},[860,6831,6833,6836,6838,6841,6843,6845,6848,6850,6853,6855,6857],{"class":862,"line":6832},72,[860,6834,6835],{"class":870},"  D1_REGIONS",[860,6837,759],{"class":874},[860,6839,6840],{"class":866},"forEach",[860,6842,871],{"class":978},[860,6844,871],{"class":874},[860,6846,6847],{"class":1570},"region",[860,6849,1091],{"class":874},[860,6851,6852],{"class":1570}," index",[860,6854,884],{"class":874},[860,6856,1063],{"class":1045},[860,6858,942],{"class":874},[860,6860,6862,6864,6866,6868,6871,6873,6876,6878,6880,6883,6885,6887],{"class":862,"line":6861},73,[860,6863,1378],{"class":1045},[860,6865,6154],{"class":870},[860,6867,1222],{"class":874},[860,6869,6870],{"class":870}," region",[860,6872,759],{"class":874},[860,6874,6875],{"class":870},"recommended",[860,6877,6475],{"class":874},[860,6879,1847],{"class":874},[860,6881,6882],{"class":878}," ⭐ (Recommended)",[860,6884,875],{"class":874},[860,6886,6485],{"class":874},[860,6888,6889],{"class":874}," ''\n",[860,6891,6893,6896,6898,6901,6904,6907,6910,6913,6915,6918,6920,6922,6924,6926,6928,6930,6932,6934,6936,6938,6940,6942,6944,6946,6948,6950,6952,6954,6957],{"class":862,"line":6892},74,[860,6894,6895],{"class":866},"    log",[860,6897,871],{"class":978},[860,6899,6900],{"class":874},"`",[860,6902,6903],{"class":874},"   ${",[860,6905,6906],{"class":870},"index ",[860,6908,6909],{"class":874},"+",[860,6911,6912],{"class":1836}," 1",[860,6914,1219],{"class":874},[860,6916,6917],{"class":878},". ",[860,6919,1326],{"class":874},[860,6921,6847],{"class":870},[860,6923,759],{"class":874},[860,6925,4429],{"class":870},[860,6927,1219],{"class":874},[860,6929,1567],{"class":878},[860,6931,1326],{"class":874},[860,6933,6847],{"class":870},[860,6935,759],{"class":874},[860,6937,816],{"class":870},[860,6939,1219],{"class":874},[860,6941,884],{"class":878},[860,6943,1326],{"class":874},[860,6945,6875],{"class":870},[860,6947,1351],{"class":874},[860,6949,1091],{"class":874},[860,6951,6344],{"class":870},[860,6953,759],{"class":874},[860,6955,6956],{"class":870},"cyan",[860,6958,1417],{"class":978},[860,6960,6962,6964],{"class":862,"line":6961},75,[860,6963,2108],{"class":874},[860,6965,1417],{"class":978},[860,6967,6969],{"class":862,"line":6968},76,[860,6970,1232],{"emptyLinePlaceholder":526},[860,6972,6974,6976,6978,6981],{"class":862,"line":6973},77,[860,6975,6765],{"class":866},[860,6977,871],{"class":978},[860,6979,6980],{"class":874},"''",[860,6982,1417],{"class":978},[860,6984,6986,6988,6990,6992,6994,6996,6998,7000,7003,7005],{"class":862,"line":6985},78,[860,6987,5265],{"class":1045},[860,6989,6693],{"class":870},[860,6991,1222],{"class":874},[860,6993,1308],{"class":1085},[860,6995,6587],{"class":866},[860,6997,871],{"class":978},[860,6999,875],{"class":874},[860,7001,7002],{"class":878},"Select region (1-5) or Enter for default [1]: ",[860,7004,875],{"class":874},[860,7006,1417],{"class":978},[860,7008,7010,7012,7015,7017,7019,7022,7024,7026,7028,7030,7033,7035,7037],{"class":862,"line":7009},79,[860,7011,5265],{"class":1045},[860,7013,7014],{"class":870}," selection",[860,7016,1222],{"class":874},[860,7018,6693],{"class":870},[860,7020,7021],{"class":874}," ===",[860,7023,1094],{"class":874},[860,7025,6475],{"class":874},[860,7027,6912],{"class":1836},[860,7029,6485],{"class":874},[860,7031,7032],{"class":866}," parseInt",[860,7034,871],{"class":978},[860,7036,6719],{"class":870},[860,7038,1417],{"class":978},[860,7040,7042],{"class":862,"line":7041},80,[860,7043,1232],{"emptyLinePlaceholder":526},[860,7045,7047,7049,7051,7054,7056,7059,7061,7063,7065,7068,7070,7072,7074,7077,7080,7082,7085,7087],{"class":862,"line":7046},81,[860,7048,5311],{"class":1085},[860,7050,1567],{"class":978},[860,7052,7053],{"class":866},"isNaN",[860,7055,871],{"class":978},[860,7057,7058],{"class":870},"selection",[860,7060,5320],{"class":978},[860,7062,2887],{"class":874},[860,7064,7014],{"class":870},[860,7066,7067],{"class":874}," \u003C",[860,7069,6912],{"class":1836},[860,7071,5284],{"class":874},[860,7073,7014],{"class":870},[860,7075,7076],{"class":874}," >",[860,7078,7079],{"class":870}," D1_REGIONS",[860,7081,759],{"class":874},[860,7083,7084],{"class":870},"length",[860,7086,5320],{"class":978},[860,7088,1815],{"class":874},[860,7090,7092,7094,7096,7098,7101,7103,7105,7107,7109,7111],{"class":862,"line":7091},82,[860,7093,6895],{"class":866},[860,7095,871],{"class":978},[860,7097,875],{"class":874},[860,7099,7100],{"class":878},"⚠️  Invalid selection, using default",[860,7102,875],{"class":874},[860,7104,1091],{"class":874},[860,7106,6344],{"class":870},[860,7108,759],{"class":874},[860,7110,6822],{"class":870},[860,7112,1417],{"class":978},[860,7114,7116,7118,7120,7123,7126],{"class":862,"line":7115},83,[860,7117,1451],{"class":1085},[860,7119,7079],{"class":870},[860,7121,7122],{"class":978},"[",[860,7124,7125],{"class":1836},"0",[860,7127,4337],{"class":978},[860,7129,7131],{"class":862,"line":7130},84,[860,7132,1008],{"class":874},[860,7134,7136],{"class":862,"line":7135},85,[860,7137,1232],{"emptyLinePlaceholder":526},[860,7139,7141,7143,7146,7148,7150,7152,7154,7157,7159],{"class":862,"line":7140},86,[860,7142,5265],{"class":1045},[860,7144,7145],{"class":870}," selected",[860,7147,1222],{"class":874},[860,7149,7079],{"class":870},[860,7151,7122],{"class":978},[860,7153,7058],{"class":870},[860,7155,7156],{"class":874}," -",[860,7158,6912],{"class":1836},[860,7160,4337],{"class":978},[860,7162,7164,7166,7168,7170,7173,7175,7178,7180,7182,7184,7186,7188,7190,7192,7194,7196,7198,7200,7202,7204,7206,7209],{"class":862,"line":7163},87,[860,7165,6765],{"class":866},[860,7167,871],{"class":978},[860,7169,6900],{"class":874},[860,7171,7172],{"class":878},"✅ Selected: ",[860,7174,1326],{"class":874},[860,7176,7177],{"class":870},"selected",[860,7179,759],{"class":874},[860,7181,4429],{"class":870},[860,7183,1219],{"class":874},[860,7185,1567],{"class":878},[860,7187,1326],{"class":874},[860,7189,7177],{"class":870},[860,7191,759],{"class":874},[860,7193,816],{"class":870},[860,7195,1219],{"class":874},[860,7197,884],{"class":878},[860,7199,6900],{"class":874},[860,7201,1091],{"class":874},[860,7203,6344],{"class":870},[860,7205,759],{"class":874},[860,7207,7208],{"class":870},"green",[860,7210,1417],{"class":978},[860,7212,7214,7216],{"class":862,"line":7213},88,[860,7215,5357],{"class":1085},[860,7217,7218],{"class":870}," selected\n",[860,7220,7222],{"class":862,"line":7221},89,[860,7223,1014],{"class":874},[860,7225,7227],{"class":862,"line":7226},90,[860,7228,1232],{"emptyLinePlaceholder":526},[860,7230,7232,7234,7236,7239,7241,7243,7245],{"class":862,"line":7231},91,[860,7233,6582],{"class":1045},[860,7235,5248],{"class":1045},[860,7237,7238],{"class":866}," createD1Database",[860,7240,871],{"class":874},[860,7242,6847],{"class":1570},[860,7244,884],{"class":874},[860,7246,942],{"class":874},[860,7248,7250,7252,7254,7256,7258,7261,7263,7265,7267,7269,7271,7274,7276,7278,7280,7282,7284],{"class":862,"line":7249},92,[860,7251,6765],{"class":866},[860,7253,871],{"class":978},[860,7255,6900],{"class":874},[860,7257,6772],{"class":870},[860,7259,7260],{"class":878},"📊 Creating D1 Database in ",[860,7262,1326],{"class":874},[860,7264,6847],{"class":870},[860,7266,759],{"class":874},[860,7268,4429],{"class":870},[860,7270,1219],{"class":874},[860,7272,7273],{"class":878},"...",[860,7275,6900],{"class":874},[860,7277,1091],{"class":874},[860,7279,6344],{"class":870},[860,7281,759],{"class":874},[860,7283,484],{"class":870},[860,7285,1417],{"class":978},[860,7287,7289],{"class":862,"line":7288},93,[860,7290,1232],{"emptyLinePlaceholder":526},[860,7292,7294,7296],{"class":862,"line":7293},94,[860,7295,6426],{"class":1085},[860,7297,942],{"class":874},[860,7299,7301,7303,7306,7308,7311,7314,7316,7318,7320,7322],{"class":862,"line":7300},95,[860,7302,1378],{"class":1045},[860,7304,7305],{"class":870}," locationFlag",[860,7307,1222],{"class":874},[860,7309,7310],{"class":874}," `",[860,7312,7313],{"class":878},"--location=",[860,7315,1326],{"class":874},[860,7317,6847],{"class":870},[860,7319,759],{"class":874},[860,7321,816],{"class":870},[860,7323,7324],{"class":874},"}`\n",[860,7326,7328,7330,7333,7335,7337],{"class":862,"line":7327},96,[860,7329,1378],{"class":1045},[860,7331,7332],{"class":870}," output",[860,7334,1222],{"class":874},[860,7336,6404],{"class":866},[860,7338,1314],{"class":978},[860,7340,7342,7345,7348,7350,7353,7355],{"class":862,"line":7341},97,[860,7343,7344],{"class":874},"      `",[860,7346,7347],{"class":878},"wrangler d1 create my-database ",[860,7349,1326],{"class":874},[860,7351,7352],{"class":870},"locationFlag",[860,7354,1351],{"class":874},[860,7356,967],{"class":874},[860,7358,7360,7363,7366,7368,7370],{"class":862,"line":7359},98,[860,7361,7362],{"class":874},"      {",[860,7364,7365],{"class":978}," silent",[860,7367,849],{"class":874},[860,7369,2764],{"class":963},[860,7371,6314],{"class":874},[860,7373,7375],{"class":862,"line":7374},99,[860,7376,7377],{"class":978},"    )\n",[860,7379,7381],{"class":862,"line":7380},100,[860,7382,1232],{"emptyLinePlaceholder":526},[860,7384,7386,7388,7391,7393,7395,7397,7400,7402,7404,7407,7410,7413,7415,7417,7420,7422,7425,7427,7429],{"class":862,"line":7385},101,[860,7387,1378],{"class":1045},[860,7389,7390],{"class":870}," match",[860,7392,1222],{"class":874},[860,7394,7332],{"class":870},[860,7396,759],{"class":874},[860,7398,7399],{"class":866},"match",[860,7401,871],{"class":978},[860,7403,566],{"class":874},[860,7405,7406],{"class":878},"database_id\\s",[860,7408,7409],{"class":874},"*",[860,7411,7412],{"class":878},"=\\s",[860,7414,7409],{"class":874},[860,7416,1170],{"class":878},[860,7418,7419],{"class":874},"([^",[860,7421,1170],{"class":878},[860,7423,7424],{"class":874},"]+)",[860,7426,1170],{"class":878},[860,7428,566],{"class":874},[860,7430,1417],{"class":978},[860,7432,7434,7436,7438,7440,7443,7445,7447,7450,7453],{"class":862,"line":7433},102,[860,7435,6541],{"class":1085},[860,7437,1567],{"class":978},[860,7439,7399],{"class":870},[860,7441,7442],{"class":874}," &&",[860,7444,7390],{"class":870},[860,7446,7122],{"class":978},[860,7448,7449],{"class":1836},"1",[860,7451,7452],{"class":978},"]) ",[860,7454,1815],{"class":874},[860,7456,7458,7461,7463,7465,7468,7470,7472,7474,7476,7478],{"class":862,"line":7457},103,[860,7459,7460],{"class":866},"      log",[860,7462,871],{"class":978},[860,7464,6900],{"class":874},[860,7466,7467],{"class":878},"✅ D1 Database created!",[860,7469,6900],{"class":874},[860,7471,1091],{"class":874},[860,7473,6344],{"class":870},[860,7475,759],{"class":874},[860,7477,7208],{"class":870},[860,7479,1417],{"class":978},[860,7481,7483,7485,7487,7489,7492,7494,7497,7499,7501,7503,7505,7507,7509,7511],{"class":862,"line":7482},104,[860,7484,7460],{"class":866},[860,7486,871],{"class":978},[860,7488,6900],{"class":874},[860,7490,7491],{"class":878},"   Database ID: ",[860,7493,1326],{"class":874},[860,7495,7496],{"class":870},"match[",[860,7498,7449],{"class":1836},[860,7500,989],{"class":870},[860,7502,1351],{"class":874},[860,7504,1091],{"class":874},[860,7506,6344],{"class":870},[860,7508,759],{"class":874},[860,7510,6795],{"class":870},[860,7512,1417],{"class":978},[860,7514,7516,7519,7521,7523,7525],{"class":862,"line":7515},105,[860,7517,7518],{"class":1085},"      return",[860,7520,7390],{"class":870},[860,7522,7122],{"class":978},[860,7524,7449],{"class":1836},[860,7526,4337],{"class":978},[860,7528,7530],{"class":862,"line":7529},106,[860,7531,2380],{"class":874},[860,7533,7535,7537],{"class":862,"line":7534},107,[860,7536,1451],{"class":1085},[860,7538,6558],{"class":874},[860,7540,7542,7544,7546,7548,7550,7552],{"class":862,"line":7541},108,[860,7543,2108],{"class":874},[860,7545,6528],{"class":1085},[860,7547,1567],{"class":978},[860,7549,5562],{"class":870},[860,7551,5320],{"class":978},[860,7553,1815],{"class":874},[860,7555,7557,7559,7561,7563,7566,7568,7570,7572,7574,7577],{"class":862,"line":7556},109,[860,7558,6895],{"class":866},[860,7560,871],{"class":978},[860,7562,875],{"class":874},[860,7564,7565],{"class":878},"❌ Failed to create D1 database",[860,7567,875],{"class":874},[860,7569,1091],{"class":874},[860,7571,6344],{"class":870},[860,7573,759],{"class":874},[860,7575,7576],{"class":870},"red",[860,7578,1417],{"class":978},[860,7580,7582,7584],{"class":862,"line":7581},110,[860,7583,1451],{"class":1085},[860,7585,6558],{"class":874},[860,7587,7589],{"class":862,"line":7588},111,[860,7590,1008],{"class":874},[860,7592,7594],{"class":862,"line":7593},112,[860,7595,1014],{"class":874},[860,7597,7599],{"class":862,"line":7598},113,[860,7600,1232],{"emptyLinePlaceholder":526},[860,7602,7604,7606,7609,7611,7613,7615,7618,7620,7622,7624],{"class":862,"line":7603},114,[860,7605,6327],{"class":1045},[860,7607,7608],{"class":866}," createKVNamespace",[860,7610,871],{"class":874},[860,7612,4429],{"class":1570},[860,7614,1091],{"class":874},[860,7616,7617],{"class":1570}," preview",[860,7619,1222],{"class":874},[860,7621,964],{"class":963},[860,7623,884],{"class":874},[860,7625,942],{"class":874},[860,7627,7629,7631,7634,7636,7638,7640,7642,7645,7647,7649],{"class":862,"line":7628},115,[860,7630,5265],{"class":1045},[860,7632,7633],{"class":870}," suffix",[860,7635,1222],{"class":874},[860,7637,7617],{"class":870},[860,7639,6475],{"class":874},[860,7641,1847],{"class":874},[860,7643,7644],{"class":878}," (Preview)",[860,7646,875],{"class":874},[860,7648,6485],{"class":874},[860,7650,6889],{"class":874},[860,7652,7654,7656,7658,7660,7662,7665,7667,7669,7671,7674,7676,7678,7680,7682,7684,7686,7688],{"class":862,"line":7653},116,[860,7655,6765],{"class":866},[860,7657,871],{"class":978},[860,7659,6900],{"class":874},[860,7661,6772],{"class":870},[860,7663,7664],{"class":878},"🗄️  Creating KV Namespace: ",[860,7666,1326],{"class":874},[860,7668,4429],{"class":870},[860,7670,6374],{"class":874},[860,7672,7673],{"class":870},"suffix",[860,7675,1219],{"class":874},[860,7677,7273],{"class":878},[860,7679,6900],{"class":874},[860,7681,1091],{"class":874},[860,7683,6344],{"class":870},[860,7685,759],{"class":874},[860,7687,484],{"class":870},[860,7689,1417],{"class":978},[860,7691,7693],{"class":862,"line":7692},117,[860,7694,1232],{"emptyLinePlaceholder":526},[860,7696,7698,7700],{"class":862,"line":7697},118,[860,7699,6426],{"class":1085},[860,7701,942],{"class":874},[860,7703,7705,7707,7710,7712,7714,7716,7718,7721,7723,7725],{"class":862,"line":7704},119,[860,7706,1378],{"class":1045},[860,7708,7709],{"class":870}," previewFlag",[860,7711,1222],{"class":874},[860,7713,7617],{"class":870},[860,7715,6475],{"class":874},[860,7717,1847],{"class":874},[860,7719,7720],{"class":878},"--preview",[860,7722,875],{"class":874},[860,7724,6485],{"class":874},[860,7726,6889],{"class":874},[860,7728,7730,7732,7734,7736,7738],{"class":862,"line":7729},120,[860,7731,1378],{"class":1045},[860,7733,7332],{"class":870},[860,7735,1222],{"class":874},[860,7737,6404],{"class":866},[860,7739,1314],{"class":978},[860,7741,7743,7745,7748,7750,7752,7754,7757,7760,7762],{"class":862,"line":7742},121,[860,7744,7344],{"class":874},[860,7746,7747],{"class":878},"wrangler kv namespace create ",[860,7749,1326],{"class":874},[860,7751,4429],{"class":870},[860,7753,1219],{"class":874},[860,7755,7756],{"class":874}," ${",[860,7758,7759],{"class":870},"previewFlag",[860,7761,1351],{"class":874},[860,7763,967],{"class":874},[860,7765,7767,7769,7771,7773,7775],{"class":862,"line":7766},122,[860,7768,7362],{"class":874},[860,7770,7365],{"class":978},[860,7772,849],{"class":874},[860,7774,2764],{"class":963},[860,7776,6314],{"class":874},[860,7778,7780],{"class":862,"line":7779},123,[860,7781,7377],{"class":978},[860,7783,7785],{"class":862,"line":7784},124,[860,7786,1232],{"emptyLinePlaceholder":526},[860,7788,7790,7792,7794,7796,7798,7800,7802,7804,7806,7809,7811,7813,7815,7817,7819,7821,7823,7825,7827],{"class":862,"line":7789},125,[860,7791,1378],{"class":1045},[860,7793,7390],{"class":870},[860,7795,1222],{"class":874},[860,7797,7332],{"class":870},[860,7799,759],{"class":874},[860,7801,7399],{"class":866},[860,7803,871],{"class":978},[860,7805,566],{"class":874},[860,7807,7808],{"class":878},"id\\s",[860,7810,7409],{"class":874},[860,7812,7412],{"class":878},[860,7814,7409],{"class":874},[860,7816,1170],{"class":878},[860,7818,7419],{"class":874},[860,7820,1170],{"class":878},[860,7822,7424],{"class":874},[860,7824,1170],{"class":878},[860,7826,566],{"class":874},[860,7828,1417],{"class":978},[860,7830,7832,7834,7836,7838,7840,7842,7844,7846,7848],{"class":862,"line":7831},126,[860,7833,6541],{"class":1085},[860,7835,1567],{"class":978},[860,7837,7399],{"class":870},[860,7839,7442],{"class":874},[860,7841,7390],{"class":870},[860,7843,7122],{"class":978},[860,7845,7449],{"class":1836},[860,7847,7452],{"class":978},[860,7849,1815],{"class":874},[860,7851,7853,7855,7857,7859,7862,7864,7866,7868,7870,7872],{"class":862,"line":7852},127,[860,7854,7460],{"class":866},[860,7856,871],{"class":978},[860,7858,6900],{"class":874},[860,7860,7861],{"class":878},"✅ KV Namespace created!",[860,7863,6900],{"class":874},[860,7865,1091],{"class":874},[860,7867,6344],{"class":870},[860,7869,759],{"class":874},[860,7871,7208],{"class":870},[860,7873,1417],{"class":978},[860,7875,7877,7879,7881,7883,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904],{"class":862,"line":7876},128,[860,7878,7460],{"class":866},[860,7880,871],{"class":978},[860,7882,6900],{"class":874},[860,7884,7885],{"class":878},"   ID: ",[860,7887,1326],{"class":874},[860,7889,7496],{"class":870},[860,7891,7449],{"class":1836},[860,7893,989],{"class":870},[860,7895,1351],{"class":874},[860,7897,1091],{"class":874},[860,7899,6344],{"class":870},[860,7901,759],{"class":874},[860,7903,6795],{"class":870},[860,7905,1417],{"class":978},[860,7907,7909,7911,7913,7915,7917],{"class":862,"line":7908},129,[860,7910,7518],{"class":1085},[860,7912,7390],{"class":870},[860,7914,7122],{"class":978},[860,7916,7449],{"class":1836},[860,7918,4337],{"class":978},[860,7920,7922],{"class":862,"line":7921},130,[860,7923,2380],{"class":874},[860,7925,7927,7929],{"class":862,"line":7926},131,[860,7928,1451],{"class":1085},[860,7930,6558],{"class":874},[860,7932,7934,7936,7938,7940,7942,7944],{"class":862,"line":7933},132,[860,7935,2108],{"class":874},[860,7937,6528],{"class":1085},[860,7939,1567],{"class":978},[860,7941,5562],{"class":870},[860,7943,5320],{"class":978},[860,7945,1815],{"class":874},[860,7947,7949,7951,7953,7955,7958,7960,7962,7964,7966,7968],{"class":862,"line":7948},133,[860,7950,6895],{"class":866},[860,7952,871],{"class":978},[860,7954,875],{"class":874},[860,7956,7957],{"class":878},"❌ Failed to create KV namespace",[860,7959,875],{"class":874},[860,7961,1091],{"class":874},[860,7963,6344],{"class":870},[860,7965,759],{"class":874},[860,7967,7576],{"class":870},[860,7969,1417],{"class":978},[860,7971,7973,7975],{"class":862,"line":7972},134,[860,7974,1451],{"class":1085},[860,7976,6558],{"class":874},[860,7978,7980],{"class":862,"line":7979},135,[860,7981,1008],{"class":874},[860,7983,7985],{"class":862,"line":7984},136,[860,7986,1014],{"class":874},[860,7988,7990],{"class":862,"line":7989},137,[860,7991,1232],{"emptyLinePlaceholder":526},[860,7993,7995,7997,8000,8002,8005,8007,8010,8012,8015,8017],{"class":862,"line":7994},138,[860,7996,6327],{"class":1045},[860,7998,7999],{"class":866}," updateWranglerConfig",[860,8001,871],{"class":874},[860,8003,8004],{"class":1570},"databaseId",[860,8006,1091],{"class":874},[860,8008,8009],{"class":1570}," kvId",[860,8011,1091],{"class":874},[860,8013,8014],{"class":1570}," kvPreviewId",[860,8016,884],{"class":874},[860,8018,942],{"class":874},[860,8020,8022,8024,8026,8028,8030,8033,8035,8037,8039,8041,8043],{"class":862,"line":8021},139,[860,8023,6765],{"class":866},[860,8025,871],{"class":978},[860,8027,875],{"class":874},[860,8029,6772],{"class":870},[860,8031,8032],{"class":878},"📝 Updating wrangler.jsonc...",[860,8034,875],{"class":874},[860,8036,1091],{"class":874},[860,8038,6344],{"class":870},[860,8040,759],{"class":874},[860,8042,484],{"class":870},[860,8044,1417],{"class":978},[860,8046,8048],{"class":862,"line":8047},140,[860,8049,1232],{"emptyLinePlaceholder":526},[860,8051,8053,8055],{"class":862,"line":8052},141,[860,8054,6426],{"class":1085},[860,8056,942],{"class":874},[860,8058,8060,8062,8065,8067,8069,8071,8074,8076,8078,8080,8082],{"class":862,"line":8059},142,[860,8061,1378],{"class":1045},[860,8063,8064],{"class":870}," wranglerPath",[860,8066,1222],{"class":874},[860,8068,5836],{"class":866},[860,8070,871],{"class":978},[860,8072,8073],{"class":870},"projectRoot",[860,8075,1091],{"class":874},[860,8077,1847],{"class":874},[860,8079,2607],{"class":878},[860,8081,875],{"class":874},[860,8083,1417],{"class":978},[860,8085,8087,8090,8093,8095,8097,8099,8102,8104,8106,8108,8110],{"class":862,"line":8086},143,[860,8088,8089],{"class":1045},"    let",[860,8091,8092],{"class":870}," content",[860,8094,1222],{"class":874},[860,8096,5811],{"class":866},[860,8098,871],{"class":978},[860,8100,8101],{"class":870},"wranglerPath",[860,8103,1091],{"class":874},[860,8105,1847],{"class":874},[860,8107,6454],{"class":878},[860,8109,875],{"class":874},[860,8111,1417],{"class":978},[860,8113,8115],{"class":862,"line":8114},144,[860,8116,1232],{"emptyLinePlaceholder":526},[860,8118,8120,8122,8124,8126,8128],{"class":862,"line":8119},145,[860,8121,6541],{"class":1085},[860,8123,1567],{"class":978},[860,8125,8004],{"class":870},[860,8127,5320],{"class":978},[860,8129,1815],{"class":874},[860,8131,8133,8136,8138,8140,8142,8144],{"class":862,"line":8132},146,[860,8134,8135],{"class":870},"      content",[860,8137,1222],{"class":874},[860,8139,8092],{"class":870},[860,8141,759],{"class":874},[860,8143,1075],{"class":866},[860,8145,1314],{"class":978},[860,8147,8149,8152,8155,8157,8160,8162],{"class":862,"line":8148},147,[860,8150,8151],{"class":874},"        /",[860,8153,8154],{"class":878},"\"database_id\":\\s",[860,8156,7409],{"class":874},[860,8158,8159],{"class":878},"\"YOUR_D1_DATABASE_ID_HERE\"",[860,8161,566],{"class":874},[860,8163,967],{"class":874},[860,8165,8167,8170,8173,8175,8177,8179,8181],{"class":862,"line":8166},148,[860,8168,8169],{"class":874},"        `",[860,8171,8172],{"class":878},"\"database_id\": \"",[860,8174,1326],{"class":874},[860,8176,8004],{"class":870},[860,8178,1219],{"class":874},[860,8180,1170],{"class":878},[860,8182,8183],{"class":874},"`\n",[860,8185,8187],{"class":862,"line":8186},149,[860,8188,8189],{"class":978},"      )\n",[860,8191,8193],{"class":862,"line":8192},150,[860,8194,2380],{"class":874},[860,8196,8198],{"class":862,"line":8197},151,[860,8199,1232],{"emptyLinePlaceholder":526},[860,8201,8203,8205,8207,8210,8212],{"class":862,"line":8202},152,[860,8204,6541],{"class":1085},[860,8206,1567],{"class":978},[860,8208,8209],{"class":870},"kvId",[860,8211,5320],{"class":978},[860,8213,1815],{"class":874},[860,8215,8217,8219,8221,8223,8225,8227],{"class":862,"line":8216},153,[860,8218,8135],{"class":870},[860,8220,1222],{"class":874},[860,8222,8092],{"class":870},[860,8224,759],{"class":874},[860,8226,1075],{"class":866},[860,8228,1314],{"class":978},[860,8230,8232,8234,8237,8239,8242,8244],{"class":862,"line":8231},154,[860,8233,8151],{"class":874},[860,8235,8236],{"class":878},"\"id\":\\s",[860,8238,7409],{"class":874},[860,8240,8241],{"class":878},"\"YOUR_KV_NAMESPACE_ID_HERE\"",[860,8243,566],{"class":874},[860,8245,967],{"class":874},[860,8247,8249,8251,8254,8256,8258,8260,8262],{"class":862,"line":8248},155,[860,8250,8169],{"class":874},[860,8252,8253],{"class":878},"\"id\": \"",[860,8255,1326],{"class":874},[860,8257,8209],{"class":870},[860,8259,1219],{"class":874},[860,8261,1170],{"class":878},[860,8263,8183],{"class":874},[860,8265,8267],{"class":862,"line":8266},156,[860,8268,8189],{"class":978},[860,8270,8272],{"class":862,"line":8271},157,[860,8273,2380],{"class":874},[860,8275,8277],{"class":862,"line":8276},158,[860,8278,1232],{"emptyLinePlaceholder":526},[860,8280,8282,8284,8286,8289,8291],{"class":862,"line":8281},159,[860,8283,6541],{"class":1085},[860,8285,1567],{"class":978},[860,8287,8288],{"class":870},"kvPreviewId",[860,8290,5320],{"class":978},[860,8292,1815],{"class":874},[860,8294,8296,8298,8300,8302,8304,8306],{"class":862,"line":8295},160,[860,8297,8135],{"class":870},[860,8299,1222],{"class":874},[860,8301,8092],{"class":870},[860,8303,759],{"class":874},[860,8305,1075],{"class":866},[860,8307,1314],{"class":978},[860,8309,8311,8313,8316,8318,8321,8323],{"class":862,"line":8310},161,[860,8312,8151],{"class":874},[860,8314,8315],{"class":878},"\"preview_id\":\\s",[860,8317,7409],{"class":874},[860,8319,8320],{"class":878},"\"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"",[860,8322,566],{"class":874},[860,8324,967],{"class":874},[860,8326,8328,8330,8333,8335,8337,8339,8341],{"class":862,"line":8327},162,[860,8329,8169],{"class":874},[860,8331,8332],{"class":878},"\"preview_id\": \"",[860,8334,1326],{"class":874},[860,8336,8288],{"class":870},[860,8338,1219],{"class":874},[860,8340,1170],{"class":878},[860,8342,8183],{"class":874},[860,8344,8346],{"class":862,"line":8345},163,[860,8347,8189],{"class":978},[860,8349,8351],{"class":862,"line":8350},164,[860,8352,2380],{"class":874},[860,8354,8356],{"class":862,"line":8355},165,[860,8357,1232],{"emptyLinePlaceholder":526},[860,8359,8361,8364,8366,8368,8370,8372,8374,8376,8378,8380],{"class":862,"line":8360},166,[860,8362,8363],{"class":866},"    writeFileSync",[860,8365,871],{"class":978},[860,8367,8101],{"class":870},[860,8369,1091],{"class":874},[860,8371,8092],{"class":870},[860,8373,1091],{"class":874},[860,8375,1847],{"class":874},[860,8377,6454],{"class":878},[860,8379,875],{"class":874},[860,8381,1417],{"class":978},[860,8383,8385,8387,8389,8391,8394,8396,8398,8400,8402,8404],{"class":862,"line":8384},167,[860,8386,6895],{"class":866},[860,8388,871],{"class":978},[860,8390,875],{"class":874},[860,8392,8393],{"class":878},"✅ wrangler.jsonc updated!",[860,8395,875],{"class":874},[860,8397,1091],{"class":874},[860,8399,6344],{"class":870},[860,8401,759],{"class":874},[860,8403,7208],{"class":870},[860,8405,1417],{"class":978},[860,8407,8409,8411],{"class":862,"line":8408},168,[860,8410,1451],{"class":1085},[860,8412,1002],{"class":963},[860,8414,8416,8418,8420,8422,8424,8426],{"class":862,"line":8415},169,[860,8417,2108],{"class":874},[860,8419,6528],{"class":1085},[860,8421,1567],{"class":978},[860,8423,5562],{"class":870},[860,8425,5320],{"class":978},[860,8427,1815],{"class":874},[860,8429,8431,8433,8435,8437,8440,8442,8444,8446,8448,8450],{"class":862,"line":8430},170,[860,8432,6895],{"class":866},[860,8434,871],{"class":978},[860,8436,875],{"class":874},[860,8438,8439],{"class":878},"❌ Failed to update wrangler.jsonc",[860,8441,875],{"class":874},[860,8443,1091],{"class":874},[860,8445,6344],{"class":870},[860,8447,759],{"class":874},[860,8449,7576],{"class":870},[860,8451,1417],{"class":978},[860,8453,8455,8457],{"class":862,"line":8454},171,[860,8456,1451],{"class":1085},[860,8458,8459],{"class":963}," false\n",[860,8461,8463],{"class":862,"line":8462},172,[860,8464,1008],{"class":874},[860,8466,8468],{"class":862,"line":8467},173,[860,8469,1014],{"class":874},[860,8471,8473],{"class":862,"line":8472},174,[860,8474,1232],{"emptyLinePlaceholder":526},[860,8476,8478,8480,8482,8485,8487],{"class":862,"line":8477},175,[860,8479,6582],{"class":1045},[860,8481,5248],{"class":1045},[860,8483,8484],{"class":866}," main",[860,8486,1060],{"class":874},[860,8488,942],{"class":874},[860,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512,8515,8517,8520,8522,8524,8526,8528,8530],{"class":862,"line":8491},176,[860,8493,6765],{"class":866},[860,8495,871],{"class":978},[860,8497,875],{"class":874},[860,8499,6772],{"class":870},[860,8501,875],{"class":874},[860,8503,6788],{"class":874},[860,8505,1847],{"class":874},[860,8507,1052],{"class":878},[860,8509,875],{"class":874},[860,8511,759],{"class":874},[860,8513,8514],{"class":866},"repeat",[860,8516,871],{"class":978},[860,8518,8519],{"class":1836},"60",[860,8521,884],{"class":978},[860,8523,1091],{"class":874},[860,8525,6344],{"class":870},[860,8527,759],{"class":874},[860,8529,6795],{"class":870},[860,8531,1417],{"class":978},[860,8533,8535,8537,8539,8541,8544,8546,8548,8550,8552,8554,8556,8558,8560,8562],{"class":862,"line":8534},177,[860,8536,6765],{"class":866},[860,8538,871],{"class":978},[860,8540,875],{"class":874},[860,8542,8543],{"class":878},"🚀 Cloudflare Setup",[860,8545,875],{"class":874},[860,8547,1091],{"class":874},[860,8549,6344],{"class":870},[860,8551,759],{"class":874},[860,8553,484],{"class":870},[860,8555,6788],{"class":874},[860,8557,6344],{"class":870},[860,8559,759],{"class":874},[860,8561,6795],{"class":870},[860,8563,1417],{"class":978},[860,8565,8567,8569,8571,8573,8575,8577,8579,8581,8583,8585,8587,8589,8591,8593,8595,8597,8599,8601,8603],{"class":862,"line":8566},178,[860,8568,6765],{"class":866},[860,8570,871],{"class":978},[860,8572,875],{"class":874},[860,8574,1052],{"class":878},[860,8576,875],{"class":874},[860,8578,759],{"class":874},[860,8580,8514],{"class":866},[860,8582,871],{"class":978},[860,8584,8519],{"class":1836},[860,8586,5320],{"class":978},[860,8588,6909],{"class":874},[860,8590,1847],{"class":874},[860,8592,6772],{"class":870},[860,8594,875],{"class":874},[860,8596,1091],{"class":874},[860,8598,6344],{"class":870},[860,8600,759],{"class":874},[860,8602,6795],{"class":870},[860,8604,1417],{"class":978},[860,8606,8608],{"class":862,"line":8607},179,[860,8609,1232],{"emptyLinePlaceholder":526},[860,8611,8613,8615,8617,8619,8621,8623],{"class":862,"line":8612},180,[860,8614,5265],{"class":1045},[860,8616,6870],{"class":870},[860,8618,1222],{"class":874},[860,8620,1308],{"class":1085},[860,8622,6756],{"class":866},[860,8624,905],{"class":978},[860,8626,8628,8630,8633,8635,8637,8639,8641,8643],{"class":862,"line":8627},181,[860,8629,5265],{"class":1045},[860,8631,8632],{"class":870}," databaseId",[860,8634,1222],{"class":874},[860,8636,1308],{"class":1085},[860,8638,7238],{"class":866},[860,8640,871],{"class":978},[860,8642,6847],{"class":870},[860,8644,1417],{"class":978},[860,8646,8648,8650,8652,8654,8656,8658,8660,8663,8665,8667,8669],{"class":862,"line":8647},182,[860,8649,5265],{"class":1045},[860,8651,8009],{"class":870},[860,8653,1222],{"class":874},[860,8655,7608],{"class":866},[860,8657,871],{"class":978},[860,8659,875],{"class":874},[860,8661,8662],{"class":878},"my-kv",[860,8664,875],{"class":874},[860,8666,1091],{"class":874},[860,8668,964],{"class":963},[860,8670,1417],{"class":978},[860,8672,8674,8676,8678,8680,8682,8684,8686,8688,8690,8692,8694],{"class":862,"line":8673},183,[860,8675,5265],{"class":1045},[860,8677,8014],{"class":870},[860,8679,1222],{"class":874},[860,8681,7608],{"class":866},[860,8683,871],{"class":978},[860,8685,875],{"class":874},[860,8687,8662],{"class":878},[860,8689,875],{"class":874},[860,8691,1091],{"class":874},[860,8693,2764],{"class":963},[860,8695,1417],{"class":978},[860,8697,8699],{"class":862,"line":8698},184,[860,8700,1232],{"emptyLinePlaceholder":526},[860,8702,8704,8707,8709,8711,8713,8715,8717,8719],{"class":862,"line":8703},185,[860,8705,8706],{"class":866},"  updateWranglerConfig",[860,8708,871],{"class":978},[860,8710,8004],{"class":870},[860,8712,1091],{"class":874},[860,8714,8009],{"class":870},[860,8716,1091],{"class":874},[860,8718,8014],{"class":870},[860,8720,1417],{"class":978},[860,8722,8724],{"class":862,"line":8723},186,[860,8725,1232],{"emptyLinePlaceholder":526},[860,8727,8729,8731,8733,8735,8737,8740,8742,8744,8746,8748,8750,8752,8754,8756,8758],{"class":862,"line":8728},187,[860,8730,6765],{"class":866},[860,8732,871],{"class":978},[860,8734,875],{"class":874},[860,8736,6772],{"class":870},[860,8738,8739],{"class":878},"🎉 Setup Complete!",[860,8741,875],{"class":874},[860,8743,1091],{"class":874},[860,8745,6344],{"class":870},[860,8747,759],{"class":874},[860,8749,7208],{"class":870},[860,8751,6788],{"class":874},[860,8753,6344],{"class":870},[860,8755,759],{"class":874},[860,8757,6795],{"class":870},[860,8759,1417],{"class":978},[860,8761,8763,8765,8767,8769,8771,8774,8776,8778,8780,8782,8784],{"class":862,"line":8762},188,[860,8764,6765],{"class":866},[860,8766,871],{"class":978},[860,8768,875],{"class":874},[860,8770,6772],{"class":870},[860,8772,8773],{"class":878},"Next Steps:",[860,8775,875],{"class":874},[860,8777,1091],{"class":874},[860,8779,6344],{"class":870},[860,8781,759],{"class":874},[860,8783,484],{"class":870},[860,8785,1417],{"class":978},[860,8787,8789,8791,8793,8795,8798,8800,8802,8804,8806,8808],{"class":862,"line":8788},189,[860,8790,6765],{"class":866},[860,8792,871],{"class":978},[860,8794,875],{"class":874},[860,8796,8797],{"class":878},"1. pnpm run db:migrate",[860,8799,875],{"class":874},[860,8801,1091],{"class":874},[860,8803,6344],{"class":870},[860,8805,759],{"class":874},[860,8807,6795],{"class":870},[860,8809,1417],{"class":978},[860,8811,8813,8815,8817,8819,8822,8824,8826,8828,8830,8832],{"class":862,"line":8812},190,[860,8814,6765],{"class":866},[860,8816,871],{"class":978},[860,8818,875],{"class":874},[860,8820,8821],{"class":878},"2. pnpm run db:seed:local",[860,8823,875],{"class":874},[860,8825,1091],{"class":874},[860,8827,6344],{"class":870},[860,8829,759],{"class":874},[860,8831,6795],{"class":870},[860,8833,1417],{"class":978},[860,8835,8837,8839,8841,8843,8846,8848,8850,8852,8854,8856,8858],{"class":862,"line":8836},191,[860,8838,6765],{"class":866},[860,8840,871],{"class":978},[860,8842,875],{"class":874},[860,8844,8845],{"class":878},"3. pnpm run deploy",[860,8847,6772],{"class":870},[860,8849,875],{"class":874},[860,8851,1091],{"class":874},[860,8853,6344],{"class":870},[860,8855,759],{"class":874},[860,8857,6795],{"class":870},[860,8859,1417],{"class":978},[860,8861,8863],{"class":862,"line":8862},192,[860,8864,1014],{"class":874},[860,8866,8868],{"class":862,"line":8867},193,[860,8869,1232],{"emptyLinePlaceholder":526},[860,8871,8873,8876,8878,8880,8883,8885,8887,8889],{"class":862,"line":8872},194,[860,8874,8875],{"class":866},"main",[860,8877,1060],{"class":870},[860,8879,759],{"class":874},[860,8881,8882],{"class":866},"catch",[860,8884,871],{"class":870},[860,8886,5562],{"class":1570},[860,8888,1063],{"class":1045},[860,8890,942],{"class":874},[860,8892,8894,8896,8898,8900,8902,8905,8907,8909,8911,8913,8915],{"class":862,"line":8893},195,[860,8895,6765],{"class":866},[860,8897,871],{"class":978},[860,8899,875],{"class":874},[860,8901,6772],{"class":870},[860,8903,8904],{"class":878},"❌ Setup failed",[860,8906,875],{"class":874},[860,8908,1091],{"class":874},[860,8910,6344],{"class":870},[860,8912,759],{"class":874},[860,8914,7576],{"class":870},[860,8916,1417],{"class":978},[860,8918,8920,8922,8924,8926,8928,8931,8933,8935,8937,8939],{"class":862,"line":8919},196,[860,8921,6765],{"class":866},[860,8923,871],{"class":978},[860,8925,5562],{"class":870},[860,8927,759],{"class":874},[860,8929,8930],{"class":870},"stack",[860,8932,1091],{"class":874},[860,8934,6344],{"class":870},[860,8936,759],{"class":874},[860,8938,7576],{"class":870},[860,8940,1417],{"class":978},[860,8942,8944,8947,8949,8952,8954,8956],{"class":862,"line":8943},197,[860,8945,8946],{"class":870},"  process",[860,8948,759],{"class":874},[860,8950,8951],{"class":866},"exit",[860,8953,871],{"class":978},[860,8955,7449],{"class":1836},[860,8957,1417],{"class":978},[860,8959,8961,8963],{"class":862,"line":8960},198,[860,8962,1219],{"class":874},[860,8964,1417],{"class":870},[851,8966,8969],{"className":5746,"code":8967,"filename":8968,"language":5749,"meta":856,"style":856},"#!/usr/bin/env node\n\n/**\n * Interactive Database Seeding Script\n */\n\nimport { execSync } from 'child_process'\nimport { readdirSync, readFileSync } from 'fs'\nimport { join, dirname } from 'path'\nimport { fileURLToPath } from 'url'\nimport * as readline from 'readline'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\nconst projectRoot = join(__dirname, '..')\nconst seedersDir = join(projectRoot, 'seeders')\n\nconst colors = {\n  reset: '\\x1b[0m',\n  bright: '\\x1b[1m',\n  green: '\\x1b[32m',\n  yellow: '\\x1b[33m',\n  blue: '\\x1b[34m',\n  red: '\\x1b[31m',\n  cyan: '\\x1b[36m'\n}\n\nfunction log(message, color = colors.reset) {\n  console.log(`${color}${message}${colors.reset}`)\n}\n\nfunction execCommand(command, options = {}) {\n  try {\n    return execSync(command, {\n      encoding: 'utf-8',\n      stdio: options.silent ? 'pipe' : 'inherit',\n      cwd: projectRoot,\n      ...options\n    })\n  } catch (error) {\n    if (options.ignoreError) return null\n    throw error\n  }\n}\n\nfunction getAvailableSeeders() {\n  try {\n    const files = readdirSync(seedersDir)\n    return files.filter(file => file.endsWith('.sql')).sort()\n  } catch (error) {\n    return []\n  }\n}\n\nfunction displaySeeders(seeders) {\n  log('\\n📂 Available Seeders:\\n', colors.blue + colors.bright)\n\n  seeders.forEach((seeder, index) => {\n    const number = `${index + 1}.`.padEnd(4)\n    const name = seeder.replace('.sql', '')\n    const filePath = join(seedersDir, seeder)\n    const stats = readFileSync(filePath, 'utf-8')\n    const lines = stats.split('\\n').length\n    const size = (stats.length / 1024).toFixed(1)\n\n    log(`  ${number}${name}`, colors.cyan)\n    log(`        ${lines} lines, ${size} KB`, colors.dim)\n  })\n\n  log('')\n}\n\nasync function promptUser(question) {\n  const rl = readline.createInterface({\n    input: process.stdin,\n    output: process.stdout\n  })\n\n  return new Promise(resolve => {\n    rl.question(question, answer => {\n      rl.close()\n      resolve(answer.trim())\n    })\n  })\n}\n\nasync function selectSeeders(seeders) {\n  log('Options:', colors.yellow)\n  log('  • Enter numbers (e.g., \"1 3 5\")', colors.reset)\n  log('  • Enter \"all\" to run all', colors.reset)\n  log('  • Enter \"q\" to quit\\n', colors.reset)\n\n  const answer = await promptUser(colors.bright + 'Select: ' + colors.reset)\n\n  if (answer.toLowerCase() === 'q') {\n    log('\\n👋 Cancelled\\n', colors.yellow)\n    process.exit(0)\n  }\n\n  if (answer.toLowerCase() === 'all') {\n    return seeders\n  }\n\n  const selections = answer\n    .split(/[,\\s]+/)\n    .map(s => parseInt(s.trim()))\n    .filter(n => !isNaN(n) && n > 0 && n \u003C= seeders.length)\n\n  if (selections.length === 0) {\n    log('\\n❌ No valid selections\\n', colors.red)\n    process.exit(1)\n  }\n\n  return selections.map(n => seeders[n - 1])\n}\n\nasync function runSeeder(seeder, isLocal) {\n  const seederName = seeder.replace('.sql', '')\n  const envFlag = isLocal ? '--local' : '--remote'\n\n  log(`\\n▶️  Running: ${seederName}`, colors.blue + colors.bright)\n\n  try {\n    const command = `wrangler d1 execute my-database ${envFlag} --file=seeders/${seeder}`\n    execCommand(command)\n    log(`✅ ${seederName} completed`, colors.green)\n    return true\n  } catch (error) {\n    log(`❌ ${seederName} failed`, colors.red)\n    return false\n  }\n}\n\nasync function main() {\n  const args = process.argv.slice(2)\n  const isLocal = args.includes('--local')\n  const autoAll = args.includes('--all')\n  const environment = isLocal ? 'Local' : 'Production'\n\n  log('\\n' + '='.repeat(70), colors.bright)\n  log(`🌱 Database Seeding - ${environment}`, colors.blue + colors.bright)\n  log('='.repeat(70), colors.bright)\n\n  const availableSeeders = getAvailableSeeders()\n\n  if (availableSeeders.length === 0) {\n    log('\\n⚠️  No seeders found\\n', colors.yellow)\n    process.exit(0)\n  }\n\n  displaySeeders(availableSeeders)\n\n  let selectedSeeders\n  if (autoAll) {\n    selectedSeeders = availableSeeders\n  } else {\n    selectedSeeders = await selectSeeders(availableSeeders)\n  }\n\n  const results = []\n  for (const seeder of selectedSeeders) {\n    const success = await runSeeder(seeder, isLocal)\n    results.push({ seeder, success })\n  }\n\n  const successful = results.filter(r => r.success).length\n  const failed = results.filter(r => !r.success).length\n\n  log('\\n📊 Summary:', colors.bright)\n  log(`   ✅ Successful: ${successful}`, colors.green)\n  log(`   ❌ Failed: ${failed}`, failed > 0 ? colors.red : colors.dim)\n\n  if (failed === 0) {\n    log('\\n🎉 All seeders completed!\\n', colors.green + colors.bright)\n  } else {\n    log('\\n⚠️  Some failed\\n', colors.yellow)\n    process.exit(1)\n  }\n}\n\nmain().catch(error => {\n  log('\\n❌ Seeding failed', colors.red)\n  log(error.stack, colors.red)\n  process.exit(1)\n})\n","scripts/seed-database.mjs",[816,8970,8971,8975,8979,8983,8988,8992,8996,9014,9037,9059,9077,9095,9099,9121,9133,9155,9180,9184,9194,9210,9226,9242,9258,9274,9290,9304,9308,9312,9338,9368,9372,9376,9396,9402,9416,9430,9460,9470,9476,9482,9496,9514,9520,9524,9528,9532,9543,9549,9567,9611,9625,9632,9636,9640,9644,9659,9694,9698,9724,9760,9789,9810,9836,9867,9904,9908,9938,9980,9986,9990,10000,10004,10008,10024,10042,10056,10068,10074,10078,10094,10114,10124,10138,10144,10150,10154,10158,10175,10198,10221,10244,10269,10273,10312,10316,10346,10373,10388,10392,10396,10422,10429,10433,10437,10449,10469,10496,10547,10551,10572,10599,10613,10617,10621,10650,10654,10658,10680,10709,10738,10742,10780,10784,10790,10820,10831,10863,10869,10883,10915,10921,10925,10929,10933,10945,10972,10997,11023,11052,11056,11097,11133,11165,11169,11182,11186,11207,11234,11248,11252,11256,11267,11271,11279,11292,11302,11311,11327,11331,11335,11346,11367,11390,11414,11418,11422,11458,11492,11496,11521,11549,11593,11597,11613,11648,11656,11683,11697,11701,11705,11709,11727,11752,11774,11788],{"__ignoreMap":856},[860,8972,8973],{"class":862,"line":863},[860,8974,5756],{"class":1237},[860,8976,8977],{"class":862,"line":945},[860,8978,1232],{"emptyLinePlaceholder":526},[860,8980,8981],{"class":862,"line":929},[860,8982,3820],{"class":1237},[860,8984,8985],{"class":862,"line":970},[860,8986,8987],{"class":1237}," * Interactive Database Seeding Script\n",[860,8989,8990],{"class":862,"line":994},[860,8991,3835],{"class":1237},[860,8993,8994],{"class":862,"line":1005},[860,8995,1232],{"emptyLinePlaceholder":526},[860,8997,8998,9000,9002,9004,9006,9008,9010,9012],{"class":862,"line":1011},[860,8999,1966],{"class":1085},[860,9001,1213],{"class":874},[860,9003,5791],{"class":870},[860,9005,1855],{"class":874},[860,9007,1986],{"class":1085},[860,9009,1847],{"class":874},[860,9011,5800],{"class":878},[860,9013,1994],{"class":874},[860,9015,9016,9018,9020,9023,9025,9027,9029,9031,9033,9035],{"class":862,"line":1284},[860,9017,1966],{"class":1085},[860,9019,1213],{"class":874},[860,9021,9022],{"class":870}," readdirSync",[860,9024,1091],{"class":874},[860,9026,5811],{"class":870},[860,9028,1855],{"class":874},[860,9030,1986],{"class":1085},[860,9032,1847],{"class":874},[860,9034,5825],{"class":878},[860,9036,1994],{"class":874},[860,9038,9039,9041,9043,9045,9047,9049,9051,9053,9055,9057],{"class":862,"line":1289},[860,9040,1966],{"class":1085},[860,9042,1213],{"class":874},[860,9044,5836],{"class":870},[860,9046,1091],{"class":874},[860,9048,5841],{"class":870},[860,9050,1855],{"class":874},[860,9052,1986],{"class":1085},[860,9054,1847],{"class":874},[860,9056,889],{"class":878},[860,9058,1994],{"class":874},[860,9060,9061,9063,9065,9067,9069,9071,9073,9075],{"class":862,"line":1317},[860,9062,1966],{"class":1085},[860,9064,1213],{"class":874},[860,9066,5860],{"class":870},[860,9068,1855],{"class":874},[860,9070,1986],{"class":1085},[860,9072,1847],{"class":874},[860,9074,5869],{"class":878},[860,9076,1994],{"class":874},[860,9078,9079,9081,9083,9085,9087,9089,9091,9093],{"class":862,"line":1356},[860,9080,1966],{"class":1085},[860,9082,5204],{"class":874},[860,9084,5207],{"class":1085},[860,9086,5882],{"class":870},[860,9088,5212],{"class":1085},[860,9090,1847],{"class":874},[860,9092,5889],{"class":878},[860,9094,1994],{"class":874},[860,9096,9097],{"class":862,"line":1369},[860,9098,1232],{"emptyLinePlaceholder":526},[860,9100,9101,9103,9105,9107,9109,9111,9113,9115,9117,9119],{"class":862,"line":1146},[860,9102,1046],{"class":1045},[860,9104,5902],{"class":870},[860,9106,1052],{"class":874},[860,9108,5860],{"class":866},[860,9110,871],{"class":870},[860,9112,1966],{"class":1085},[860,9114,759],{"class":874},[860,9116,5915],{"class":870},[860,9118,759],{"class":874},[860,9120,5920],{"class":870},[860,9122,9123,9125,9127,9129,9131],{"class":862,"line":1147},[860,9124,1046],{"class":1045},[860,9126,5927],{"class":870},[860,9128,1052],{"class":874},[860,9130,5841],{"class":866},[860,9132,5934],{"class":870},[860,9134,9135,9137,9139,9141,9143,9145,9147,9149,9151,9153],{"class":862,"line":1148},[860,9136,1046],{"class":1045},[860,9138,5941],{"class":870},[860,9140,1052],{"class":874},[860,9142,5836],{"class":866},[860,9144,5948],{"class":870},[860,9146,1091],{"class":874},[860,9148,1847],{"class":874},[860,9150,5955],{"class":878},[860,9152,875],{"class":874},[860,9154,1417],{"class":870},[860,9156,9157,9159,9162,9164,9166,9169,9171,9173,9176,9178],{"class":862,"line":1434},[860,9158,1046],{"class":1045},[860,9160,9161],{"class":870}," seedersDir ",[860,9163,1052],{"class":874},[860,9165,5836],{"class":866},[860,9167,9168],{"class":870},"(projectRoot",[860,9170,1091],{"class":874},[860,9172,1847],{"class":874},[860,9174,9175],{"class":878},"seeders",[860,9177,875],{"class":874},[860,9179,1417],{"class":870},[860,9181,9182],{"class":862,"line":1443},[860,9183,1232],{"emptyLinePlaceholder":526},[860,9185,9186,9188,9190,9192],{"class":862,"line":1448},[860,9187,1046],{"class":1045},[860,9189,5970],{"class":870},[860,9191,1052],{"class":874},[860,9193,942],{"class":874},[860,9195,9196,9198,9200,9202,9204,9206,9208],{"class":862,"line":1457},[860,9197,5979],{"class":978},[860,9199,849],{"class":874},[860,9201,1847],{"class":874},[860,9203,5986],{"class":870},[860,9205,5989],{"class":878},[860,9207,875],{"class":874},[860,9209,967],{"class":874},[860,9211,9212,9214,9216,9218,9220,9222,9224],{"class":862,"line":1462},[860,9213,5998],{"class":978},[860,9215,849],{"class":874},[860,9217,1847],{"class":874},[860,9219,5986],{"class":870},[860,9221,6007],{"class":878},[860,9223,875],{"class":874},[860,9225,967],{"class":874},[860,9227,9228,9230,9232,9234,9236,9238,9240],{"class":862,"line":1467},[860,9229,6016],{"class":978},[860,9231,849],{"class":874},[860,9233,1847],{"class":874},[860,9235,5986],{"class":870},[860,9237,6025],{"class":878},[860,9239,875],{"class":874},[860,9241,967],{"class":874},[860,9243,9244,9246,9248,9250,9252,9254,9256],{"class":862,"line":1885},[860,9245,6034],{"class":978},[860,9247,849],{"class":874},[860,9249,1847],{"class":874},[860,9251,5986],{"class":870},[860,9253,6043],{"class":878},[860,9255,875],{"class":874},[860,9257,967],{"class":874},[860,9259,9260,9262,9264,9266,9268,9270,9272],{"class":862,"line":1896},[860,9261,6052],{"class":978},[860,9263,849],{"class":874},[860,9265,1847],{"class":874},[860,9267,5986],{"class":870},[860,9269,6061],{"class":878},[860,9271,875],{"class":874},[860,9273,967],{"class":874},[860,9275,9276,9278,9280,9282,9284,9286,9288],{"class":862,"line":1917},[860,9277,6070],{"class":978},[860,9279,849],{"class":874},[860,9281,1847],{"class":874},[860,9283,5986],{"class":870},[860,9285,6079],{"class":878},[860,9287,875],{"class":874},[860,9289,967],{"class":874},[860,9291,9292,9294,9296,9298,9300,9302],{"class":862,"line":1939},[860,9293,6088],{"class":978},[860,9295,849],{"class":874},[860,9297,1847],{"class":874},[860,9299,5986],{"class":870},[860,9301,6097],{"class":878},[860,9303,1994],{"class":874},[860,9305,9306],{"class":862,"line":1949},[860,9307,1014],{"class":874},[860,9309,9310],{"class":862,"line":3940},[860,9311,1232],{"emptyLinePlaceholder":526},[860,9313,9314,9316,9318,9320,9322,9324,9326,9328,9330,9332,9334,9336],{"class":862,"line":3945},[860,9315,6327],{"class":1045},[860,9317,6330],{"class":866},[860,9319,871],{"class":874},[860,9321,5730],{"class":1570},[860,9323,1091],{"class":874},[860,9325,6339],{"class":1570},[860,9327,1222],{"class":874},[860,9329,6344],{"class":870},[860,9331,759],{"class":874},[860,9333,6349],{"class":870},[860,9335,884],{"class":874},[860,9337,942],{"class":874},[860,9339,9340,9342,9344,9346,9348,9350,9352,9354,9356,9358,9360,9362,9364,9366],{"class":862,"line":3950},[860,9341,6358],{"class":870},[860,9343,759],{"class":874},[860,9345,6363],{"class":866},[860,9347,871],{"class":978},[860,9349,6368],{"class":874},[860,9351,6371],{"class":870},[860,9353,6374],{"class":874},[860,9355,5730],{"class":870},[860,9357,6374],{"class":874},[860,9359,6381],{"class":870},[860,9361,759],{"class":874},[860,9363,6349],{"class":870},[860,9365,1351],{"class":874},[860,9367,1417],{"class":978},[860,9369,9370],{"class":862,"line":3956},[860,9371,1014],{"class":874},[860,9373,9374],{"class":862,"line":3962},[860,9375,1232],{"emptyLinePlaceholder":526},[860,9377,9378,9380,9382,9384,9386,9388,9390,9392,9394],{"class":862,"line":3967},[860,9379,6327],{"class":1045},[860,9381,6404],{"class":866},[860,9383,871],{"class":874},[860,9385,6409],{"class":1570},[860,9387,1091],{"class":874},[860,9389,6414],{"class":1570},[860,9391,1222],{"class":874},[860,9393,6419],{"class":874},[860,9395,942],{"class":874},[860,9397,9398,9400],{"class":862,"line":3973},[860,9399,6426],{"class":1085},[860,9401,942],{"class":874},[860,9403,9404,9406,9408,9410,9412,9414],{"class":862,"line":3979},[860,9405,1451],{"class":1085},[860,9407,5791],{"class":866},[860,9409,871],{"class":978},[860,9411,6409],{"class":870},[860,9413,1091],{"class":874},[860,9415,942],{"class":874},[860,9417,9418,9420,9422,9424,9426,9428],{"class":862,"line":3985},[860,9419,6447],{"class":978},[860,9421,849],{"class":874},[860,9423,1847],{"class":874},[860,9425,6454],{"class":878},[860,9427,875],{"class":874},[860,9429,967],{"class":874},[860,9431,9432,9434,9436,9438,9440,9442,9444,9446,9448,9450,9452,9454,9456,9458],{"class":862,"line":3991},[860,9433,6463],{"class":978},[860,9435,849],{"class":874},[860,9437,6414],{"class":870},[860,9439,759],{"class":874},[860,9441,6472],{"class":870},[860,9443,6475],{"class":874},[860,9445,1847],{"class":874},[860,9447,6480],{"class":878},[860,9449,875],{"class":874},[860,9451,6485],{"class":874},[860,9453,1847],{"class":874},[860,9455,6490],{"class":878},[860,9457,875],{"class":874},[860,9459,967],{"class":874},[860,9461,9462,9464,9466,9468],{"class":862,"line":3997},[860,9463,6499],{"class":978},[860,9465,849],{"class":874},[860,9467,6504],{"class":870},[860,9469,967],{"class":874},[860,9471,9472,9474],{"class":862,"line":4003},[860,9473,6511],{"class":874},[860,9475,6514],{"class":870},[860,9477,9478,9480],{"class":862,"line":4008},[860,9479,6519],{"class":874},[860,9481,1417],{"class":978},[860,9483,9484,9486,9488,9490,9492,9494],{"class":862,"line":4014},[860,9485,2108],{"class":874},[860,9487,6528],{"class":1085},[860,9489,1567],{"class":978},[860,9491,5562],{"class":870},[860,9493,5320],{"class":978},[860,9495,1815],{"class":874},[860,9497,9498,9500,9502,9504,9506,9508,9510,9512],{"class":862,"line":4019},[860,9499,6541],{"class":1085},[860,9501,1567],{"class":978},[860,9503,6546],{"class":870},[860,9505,759],{"class":874},[860,9507,6551],{"class":870},[860,9509,5320],{"class":978},[860,9511,2914],{"class":1085},[860,9513,6558],{"class":874},[860,9515,9516,9518],{"class":862,"line":4024},[860,9517,5327],{"class":1085},[860,9519,6565],{"class":870},[860,9521,9522],{"class":862,"line":4030},[860,9523,1008],{"class":874},[860,9525,9526],{"class":862,"line":4036},[860,9527,1014],{"class":874},[860,9529,9530],{"class":862,"line":4042},[860,9531,1232],{"emptyLinePlaceholder":526},[860,9533,9534,9536,9539,9541],{"class":862,"line":4047},[860,9535,6327],{"class":1045},[860,9537,9538],{"class":866}," getAvailableSeeders",[860,9540,1060],{"class":874},[860,9542,942],{"class":874},[860,9544,9545,9547],{"class":862,"line":4053},[860,9546,6426],{"class":1085},[860,9548,942],{"class":874},[860,9550,9551,9553,9556,9558,9560,9562,9565],{"class":862,"line":4058},[860,9552,1378],{"class":1045},[860,9554,9555],{"class":870}," files",[860,9557,1222],{"class":874},[860,9559,9022],{"class":866},[860,9561,871],{"class":978},[860,9563,9564],{"class":870},"seedersDir",[860,9566,1417],{"class":978},[860,9568,9569,9571,9573,9575,9578,9580,9583,9585,9587,9589,9592,9594,9596,9599,9601,9604,9606,9609],{"class":862,"line":4064},[860,9570,1451],{"class":1085},[860,9572,9555],{"class":870},[860,9574,759],{"class":874},[860,9576,9577],{"class":866},"filter",[860,9579,871],{"class":978},[860,9581,9582],{"class":1570},"file",[860,9584,1063],{"class":1045},[860,9586,3596],{"class":870},[860,9588,759],{"class":874},[860,9590,9591],{"class":866},"endsWith",[860,9593,871],{"class":978},[860,9595,875],{"class":874},[860,9597,9598],{"class":878},".sql",[860,9600,875],{"class":874},[860,9602,9603],{"class":978},"))",[860,9605,759],{"class":874},[860,9607,9608],{"class":866},"sort",[860,9610,905],{"class":978},[860,9612,9613,9615,9617,9619,9621,9623],{"class":862,"line":4070},[860,9614,2108],{"class":874},[860,9616,6528],{"class":1085},[860,9618,1567],{"class":978},[860,9620,5562],{"class":870},[860,9622,5320],{"class":978},[860,9624,1815],{"class":874},[860,9626,9627,9629],{"class":862,"line":4076},[860,9628,1451],{"class":1085},[860,9630,9631],{"class":978}," []\n",[860,9633,9634],{"class":862,"line":4081},[860,9635,1008],{"class":874},[860,9637,9638],{"class":862,"line":4086},[860,9639,1014],{"class":874},[860,9641,9642],{"class":862,"line":4091},[860,9643,1232],{"emptyLinePlaceholder":526},[860,9645,9646,9648,9651,9653,9655,9657],{"class":862,"line":4096},[860,9647,6327],{"class":1045},[860,9649,9650],{"class":866}," displaySeeders",[860,9652,871],{"class":874},[860,9654,9175],{"class":1570},[860,9656,884],{"class":874},[860,9658,942],{"class":874},[860,9660,9661,9663,9665,9667,9669,9672,9674,9676,9678,9680,9682,9684,9686,9688,9690,9692],{"class":862,"line":4102},[860,9662,6765],{"class":866},[860,9664,871],{"class":978},[860,9666,875],{"class":874},[860,9668,6772],{"class":870},[860,9670,9671],{"class":878},"📂 Available Seeders:",[860,9673,6772],{"class":870},[860,9675,875],{"class":874},[860,9677,1091],{"class":874},[860,9679,6344],{"class":870},[860,9681,759],{"class":874},[860,9683,484],{"class":870},[860,9685,6788],{"class":874},[860,9687,6344],{"class":870},[860,9689,759],{"class":874},[860,9691,6795],{"class":870},[860,9693,1417],{"class":978},[860,9695,9696],{"class":862,"line":4108},[860,9697,1232],{"emptyLinePlaceholder":526},[860,9699,9700,9703,9705,9707,9709,9711,9714,9716,9718,9720,9722],{"class":862,"line":4114},[860,9701,9702],{"class":870},"  seeders",[860,9704,759],{"class":874},[860,9706,6840],{"class":866},[860,9708,871],{"class":978},[860,9710,871],{"class":874},[860,9712,9713],{"class":1570},"seeder",[860,9715,1091],{"class":874},[860,9717,6852],{"class":1570},[860,9719,884],{"class":874},[860,9721,1063],{"class":1045},[860,9723,942],{"class":874},[860,9725,9726,9728,9731,9733,9736,9738,9740,9742,9744,9746,9748,9750,9753,9755,9758],{"class":862,"line":4119},[860,9727,1378],{"class":1045},[860,9729,9730],{"class":870}," number",[860,9732,1222],{"class":874},[860,9734,9735],{"class":874}," `${",[860,9737,6906],{"class":870},[860,9739,6909],{"class":874},[860,9741,6912],{"class":1836},[860,9743,1219],{"class":874},[860,9745,759],{"class":878},[860,9747,6900],{"class":874},[860,9749,759],{"class":874},[860,9751,9752],{"class":866},"padEnd",[860,9754,871],{"class":978},[860,9756,9757],{"class":1836},"4",[860,9759,1417],{"class":978},[860,9761,9762,9764,9766,9768,9771,9773,9775,9777,9779,9781,9783,9785,9787],{"class":862,"line":4125},[860,9763,1378],{"class":1045},[860,9765,6140],{"class":870},[860,9767,1222],{"class":874},[860,9769,9770],{"class":870}," seeder",[860,9772,759],{"class":874},[860,9774,1075],{"class":866},[860,9776,871],{"class":978},[860,9778,875],{"class":874},[860,9780,9598],{"class":878},[860,9782,875],{"class":874},[860,9784,1091],{"class":874},[860,9786,1094],{"class":874},[860,9788,1417],{"class":978},[860,9790,9791,9793,9796,9798,9800,9802,9804,9806,9808],{"class":862,"line":4131},[860,9792,1378],{"class":1045},[860,9794,9795],{"class":870}," filePath",[860,9797,1222],{"class":874},[860,9799,5836],{"class":866},[860,9801,871],{"class":978},[860,9803,9564],{"class":870},[860,9805,1091],{"class":874},[860,9807,9770],{"class":870},[860,9809,1417],{"class":978},[860,9811,9812,9814,9817,9819,9821,9823,9826,9828,9830,9832,9834],{"class":862,"line":4136},[860,9813,1378],{"class":1045},[860,9815,9816],{"class":870}," stats",[860,9818,1222],{"class":874},[860,9820,5811],{"class":866},[860,9822,871],{"class":978},[860,9824,9825],{"class":870},"filePath",[860,9827,1091],{"class":874},[860,9829,1847],{"class":874},[860,9831,6454],{"class":878},[860,9833,875],{"class":874},[860,9835,1417],{"class":978},[860,9837,9838,9840,9843,9845,9847,9849,9852,9854,9856,9858,9860,9862,9864],{"class":862,"line":4141},[860,9839,1378],{"class":1045},[860,9841,9842],{"class":870}," lines",[860,9844,1222],{"class":874},[860,9846,9816],{"class":870},[860,9848,759],{"class":874},[860,9850,9851],{"class":866},"split",[860,9853,871],{"class":978},[860,9855,875],{"class":874},[860,9857,6772],{"class":870},[860,9859,875],{"class":874},[860,9861,884],{"class":978},[860,9863,759],{"class":874},[860,9865,9866],{"class":870},"length\n",[860,9868,9869,9871,9874,9876,9878,9881,9883,9885,9888,9891,9893,9895,9898,9900,9902],{"class":862,"line":4146},[860,9870,1378],{"class":1045},[860,9872,9873],{"class":870}," size",[860,9875,1222],{"class":874},[860,9877,1567],{"class":978},[860,9879,9880],{"class":870},"stats",[860,9882,759],{"class":874},[860,9884,7084],{"class":870},[860,9886,9887],{"class":874}," /",[860,9889,9890],{"class":1836}," 1024",[860,9892,884],{"class":978},[860,9894,759],{"class":874},[860,9896,9897],{"class":866},"toFixed",[860,9899,871],{"class":978},[860,9901,7449],{"class":1836},[860,9903,1417],{"class":978},[860,9905,9906],{"class":862,"line":4152},[860,9907,1232],{"emptyLinePlaceholder":526},[860,9909,9910,9912,9914,9916,9919,9922,9924,9926,9928,9930,9932,9934,9936],{"class":862,"line":4157},[860,9911,6895],{"class":866},[860,9913,871],{"class":978},[860,9915,6900],{"class":874},[860,9917,9918],{"class":874},"  ${",[860,9920,9921],{"class":870},"number",[860,9923,6374],{"class":874},[860,9925,4429],{"class":870},[860,9927,1351],{"class":874},[860,9929,1091],{"class":874},[860,9931,6344],{"class":870},[860,9933,759],{"class":874},[860,9935,6956],{"class":870},[860,9937,1417],{"class":978},[860,9939,9940,9942,9944,9946,9949,9952,9954,9957,9959,9962,9964,9967,9969,9971,9973,9975,9978],{"class":862,"line":4163},[860,9941,6895],{"class":866},[860,9943,871],{"class":978},[860,9945,6900],{"class":874},[860,9947,9948],{"class":874},"        ${",[860,9950,9951],{"class":870},"lines",[860,9953,1219],{"class":874},[860,9955,9956],{"class":878}," lines, ",[860,9958,1326],{"class":874},[860,9960,9961],{"class":870},"size",[860,9963,1219],{"class":874},[860,9965,9966],{"class":878}," KB",[860,9968,6900],{"class":874},[860,9970,1091],{"class":874},[860,9972,6344],{"class":870},[860,9974,759],{"class":874},[860,9976,9977],{"class":870},"dim",[860,9979,1417],{"class":978},[860,9981,9982,9984],{"class":862,"line":4169},[860,9983,2108],{"class":874},[860,9985,1417],{"class":978},[860,9987,9988],{"class":862,"line":4174},[860,9989,1232],{"emptyLinePlaceholder":526},[860,9991,9992,9994,9996,9998],{"class":862,"line":6800},[860,9993,6765],{"class":866},[860,9995,871],{"class":978},[860,9997,6980],{"class":874},[860,9999,1417],{"class":978},[860,10001,10002],{"class":862,"line":6827},[860,10003,1014],{"class":874},[860,10005,10006],{"class":862,"line":6832},[860,10007,1232],{"emptyLinePlaceholder":526},[860,10009,10010,10012,10014,10016,10018,10020,10022],{"class":862,"line":6861},[860,10011,6582],{"class":1045},[860,10013,5248],{"class":1045},[860,10015,6587],{"class":866},[860,10017,871],{"class":874},[860,10019,6592],{"class":1570},[860,10021,884],{"class":874},[860,10023,942],{"class":874},[860,10025,10026,10028,10030,10032,10034,10036,10038,10040],{"class":862,"line":6892},[860,10027,5265],{"class":1045},[860,10029,6603],{"class":870},[860,10031,1222],{"class":874},[860,10033,6608],{"class":870},[860,10035,759],{"class":874},[860,10037,6613],{"class":866},[860,10039,871],{"class":978},[860,10041,1815],{"class":874},[860,10043,10044,10046,10048,10050,10052,10054],{"class":862,"line":6961},[860,10045,6622],{"class":978},[860,10047,849],{"class":874},[860,10049,2874],{"class":870},[860,10051,759],{"class":874},[860,10053,6631],{"class":870},[860,10055,967],{"class":874},[860,10057,10058,10060,10062,10064,10066],{"class":862,"line":6968},[860,10059,6638],{"class":978},[860,10061,849],{"class":874},[860,10063,2874],{"class":870},[860,10065,759],{"class":874},[860,10067,6647],{"class":870},[860,10069,10070,10072],{"class":862,"line":6973},[860,10071,2108],{"class":874},[860,10073,1417],{"class":978},[860,10075,10076],{"class":862,"line":6985},[860,10077,1232],{"emptyLinePlaceholder":526},[860,10079,10080,10082,10084,10086,10088,10090,10092],{"class":862,"line":7009},[860,10081,5357],{"class":1085},[860,10083,5330],{"class":874},[860,10085,6666],{"class":936},[860,10087,871],{"class":978},[860,10089,6671],{"class":1570},[860,10091,1063],{"class":1045},[860,10093,942],{"class":874},[860,10095,10096,10098,10100,10102,10104,10106,10108,10110,10112],{"class":862,"line":7041},[860,10097,6680],{"class":870},[860,10099,759],{"class":874},[860,10101,6592],{"class":866},[860,10103,871],{"class":978},[860,10105,6592],{"class":870},[860,10107,1091],{"class":874},[860,10109,6693],{"class":1570},[860,10111,1063],{"class":1045},[860,10113,942],{"class":874},[860,10115,10116,10118,10120,10122],{"class":862,"line":7046},[860,10117,6702],{"class":870},[860,10119,759],{"class":874},[860,10121,6707],{"class":866},[860,10123,905],{"class":978},[860,10125,10126,10128,10130,10132,10134,10136],{"class":862,"line":7091},[860,10127,6714],{"class":866},[860,10129,871],{"class":978},[860,10131,6719],{"class":870},[860,10133,759],{"class":874},[860,10135,6724],{"class":866},[860,10137,6727],{"class":978},[860,10139,10140,10142],{"class":862,"line":7115},[860,10141,6519],{"class":874},[860,10143,1417],{"class":978},[860,10145,10146,10148],{"class":862,"line":7130},[860,10147,2108],{"class":874},[860,10149,1417],{"class":978},[860,10151,10152],{"class":862,"line":7135},[860,10153,1014],{"class":874},[860,10155,10156],{"class":862,"line":7140},[860,10157,1232],{"emptyLinePlaceholder":526},[860,10159,10160,10162,10164,10167,10169,10171,10173],{"class":862,"line":7163},[860,10161,6582],{"class":1045},[860,10163,5248],{"class":1045},[860,10165,10166],{"class":866}," selectSeeders",[860,10168,871],{"class":874},[860,10170,9175],{"class":1570},[860,10172,884],{"class":874},[860,10174,942],{"class":874},[860,10176,10177,10179,10181,10183,10186,10188,10190,10192,10194,10196],{"class":862,"line":7213},[860,10178,6765],{"class":866},[860,10180,871],{"class":978},[860,10182,875],{"class":874},[860,10184,10185],{"class":878},"Options:",[860,10187,875],{"class":874},[860,10189,1091],{"class":874},[860,10191,6344],{"class":870},[860,10193,759],{"class":874},[860,10195,6822],{"class":870},[860,10197,1417],{"class":978},[860,10199,10200,10202,10204,10206,10209,10211,10213,10215,10217,10219],{"class":862,"line":7221},[860,10201,6765],{"class":866},[860,10203,871],{"class":978},[860,10205,875],{"class":874},[860,10207,10208],{"class":878},"  • Enter numbers (e.g., \"1 3 5\")",[860,10210,875],{"class":874},[860,10212,1091],{"class":874},[860,10214,6344],{"class":870},[860,10216,759],{"class":874},[860,10218,6349],{"class":870},[860,10220,1417],{"class":978},[860,10222,10223,10225,10227,10229,10232,10234,10236,10238,10240,10242],{"class":862,"line":7226},[860,10224,6765],{"class":866},[860,10226,871],{"class":978},[860,10228,875],{"class":874},[860,10230,10231],{"class":878},"  • Enter \"all\" to run all",[860,10233,875],{"class":874},[860,10235,1091],{"class":874},[860,10237,6344],{"class":870},[860,10239,759],{"class":874},[860,10241,6349],{"class":870},[860,10243,1417],{"class":978},[860,10245,10246,10248,10250,10252,10255,10257,10259,10261,10263,10265,10267],{"class":862,"line":7231},[860,10247,6765],{"class":866},[860,10249,871],{"class":978},[860,10251,875],{"class":874},[860,10253,10254],{"class":878},"  • Enter \"q\" to quit",[860,10256,6772],{"class":870},[860,10258,875],{"class":874},[860,10260,1091],{"class":874},[860,10262,6344],{"class":870},[860,10264,759],{"class":874},[860,10266,6349],{"class":870},[860,10268,1417],{"class":978},[860,10270,10271],{"class":862,"line":7249},[860,10272,1232],{"emptyLinePlaceholder":526},[860,10274,10275,10277,10279,10281,10283,10285,10287,10289,10291,10293,10295,10297,10300,10302,10304,10306,10308,10310],{"class":862,"line":7288},[860,10276,5265],{"class":1045},[860,10278,6693],{"class":870},[860,10280,1222],{"class":874},[860,10282,1308],{"class":1085},[860,10284,6587],{"class":866},[860,10286,871],{"class":978},[860,10288,6381],{"class":870},[860,10290,759],{"class":874},[860,10292,6795],{"class":870},[860,10294,6788],{"class":874},[860,10296,1847],{"class":874},[860,10298,10299],{"class":878},"Select: ",[860,10301,875],{"class":874},[860,10303,6788],{"class":874},[860,10305,6344],{"class":870},[860,10307,759],{"class":874},[860,10309,6349],{"class":870},[860,10311,1417],{"class":978},[860,10313,10314],{"class":862,"line":7293},[860,10315,1232],{"emptyLinePlaceholder":526},[860,10317,10318,10320,10322,10324,10326,10329,10332,10335,10337,10340,10342,10344],{"class":862,"line":7300},[860,10319,5311],{"class":1085},[860,10321,1567],{"class":978},[860,10323,6719],{"class":870},[860,10325,759],{"class":874},[860,10327,10328],{"class":866},"toLowerCase",[860,10330,10331],{"class":978},"() ",[860,10333,10334],{"class":874},"===",[860,10336,1847],{"class":874},[860,10338,10339],{"class":878},"q",[860,10341,875],{"class":874},[860,10343,5320],{"class":978},[860,10345,1815],{"class":874},[860,10347,10348,10350,10352,10354,10356,10359,10361,10363,10365,10367,10369,10371],{"class":862,"line":7327},[860,10349,6895],{"class":866},[860,10351,871],{"class":978},[860,10353,875],{"class":874},[860,10355,6772],{"class":870},[860,10357,10358],{"class":878},"👋 Cancelled",[860,10360,6772],{"class":870},[860,10362,875],{"class":874},[860,10364,1091],{"class":874},[860,10366,6344],{"class":870},[860,10368,759],{"class":874},[860,10370,6822],{"class":870},[860,10372,1417],{"class":978},[860,10374,10375,10378,10380,10382,10384,10386],{"class":862,"line":7341},[860,10376,10377],{"class":870},"    process",[860,10379,759],{"class":874},[860,10381,8951],{"class":866},[860,10383,871],{"class":978},[860,10385,7125],{"class":1836},[860,10387,1417],{"class":978},[860,10389,10390],{"class":862,"line":7359},[860,10391,1008],{"class":874},[860,10393,10394],{"class":862,"line":7374},[860,10395,1232],{"emptyLinePlaceholder":526},[860,10397,10398,10400,10402,10404,10406,10408,10410,10412,10414,10416,10418,10420],{"class":862,"line":7380},[860,10399,5311],{"class":1085},[860,10401,1567],{"class":978},[860,10403,6719],{"class":870},[860,10405,759],{"class":874},[860,10407,10328],{"class":866},[860,10409,10331],{"class":978},[860,10411,10334],{"class":874},[860,10413,1847],{"class":874},[860,10415,3688],{"class":878},[860,10417,875],{"class":874},[860,10419,5320],{"class":978},[860,10421,1815],{"class":874},[860,10423,10424,10426],{"class":862,"line":7385},[860,10425,1451],{"class":1085},[860,10427,10428],{"class":870}," seeders\n",[860,10430,10431],{"class":862,"line":7433},[860,10432,1008],{"class":874},[860,10434,10435],{"class":862,"line":7457},[860,10436,1232],{"emptyLinePlaceholder":526},[860,10438,10439,10441,10444,10446],{"class":862,"line":7482},[860,10440,5265],{"class":1045},[860,10442,10443],{"class":870}," selections",[860,10445,1222],{"class":874},[860,10447,10448],{"class":870}," answer\n",[860,10450,10451,10454,10456,10458,10461,10464,10467],{"class":862,"line":7515},[860,10452,10453],{"class":874},"    .",[860,10455,9851],{"class":866},[860,10457,871],{"class":978},[860,10459,10460],{"class":874},"/[",[860,10462,10463],{"class":878},",\\s",[860,10465,10466],{"class":874},"]+/",[860,10468,1417],{"class":978},[860,10470,10471,10473,10476,10478,10481,10483,10485,10487,10489,10491,10493],{"class":862,"line":7529},[860,10472,10453],{"class":874},[860,10474,10475],{"class":866},"map",[860,10477,871],{"class":978},[860,10479,10480],{"class":1570},"s",[860,10482,1063],{"class":1045},[860,10484,7032],{"class":866},[860,10486,871],{"class":978},[860,10488,10480],{"class":870},[860,10490,759],{"class":874},[860,10492,6724],{"class":866},[860,10494,10495],{"class":978},"()))\n",[860,10497,10498,10500,10502,10504,10507,10509,10512,10514,10516,10518,10520,10523,10526,10528,10531,10533,10535,10538,10541,10543,10545],{"class":862,"line":7534},[860,10499,10453],{"class":874},[860,10501,9577],{"class":866},[860,10503,871],{"class":978},[860,10505,10506],{"class":1570},"n",[860,10508,1063],{"class":1045},[860,10510,10511],{"class":874}," !",[860,10513,7053],{"class":866},[860,10515,871],{"class":978},[860,10517,10506],{"class":870},[860,10519,5320],{"class":978},[860,10521,10522],{"class":874},"&&",[860,10524,10525],{"class":870}," n",[860,10527,7076],{"class":874},[860,10529,10530],{"class":1836}," 0",[860,10532,7442],{"class":874},[860,10534,10525],{"class":870},[860,10536,10537],{"class":874}," \u003C=",[860,10539,10540],{"class":870}," seeders",[860,10542,759],{"class":874},[860,10544,7084],{"class":870},[860,10546,1417],{"class":978},[860,10548,10549],{"class":862,"line":7541},[860,10550,1232],{"emptyLinePlaceholder":526},[860,10552,10553,10555,10557,10560,10562,10564,10566,10568,10570],{"class":862,"line":7556},[860,10554,5311],{"class":1085},[860,10556,1567],{"class":978},[860,10558,10559],{"class":870},"selections",[860,10561,759],{"class":874},[860,10563,7084],{"class":870},[860,10565,7021],{"class":874},[860,10567,10530],{"class":1836},[860,10569,5320],{"class":978},[860,10571,1815],{"class":874},[860,10573,10574,10576,10578,10580,10582,10585,10587,10589,10591,10593,10595,10597],{"class":862,"line":7581},[860,10575,6895],{"class":866},[860,10577,871],{"class":978},[860,10579,875],{"class":874},[860,10581,6772],{"class":870},[860,10583,10584],{"class":878},"❌ No valid selections",[860,10586,6772],{"class":870},[860,10588,875],{"class":874},[860,10590,1091],{"class":874},[860,10592,6344],{"class":870},[860,10594,759],{"class":874},[860,10596,7576],{"class":870},[860,10598,1417],{"class":978},[860,10600,10601,10603,10605,10607,10609,10611],{"class":862,"line":7588},[860,10602,10377],{"class":870},[860,10604,759],{"class":874},[860,10606,8951],{"class":866},[860,10608,871],{"class":978},[860,10610,7449],{"class":1836},[860,10612,1417],{"class":978},[860,10614,10615],{"class":862,"line":7593},[860,10616,1008],{"class":874},[860,10618,10619],{"class":862,"line":7598},[860,10620,1232],{"emptyLinePlaceholder":526},[860,10622,10623,10625,10627,10629,10631,10633,10635,10637,10639,10641,10643,10645,10647],{"class":862,"line":7603},[860,10624,5357],{"class":1085},[860,10626,10443],{"class":870},[860,10628,759],{"class":874},[860,10630,10475],{"class":866},[860,10632,871],{"class":978},[860,10634,10506],{"class":1570},[860,10636,1063],{"class":1045},[860,10638,10540],{"class":870},[860,10640,7122],{"class":978},[860,10642,10506],{"class":870},[860,10644,7156],{"class":874},[860,10646,6912],{"class":1836},[860,10648,10649],{"class":978},"])\n",[860,10651,10652],{"class":862,"line":7628},[860,10653,1014],{"class":874},[860,10655,10656],{"class":862,"line":7653},[860,10657,1232],{"emptyLinePlaceholder":526},[860,10659,10660,10662,10664,10667,10669,10671,10673,10676,10678],{"class":862,"line":7692},[860,10661,6582],{"class":1045},[860,10663,5248],{"class":1045},[860,10665,10666],{"class":866}," runSeeder",[860,10668,871],{"class":874},[860,10670,9713],{"class":1570},[860,10672,1091],{"class":874},[860,10674,10675],{"class":1570}," isLocal",[860,10677,884],{"class":874},[860,10679,942],{"class":874},[860,10681,10682,10684,10687,10689,10691,10693,10695,10697,10699,10701,10703,10705,10707],{"class":862,"line":7697},[860,10683,5265],{"class":1045},[860,10685,10686],{"class":870}," seederName",[860,10688,1222],{"class":874},[860,10690,9770],{"class":870},[860,10692,759],{"class":874},[860,10694,1075],{"class":866},[860,10696,871],{"class":978},[860,10698,875],{"class":874},[860,10700,9598],{"class":878},[860,10702,875],{"class":874},[860,10704,1091],{"class":874},[860,10706,1094],{"class":874},[860,10708,1417],{"class":978},[860,10710,10711,10713,10716,10718,10720,10722,10724,10727,10729,10731,10733,10736],{"class":862,"line":7704},[860,10712,5265],{"class":1045},[860,10714,10715],{"class":870}," envFlag",[860,10717,1222],{"class":874},[860,10719,10675],{"class":870},[860,10721,6475],{"class":874},[860,10723,1847],{"class":874},[860,10725,10726],{"class":878},"--local",[860,10728,875],{"class":874},[860,10730,6485],{"class":874},[860,10732,1847],{"class":874},[860,10734,10735],{"class":878},"--remote",[860,10737,1994],{"class":874},[860,10739,10740],{"class":862,"line":7729},[860,10741,1232],{"emptyLinePlaceholder":526},[860,10743,10744,10746,10748,10750,10752,10755,10757,10760,10762,10764,10766,10768,10770,10772,10774,10776,10778],{"class":862,"line":7742},[860,10745,6765],{"class":866},[860,10747,871],{"class":978},[860,10749,6900],{"class":874},[860,10751,6772],{"class":870},[860,10753,10754],{"class":878},"▶️  Running: ",[860,10756,1326],{"class":874},[860,10758,10759],{"class":870},"seederName",[860,10761,1351],{"class":874},[860,10763,1091],{"class":874},[860,10765,6344],{"class":870},[860,10767,759],{"class":874},[860,10769,484],{"class":870},[860,10771,6788],{"class":874},[860,10773,6344],{"class":870},[860,10775,759],{"class":874},[860,10777,6795],{"class":870},[860,10779,1417],{"class":978},[860,10781,10782],{"class":862,"line":7766},[860,10783,1232],{"emptyLinePlaceholder":526},[860,10785,10786,10788],{"class":862,"line":7779},[860,10787,6426],{"class":1085},[860,10789,942],{"class":874},[860,10791,10792,10794,10797,10799,10801,10804,10806,10809,10811,10814,10816,10818],{"class":862,"line":7784},[860,10793,1378],{"class":1045},[860,10795,10796],{"class":870}," command",[860,10798,1222],{"class":874},[860,10800,7310],{"class":874},[860,10802,10803],{"class":878},"wrangler d1 execute my-database ",[860,10805,1326],{"class":874},[860,10807,10808],{"class":870},"envFlag",[860,10810,1219],{"class":874},[860,10812,10813],{"class":878}," --file=seeders/",[860,10815,1326],{"class":874},[860,10817,9713],{"class":870},[860,10819,7324],{"class":874},[860,10821,10822,10825,10827,10829],{"class":862,"line":7789},[860,10823,10824],{"class":866},"    execCommand",[860,10826,871],{"class":978},[860,10828,6409],{"class":870},[860,10830,1417],{"class":978},[860,10832,10833,10835,10837,10839,10842,10844,10846,10848,10851,10853,10855,10857,10859,10861],{"class":862,"line":7831},[860,10834,6895],{"class":866},[860,10836,871],{"class":978},[860,10838,6900],{"class":874},[860,10840,10841],{"class":878},"✅ ",[860,10843,1326],{"class":874},[860,10845,10759],{"class":870},[860,10847,1219],{"class":874},[860,10849,10850],{"class":878}," completed",[860,10852,6900],{"class":874},[860,10854,1091],{"class":874},[860,10856,6344],{"class":870},[860,10858,759],{"class":874},[860,10860,7208],{"class":870},[860,10862,1417],{"class":978},[860,10864,10865,10867],{"class":862,"line":7852},[860,10866,1451],{"class":1085},[860,10868,1002],{"class":963},[860,10870,10871,10873,10875,10877,10879,10881],{"class":862,"line":7876},[860,10872,2108],{"class":874},[860,10874,6528],{"class":1085},[860,10876,1567],{"class":978},[860,10878,5562],{"class":870},[860,10880,5320],{"class":978},[860,10882,1815],{"class":874},[860,10884,10885,10887,10889,10891,10894,10896,10898,10900,10903,10905,10907,10909,10911,10913],{"class":862,"line":7908},[860,10886,6895],{"class":866},[860,10888,871],{"class":978},[860,10890,6900],{"class":874},[860,10892,10893],{"class":878},"❌ ",[860,10895,1326],{"class":874},[860,10897,10759],{"class":870},[860,10899,1219],{"class":874},[860,10901,10902],{"class":878}," failed",[860,10904,6900],{"class":874},[860,10906,1091],{"class":874},[860,10908,6344],{"class":870},[860,10910,759],{"class":874},[860,10912,7576],{"class":870},[860,10914,1417],{"class":978},[860,10916,10917,10919],{"class":862,"line":7921},[860,10918,1451],{"class":1085},[860,10920,8459],{"class":963},[860,10922,10923],{"class":862,"line":7926},[860,10924,1008],{"class":874},[860,10926,10927],{"class":862,"line":7933},[860,10928,1014],{"class":874},[860,10930,10931],{"class":862,"line":7948},[860,10932,1232],{"emptyLinePlaceholder":526},[860,10934,10935,10937,10939,10941,10943],{"class":862,"line":7972},[860,10936,6582],{"class":1045},[860,10938,5248],{"class":1045},[860,10940,8484],{"class":866},[860,10942,1060],{"class":874},[860,10944,942],{"class":874},[860,10946,10947,10949,10952,10954,10956,10958,10961,10963,10966,10968,10970],{"class":862,"line":7979},[860,10948,5265],{"class":1045},[860,10950,10951],{"class":870}," args",[860,10953,1222],{"class":874},[860,10955,2874],{"class":870},[860,10957,759],{"class":874},[860,10959,10960],{"class":870},"argv",[860,10962,759],{"class":874},[860,10964,10965],{"class":866},"slice",[860,10967,871],{"class":978},[860,10969,752],{"class":1836},[860,10971,1417],{"class":978},[860,10973,10974,10976,10978,10980,10982,10984,10987,10989,10991,10993,10995],{"class":862,"line":7984},[860,10975,5265],{"class":1045},[860,10977,10675],{"class":870},[860,10979,1222],{"class":874},[860,10981,10951],{"class":870},[860,10983,759],{"class":874},[860,10985,10986],{"class":866},"includes",[860,10988,871],{"class":978},[860,10990,875],{"class":874},[860,10992,10726],{"class":878},[860,10994,875],{"class":874},[860,10996,1417],{"class":978},[860,10998,10999,11001,11004,11006,11008,11010,11012,11014,11016,11019,11021],{"class":862,"line":7989},[860,11000,5265],{"class":1045},[860,11002,11003],{"class":870}," autoAll",[860,11005,1222],{"class":874},[860,11007,10951],{"class":870},[860,11009,759],{"class":874},[860,11011,10986],{"class":866},[860,11013,871],{"class":978},[860,11015,875],{"class":874},[860,11017,11018],{"class":878},"--all",[860,11020,875],{"class":874},[860,11022,1417],{"class":978},[860,11024,11025,11027,11030,11032,11034,11036,11038,11041,11043,11045,11047,11050],{"class":862,"line":7994},[860,11026,5265],{"class":1045},[860,11028,11029],{"class":870}," environment",[860,11031,1222],{"class":874},[860,11033,10675],{"class":870},[860,11035,6475],{"class":874},[860,11037,1847],{"class":874},[860,11039,11040],{"class":878},"Local",[860,11042,875],{"class":874},[860,11044,6485],{"class":874},[860,11046,1847],{"class":874},[860,11048,11049],{"class":878},"Production",[860,11051,1994],{"class":874},[860,11053,11054],{"class":862,"line":8021},[860,11055,1232],{"emptyLinePlaceholder":526},[860,11057,11058,11060,11062,11064,11066,11068,11070,11072,11074,11076,11078,11080,11082,11085,11087,11089,11091,11093,11095],{"class":862,"line":8047},[860,11059,6765],{"class":866},[860,11061,871],{"class":978},[860,11063,875],{"class":874},[860,11065,6772],{"class":870},[860,11067,875],{"class":874},[860,11069,6788],{"class":874},[860,11071,1847],{"class":874},[860,11073,1052],{"class":878},[860,11075,875],{"class":874},[860,11077,759],{"class":874},[860,11079,8514],{"class":866},[860,11081,871],{"class":978},[860,11083,11084],{"class":1836},"70",[860,11086,884],{"class":978},[860,11088,1091],{"class":874},[860,11090,6344],{"class":870},[860,11092,759],{"class":874},[860,11094,6795],{"class":870},[860,11096,1417],{"class":978},[860,11098,11099,11101,11103,11105,11108,11110,11113,11115,11117,11119,11121,11123,11125,11127,11129,11131],{"class":862,"line":8052},[860,11100,6765],{"class":866},[860,11102,871],{"class":978},[860,11104,6900],{"class":874},[860,11106,11107],{"class":878},"🌱 Database Seeding - ",[860,11109,1326],{"class":874},[860,11111,11112],{"class":870},"environment",[860,11114,1351],{"class":874},[860,11116,1091],{"class":874},[860,11118,6344],{"class":870},[860,11120,759],{"class":874},[860,11122,484],{"class":870},[860,11124,6788],{"class":874},[860,11126,6344],{"class":870},[860,11128,759],{"class":874},[860,11130,6795],{"class":870},[860,11132,1417],{"class":978},[860,11134,11135,11137,11139,11141,11143,11145,11147,11149,11151,11153,11155,11157,11159,11161,11163],{"class":862,"line":8059},[860,11136,6765],{"class":866},[860,11138,871],{"class":978},[860,11140,875],{"class":874},[860,11142,1052],{"class":878},[860,11144,875],{"class":874},[860,11146,759],{"class":874},[860,11148,8514],{"class":866},[860,11150,871],{"class":978},[860,11152,11084],{"class":1836},[860,11154,884],{"class":978},[860,11156,1091],{"class":874},[860,11158,6344],{"class":870},[860,11160,759],{"class":874},[860,11162,6795],{"class":870},[860,11164,1417],{"class":978},[860,11166,11167],{"class":862,"line":8086},[860,11168,1232],{"emptyLinePlaceholder":526},[860,11170,11171,11173,11176,11178,11180],{"class":862,"line":8114},[860,11172,5265],{"class":1045},[860,11174,11175],{"class":870}," availableSeeders",[860,11177,1222],{"class":874},[860,11179,9538],{"class":866},[860,11181,905],{"class":978},[860,11183,11184],{"class":862,"line":8119},[860,11185,1232],{"emptyLinePlaceholder":526},[860,11187,11188,11190,11192,11195,11197,11199,11201,11203,11205],{"class":862,"line":8132},[860,11189,5311],{"class":1085},[860,11191,1567],{"class":978},[860,11193,11194],{"class":870},"availableSeeders",[860,11196,759],{"class":874},[860,11198,7084],{"class":870},[860,11200,7021],{"class":874},[860,11202,10530],{"class":1836},[860,11204,5320],{"class":978},[860,11206,1815],{"class":874},[860,11208,11209,11211,11213,11215,11217,11220,11222,11224,11226,11228,11230,11232],{"class":862,"line":8148},[860,11210,6895],{"class":866},[860,11212,871],{"class":978},[860,11214,875],{"class":874},[860,11216,6772],{"class":870},[860,11218,11219],{"class":878},"⚠️  No seeders found",[860,11221,6772],{"class":870},[860,11223,875],{"class":874},[860,11225,1091],{"class":874},[860,11227,6344],{"class":870},[860,11229,759],{"class":874},[860,11231,6822],{"class":870},[860,11233,1417],{"class":978},[860,11235,11236,11238,11240,11242,11244,11246],{"class":862,"line":8166},[860,11237,10377],{"class":870},[860,11239,759],{"class":874},[860,11241,8951],{"class":866},[860,11243,871],{"class":978},[860,11245,7125],{"class":1836},[860,11247,1417],{"class":978},[860,11249,11250],{"class":862,"line":8186},[860,11251,1008],{"class":874},[860,11253,11254],{"class":862,"line":8192},[860,11255,1232],{"emptyLinePlaceholder":526},[860,11257,11258,11261,11263,11265],{"class":862,"line":8197},[860,11259,11260],{"class":866},"  displaySeeders",[860,11262,871],{"class":978},[860,11264,11194],{"class":870},[860,11266,1417],{"class":978},[860,11268,11269],{"class":862,"line":8202},[860,11270,1232],{"emptyLinePlaceholder":526},[860,11272,11273,11276],{"class":862,"line":8216},[860,11274,11275],{"class":1045},"  let",[860,11277,11278],{"class":870}," selectedSeeders\n",[860,11280,11281,11283,11285,11288,11290],{"class":862,"line":8231},[860,11282,5311],{"class":1085},[860,11284,1567],{"class":978},[860,11286,11287],{"class":870},"autoAll",[860,11289,5320],{"class":978},[860,11291,1815],{"class":874},[860,11293,11294,11297,11299],{"class":862,"line":8248},[860,11295,11296],{"class":870},"    selectedSeeders",[860,11298,1222],{"class":874},[860,11300,11301],{"class":870}," availableSeeders\n",[860,11303,11304,11306,11309],{"class":862,"line":8266},[860,11305,2108],{"class":874},[860,11307,11308],{"class":1085}," else",[860,11310,942],{"class":874},[860,11312,11313,11315,11317,11319,11321,11323,11325],{"class":862,"line":8271},[860,11314,11296],{"class":870},[860,11316,1222],{"class":874},[860,11318,1308],{"class":1085},[860,11320,10166],{"class":866},[860,11322,871],{"class":978},[860,11324,11194],{"class":870},[860,11326,1417],{"class":978},[860,11328,11329],{"class":862,"line":8276},[860,11330,1008],{"class":874},[860,11332,11333],{"class":862,"line":8281},[860,11334,1232],{"emptyLinePlaceholder":526},[860,11336,11337,11339,11342,11344],{"class":862,"line":8295},[860,11338,5265],{"class":1045},[860,11340,11341],{"class":870}," results",[860,11343,1222],{"class":874},[860,11345,9631],{"class":978},[860,11347,11348,11351,11353,11355,11357,11360,11363,11365],{"class":862,"line":8310},[860,11349,11350],{"class":1085},"  for",[860,11352,1567],{"class":978},[860,11354,1046],{"class":1045},[860,11356,9770],{"class":870},[860,11358,11359],{"class":874}," of",[860,11361,11362],{"class":870}," selectedSeeders",[860,11364,5320],{"class":978},[860,11366,1815],{"class":874},[860,11368,11369,11371,11374,11376,11378,11380,11382,11384,11386,11388],{"class":862,"line":8327},[860,11370,1378],{"class":1045},[860,11372,11373],{"class":870}," success",[860,11375,1222],{"class":874},[860,11377,1308],{"class":1085},[860,11379,10666],{"class":866},[860,11381,871],{"class":978},[860,11383,9713],{"class":870},[860,11385,1091],{"class":874},[860,11387,10675],{"class":870},[860,11389,1417],{"class":978},[860,11391,11392,11395,11397,11400,11402,11404,11406,11408,11410,11412],{"class":862,"line":8345},[860,11393,11394],{"class":870},"    results",[860,11396,759],{"class":874},[860,11398,11399],{"class":866},"push",[860,11401,871],{"class":978},[860,11403,1828],{"class":874},[860,11405,9770],{"class":870},[860,11407,1091],{"class":874},[860,11409,11373],{"class":870},[860,11411,1855],{"class":874},[860,11413,1417],{"class":978},[860,11415,11416],{"class":862,"line":8350},[860,11417,1008],{"class":874},[860,11419,11420],{"class":862,"line":8355},[860,11421,1232],{"emptyLinePlaceholder":526},[860,11423,11424,11426,11429,11431,11433,11435,11437,11439,11442,11444,11447,11449,11452,11454,11456],{"class":862,"line":8360},[860,11425,5265],{"class":1045},[860,11427,11428],{"class":870}," successful",[860,11430,1222],{"class":874},[860,11432,11341],{"class":870},[860,11434,759],{"class":874},[860,11436,9577],{"class":866},[860,11438,871],{"class":978},[860,11440,11441],{"class":1570},"r",[860,11443,1063],{"class":1045},[860,11445,11446],{"class":870}," r",[860,11448,759],{"class":874},[860,11450,11451],{"class":870},"success",[860,11453,884],{"class":978},[860,11455,759],{"class":874},[860,11457,9866],{"class":870},[860,11459,11460,11462,11464,11466,11468,11470,11472,11474,11476,11478,11480,11482,11484,11486,11488,11490],{"class":862,"line":8384},[860,11461,5265],{"class":1045},[860,11463,10902],{"class":870},[860,11465,1222],{"class":874},[860,11467,11341],{"class":870},[860,11469,759],{"class":874},[860,11471,9577],{"class":866},[860,11473,871],{"class":978},[860,11475,11441],{"class":1570},[860,11477,1063],{"class":1045},[860,11479,10511],{"class":874},[860,11481,11441],{"class":870},[860,11483,759],{"class":874},[860,11485,11451],{"class":870},[860,11487,884],{"class":978},[860,11489,759],{"class":874},[860,11491,9866],{"class":870},[860,11493,11494],{"class":862,"line":8408},[860,11495,1232],{"emptyLinePlaceholder":526},[860,11497,11498,11500,11502,11504,11506,11509,11511,11513,11515,11517,11519],{"class":862,"line":8415},[860,11499,6765],{"class":866},[860,11501,871],{"class":978},[860,11503,875],{"class":874},[860,11505,6772],{"class":870},[860,11507,11508],{"class":878},"📊 Summary:",[860,11510,875],{"class":874},[860,11512,1091],{"class":874},[860,11514,6344],{"class":870},[860,11516,759],{"class":874},[860,11518,6795],{"class":870},[860,11520,1417],{"class":978},[860,11522,11523,11525,11527,11529,11532,11534,11537,11539,11541,11543,11545,11547],{"class":862,"line":8430},[860,11524,6765],{"class":866},[860,11526,871],{"class":978},[860,11528,6900],{"class":874},[860,11530,11531],{"class":878},"   ✅ Successful: ",[860,11533,1326],{"class":874},[860,11535,11536],{"class":870},"successful",[860,11538,1351],{"class":874},[860,11540,1091],{"class":874},[860,11542,6344],{"class":870},[860,11544,759],{"class":874},[860,11546,7208],{"class":870},[860,11548,1417],{"class":978},[860,11550,11551,11553,11555,11557,11560,11562,11565,11567,11569,11571,11573,11575,11577,11579,11581,11583,11585,11587,11589,11591],{"class":862,"line":8454},[860,11552,6765],{"class":866},[860,11554,871],{"class":978},[860,11556,6900],{"class":874},[860,11558,11559],{"class":878},"   ❌ Failed: ",[860,11561,1326],{"class":874},[860,11563,11564],{"class":870},"failed",[860,11566,1351],{"class":874},[860,11568,1091],{"class":874},[860,11570,10902],{"class":870},[860,11572,7076],{"class":874},[860,11574,10530],{"class":1836},[860,11576,6475],{"class":874},[860,11578,6344],{"class":870},[860,11580,759],{"class":874},[860,11582,7576],{"class":870},[860,11584,6485],{"class":874},[860,11586,6344],{"class":870},[860,11588,759],{"class":874},[860,11590,9977],{"class":870},[860,11592,1417],{"class":978},[860,11594,11595],{"class":862,"line":8462},[860,11596,1232],{"emptyLinePlaceholder":526},[860,11598,11599,11601,11603,11605,11607,11609,11611],{"class":862,"line":8467},[860,11600,5311],{"class":1085},[860,11602,1567],{"class":978},[860,11604,11564],{"class":870},[860,11606,7021],{"class":874},[860,11608,10530],{"class":1836},[860,11610,5320],{"class":978},[860,11612,1815],{"class":874},[860,11614,11615,11617,11619,11621,11623,11626,11628,11630,11632,11634,11636,11638,11640,11642,11644,11646],{"class":862,"line":8472},[860,11616,6895],{"class":866},[860,11618,871],{"class":978},[860,11620,875],{"class":874},[860,11622,6772],{"class":870},[860,11624,11625],{"class":878},"🎉 All seeders completed!",[860,11627,6772],{"class":870},[860,11629,875],{"class":874},[860,11631,1091],{"class":874},[860,11633,6344],{"class":870},[860,11635,759],{"class":874},[860,11637,7208],{"class":870},[860,11639,6788],{"class":874},[860,11641,6344],{"class":870},[860,11643,759],{"class":874},[860,11645,6795],{"class":870},[860,11647,1417],{"class":978},[860,11649,11650,11652,11654],{"class":862,"line":8477},[860,11651,2108],{"class":874},[860,11653,11308],{"class":1085},[860,11655,942],{"class":874},[860,11657,11658,11660,11662,11664,11666,11669,11671,11673,11675,11677,11679,11681],{"class":862,"line":8491},[860,11659,6895],{"class":866},[860,11661,871],{"class":978},[860,11663,875],{"class":874},[860,11665,6772],{"class":870},[860,11667,11668],{"class":878},"⚠️  Some failed",[860,11670,6772],{"class":870},[860,11672,875],{"class":874},[860,11674,1091],{"class":874},[860,11676,6344],{"class":870},[860,11678,759],{"class":874},[860,11680,6822],{"class":870},[860,11682,1417],{"class":978},[860,11684,11685,11687,11689,11691,11693,11695],{"class":862,"line":8534},[860,11686,10377],{"class":870},[860,11688,759],{"class":874},[860,11690,8951],{"class":866},[860,11692,871],{"class":978},[860,11694,7449],{"class":1836},[860,11696,1417],{"class":978},[860,11698,11699],{"class":862,"line":8566},[860,11700,1008],{"class":874},[860,11702,11703],{"class":862,"line":8607},[860,11704,1014],{"class":874},[860,11706,11707],{"class":862,"line":8612},[860,11708,1232],{"emptyLinePlaceholder":526},[860,11710,11711,11713,11715,11717,11719,11721,11723,11725],{"class":862,"line":8627},[860,11712,8875],{"class":866},[860,11714,1060],{"class":870},[860,11716,759],{"class":874},[860,11718,8882],{"class":866},[860,11720,871],{"class":870},[860,11722,5562],{"class":1570},[860,11724,1063],{"class":1045},[860,11726,942],{"class":874},[860,11728,11729,11731,11733,11735,11737,11740,11742,11744,11746,11748,11750],{"class":862,"line":8647},[860,11730,6765],{"class":866},[860,11732,871],{"class":978},[860,11734,875],{"class":874},[860,11736,6772],{"class":870},[860,11738,11739],{"class":878},"❌ Seeding failed",[860,11741,875],{"class":874},[860,11743,1091],{"class":874},[860,11745,6344],{"class":870},[860,11747,759],{"class":874},[860,11749,7576],{"class":870},[860,11751,1417],{"class":978},[860,11753,11754,11756,11758,11760,11762,11764,11766,11768,11770,11772],{"class":862,"line":8673},[860,11755,6765],{"class":866},[860,11757,871],{"class":978},[860,11759,5562],{"class":870},[860,11761,759],{"class":874},[860,11763,8930],{"class":870},[860,11765,1091],{"class":874},[860,11767,6344],{"class":870},[860,11769,759],{"class":874},[860,11771,7576],{"class":870},[860,11773,1417],{"class":978},[860,11775,11776,11778,11780,11782,11784,11786],{"class":862,"line":8698},[860,11777,8946],{"class":870},[860,11779,759],{"class":874},[860,11781,8951],{"class":866},[860,11783,871],{"class":978},[860,11785,7449],{"class":1836},[860,11787,1417],{"class":978},[860,11789,11790,11792],{"class":862,"line":8703},[860,11791,1219],{"class":874},[860,11793,1417],{"class":870},[851,11795,11798],{"className":5746,"code":11796,"filename":11797,"language":5749,"meta":856,"style":856},"#!/usr/bin/env node\n\n/**\n * Cloudflare Worker Configuration Extractor\n *\n * Retrieves worker configuration via Cloudflare API and generates:\n * - wrangler.\u003Cworkername>.jsonc - Full configuration\n * - wrangler.\u003Cworkername>.md - Setup guide\n */\n\nimport { writeFileSync } from 'fs'\nimport { join, dirname } from 'path'\nimport { fileURLToPath } from 'url'\nimport * as readline from 'readline'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\nconst projectRoot = join(__dirname, '..')\n\nconst colors = {\n  reset: '\\x1b[0m',\n  bright: '\\x1b[1m',\n  dim: '\\x1b[2m',\n  green: '\\x1b[32m',\n  yellow: '\\x1b[33m',\n  blue: '\\x1b[34m',\n  red: '\\x1b[31m',\n  cyan: '\\x1b[36m'\n}\n\nfunction log(message, color = colors.reset) {\n  console.log(`${color}${message}${colors.reset}`)\n}\n\nasync function promptUser(question) {\n  const rl = readline.createInterface({\n    input: process.stdin,\n    output: process.stdout\n  })\n\n  return new Promise(resolve => {\n    rl.question(question, answer => {\n      rl.close()\n      resolve(answer.trim())\n    })\n  })\n}\n\nasync function fetchAPI(url, apiToken) {\n  const response = await fetch(url, {\n    headers: {\n      'Authorization': `Bearer ${apiToken}`,\n      'Content-Type': 'application/json'\n    }\n  })\n\n  if (!response.ok) {\n    const text = await response.text()\n    throw new Error(`API Error (${response.status}): ${text}`)\n  }\n\n  const data = await response.json()\n  return data.result\n}\n\nasync function listWorkers(accountId, apiToken) {\n  log('\\n📋 Fetching workers...', colors.blue)\n  const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/workers/scripts`\n  return await fetchAPI(url, apiToken)\n}\n\nasync function selectWorker(workers) {\n  log('\\n📂 Available Workers:\\n', colors.blue + colors.bright)\n\n  workers.forEach((worker, index) => {\n    const number = `${index + 1}.`.padEnd(4)\n    log(`  ${number}${worker.id}`, colors.cyan)\n    if (worker.created_on) {\n      const date = new Date(worker.created_on).toLocaleDateString()\n      log(`        Created: ${date}`, colors.dim)\n    }\n  })\n\n  log('')\n  const answer = await promptUser('Select worker (number) or Enter to cancel: ')\n\n  if (answer === '') return null\n\n  const selection = parseInt(answer)\n  if (isNaN(selection) || selection \u003C 1 || selection > workers.length) {\n    log('❌ Invalid selection', colors.red)\n    return null\n  }\n\n  return workers[selection - 1]\n}\n\nasync function getWorkerSettings(accountId, apiToken, workerName) {\n  const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/workers/scripts/${workerName}/settings`\n  return await fetchAPI(url, apiToken)\n}\n\nfunction parseBindings(bindings) {\n  const categorized = {\n    kv_namespaces: [],\n    d1_databases: [],\n    r2_buckets: [],\n    analytics_engine_datasets: [],\n    vars: {},\n    secrets: []\n  }\n\n  for (const binding of bindings) {\n    const type = binding.type || ''\n    const name = binding.name || ''\n\n    switch (type) {\n      case 'kv_namespace':\n        categorized.kv_namespaces.push({\n          binding: name,\n          id: binding.namespace_id || ''\n        })\n        break\n\n      case 'd1':\n        categorized.d1_databases.push({\n          binding: name,\n          database_name: binding.database_name || name,\n          database_id: binding.id || ''\n        })\n        break\n\n      case 'r2_bucket':\n        categorized.r2_buckets.push({\n          binding: name,\n          bucket_name: binding.bucket_name || ''\n        })\n        break\n\n      case 'analytics_engine':\n        categorized.analytics_engine_datasets.push({\n          binding: name,\n          dataset: binding.dataset || name\n        })\n        break\n\n      case 'plain_text':\n        categorized.vars[name] = binding.text || ''\n        break\n\n      case 'secret_text':\n        categorized.secrets.push(name)\n        break\n    }\n  }\n\n  return categorized\n}\n\nfunction generateWranglerConfig(workerName, settings, bindings) {\n  const config = {\n    name: workerName,\n    main: './.output/server/index.mjs',\n    compatibility_date: settings.compatibility_date || '2024-01-01'\n  }\n\n  if (settings.compatibility_flags?.length > 0) {\n    config.compatibility_flags = settings.compatibility_flags\n  }\n\n  if (bindings.kv_namespaces.length > 0) {\n    config.kv_namespaces = bindings.kv_namespaces\n  }\n\n  if (bindings.d1_databases.length > 0) {\n    config.d1_databases = bindings.d1_databases\n  }\n\n  if (Object.keys(bindings.vars).length > 0) {\n    config.vars = bindings.vars\n  }\n\n  return config\n}\n\nasync function main() {\n  const args = process.argv.slice(2)\n\n  log('\\n' + '='.repeat(70), colors.bright)\n  log('📦 Worker Configuration Extractor', colors.blue + colors.bright)\n  log('='.repeat(70) + '\\n', colors.bright)\n\n  let apiToken = process.env.CLOUDFLARE_API_TOKEN\n  let accountId = process.env.CLOUDFLARE_ACCOUNT_ID\n  let workerName = null\n\n  for (const arg of args) {\n    if (arg.startsWith('--api-token=')) apiToken = arg.split('=')[1]\n    if (arg.startsWith('--account-id=')) accountId = arg.split('=')[1]\n    if (arg.startsWith('--worker-name=')) workerName = arg.split('=')[1]\n  }\n\n  if (!apiToken) apiToken = await promptUser('Cloudflare API Token: ')\n  if (!accountId) accountId = await promptUser('Cloudflare Account ID: ')\n\n  if (!apiToken || !accountId) {\n    log('\\n❌ API Token and Account ID required\\n', colors.red)\n    process.exit(1)\n  }\n\n  try {\n    const workers = await listWorkers(accountId, apiToken)\n\n    if (workers.length === 0) {\n      log('\\n⚠️  No workers found\\n', colors.yellow)\n      process.exit(0)\n    }\n\n    log(`✅ Found ${workers.length} worker(s)`, colors.green)\n\n    let selectedWorker\n    if (workerName) {\n      selectedWorker = workers.find(w => w.id === workerName)\n      if (!selectedWorker) {\n        log(`\\n❌ Worker \"${workerName}\" not found\\n`, colors.red)\n        process.exit(1)\n      }\n    } else {\n      selectedWorker = await selectWorker(workers)\n      if (!selectedWorker) {\n        log('\\n👋 Cancelled\\n', colors.yellow)\n        process.exit(0)\n      }\n    }\n\n    workerName = selectedWorker.id\n    log(`\\n📦 Selected: ${workerName}`, colors.cyan + colors.bright)\n\n    log('\\n🔍 Fetching configuration...', colors.blue)\n    const settings = await getWorkerSettings(accountId, apiToken, workerName)\n    const bindings = parseBindings(settings.bindings || [])\n\n    const config = generateWranglerConfig(workerName, settings, bindings)\n\n    const configFile = join(projectRoot, `wrangler.${workerName}.jsonc`)\n    writeFileSync(configFile, JSON.stringify(config, null, 2))\n\n    log(`\\n✅ Config written to: ${configFile}`, colors.green)\n    log('\\n💡 Review the file and update as needed\\n', colors.blue)\n\n  } catch (error) {\n    log(`\\n❌ Error: ${error.message}`, colors.red)\n    process.exit(1)\n  }\n}\n\nmain()\n","scripts/extract-worker-config.mjs",[816,11799,11800,11804,11808,11812,11817,11822,11827,11832,11837,11841,11845,11863,11885,11903,11921,11925,11947,11959,11981,11985,11995,12011,12027,12045,12061,12077,12093,12109,12123,12127,12131,12157,12187,12191,12195,12211,12229,12243,12255,12261,12265,12281,12301,12311,12325,12331,12337,12341,12345,12367,12389,12398,12423,12439,12443,12449,12453,12473,12492,12528,12532,12536,12554,12565,12569,12573,12595,12620,12645,12663,12667,12671,12689,12724,12728,12754,12786,12819,12836,12868,12895,12899,12905,12909,12919,12942,12946,12964,12968,12984,13023,13046,13052,13056,13060,13076,13080,13084,13110,13143,13161,13165,13169,13185,13196,13208,13219,13230,13241,13251,13260,13264,13268,13288,13307,13325,13329,13342,13357,13375,13386,13404,13411,13416,13420,13433,13450,13460,13480,13497,13503,13507,13511,13524,13541,13551,13569,13575,13579,13583,13596,13613,13623,13642,13648,13652,13656,13669,13696,13700,13704,13717,13736,13740,13744,13748,13752,13759,13763,13767,13791,13802,13813,13829,13852,13856,13860,13886,13904,13908,13912,13936,13953,13957,13961,13985,14002,14006,14010,14046,14063,14067,14071,14078,14082,14086,14098,14122,14126,14166,14197,14237,14241,14260,14280,14290,14294,14313,14364,14412,14459,14464,14469,14501,14533,14538,14559,14587,14602,14607,14612,14619,14642,14647,14668,14696,14712,14717,14722,14759,14764,14772,14785,14820,14837,14875,14891,14896,14905,14922,14937,14964,14979,14984,14989,14994,15010,15048,15053,15079,15106,15130,15135,15160,15165,15201,15236,15241,15271,15299,15304,15319,15353,15368,15373,15378,15383],{"__ignoreMap":856},[860,11801,11802],{"class":862,"line":863},[860,11803,5756],{"class":1237},[860,11805,11806],{"class":862,"line":945},[860,11807,1232],{"emptyLinePlaceholder":526},[860,11809,11810],{"class":862,"line":929},[860,11811,3820],{"class":1237},[860,11813,11814],{"class":862,"line":970},[860,11815,11816],{"class":1237}," * Cloudflare Worker Configuration Extractor\n",[860,11818,11819],{"class":862,"line":994},[860,11820,11821],{"class":1237}," *\n",[860,11823,11824],{"class":862,"line":1005},[860,11825,11826],{"class":1237}," * Retrieves worker configuration via Cloudflare API and generates:\n",[860,11828,11829],{"class":862,"line":1011},[860,11830,11831],{"class":1237}," * - wrangler.\u003Cworkername>.jsonc - Full configuration\n",[860,11833,11834],{"class":862,"line":1284},[860,11835,11836],{"class":1237}," * - wrangler.\u003Cworkername>.md - Setup guide\n",[860,11838,11839],{"class":862,"line":1289},[860,11840,3835],{"class":1237},[860,11842,11843],{"class":862,"line":1317},[860,11844,1232],{"emptyLinePlaceholder":526},[860,11846,11847,11849,11851,11853,11855,11857,11859,11861],{"class":862,"line":1356},[860,11848,1966],{"class":1085},[860,11850,1213],{"class":874},[860,11852,5816],{"class":870},[860,11854,1855],{"class":874},[860,11856,1986],{"class":1085},[860,11858,1847],{"class":874},[860,11860,5825],{"class":878},[860,11862,1994],{"class":874},[860,11864,11865,11867,11869,11871,11873,11875,11877,11879,11881,11883],{"class":862,"line":1369},[860,11866,1966],{"class":1085},[860,11868,1213],{"class":874},[860,11870,5836],{"class":870},[860,11872,1091],{"class":874},[860,11874,5841],{"class":870},[860,11876,1855],{"class":874},[860,11878,1986],{"class":1085},[860,11880,1847],{"class":874},[860,11882,889],{"class":878},[860,11884,1994],{"class":874},[860,11886,11887,11889,11891,11893,11895,11897,11899,11901],{"class":862,"line":1146},[860,11888,1966],{"class":1085},[860,11890,1213],{"class":874},[860,11892,5860],{"class":870},[860,11894,1855],{"class":874},[860,11896,1986],{"class":1085},[860,11898,1847],{"class":874},[860,11900,5869],{"class":878},[860,11902,1994],{"class":874},[860,11904,11905,11907,11909,11911,11913,11915,11917,11919],{"class":862,"line":1147},[860,11906,1966],{"class":1085},[860,11908,5204],{"class":874},[860,11910,5207],{"class":1085},[860,11912,5882],{"class":870},[860,11914,5212],{"class":1085},[860,11916,1847],{"class":874},[860,11918,5889],{"class":878},[860,11920,1994],{"class":874},[860,11922,11923],{"class":862,"line":1148},[860,11924,1232],{"emptyLinePlaceholder":526},[860,11926,11927,11929,11931,11933,11935,11937,11939,11941,11943,11945],{"class":862,"line":1434},[860,11928,1046],{"class":1045},[860,11930,5902],{"class":870},[860,11932,1052],{"class":874},[860,11934,5860],{"class":866},[860,11936,871],{"class":870},[860,11938,1966],{"class":1085},[860,11940,759],{"class":874},[860,11942,5915],{"class":870},[860,11944,759],{"class":874},[860,11946,5920],{"class":870},[860,11948,11949,11951,11953,11955,11957],{"class":862,"line":1443},[860,11950,1046],{"class":1045},[860,11952,5927],{"class":870},[860,11954,1052],{"class":874},[860,11956,5841],{"class":866},[860,11958,5934],{"class":870},[860,11960,11961,11963,11965,11967,11969,11971,11973,11975,11977,11979],{"class":862,"line":1448},[860,11962,1046],{"class":1045},[860,11964,5941],{"class":870},[860,11966,1052],{"class":874},[860,11968,5836],{"class":866},[860,11970,5948],{"class":870},[860,11972,1091],{"class":874},[860,11974,1847],{"class":874},[860,11976,5955],{"class":878},[860,11978,875],{"class":874},[860,11980,1417],{"class":870},[860,11982,11983],{"class":862,"line":1457},[860,11984,1232],{"emptyLinePlaceholder":526},[860,11986,11987,11989,11991,11993],{"class":862,"line":1462},[860,11988,1046],{"class":1045},[860,11990,5970],{"class":870},[860,11992,1052],{"class":874},[860,11994,942],{"class":874},[860,11996,11997,11999,12001,12003,12005,12007,12009],{"class":862,"line":1467},[860,11998,5979],{"class":978},[860,12000,849],{"class":874},[860,12002,1847],{"class":874},[860,12004,5986],{"class":870},[860,12006,5989],{"class":878},[860,12008,875],{"class":874},[860,12010,967],{"class":874},[860,12012,12013,12015,12017,12019,12021,12023,12025],{"class":862,"line":1885},[860,12014,5998],{"class":978},[860,12016,849],{"class":874},[860,12018,1847],{"class":874},[860,12020,5986],{"class":870},[860,12022,6007],{"class":878},[860,12024,875],{"class":874},[860,12026,967],{"class":874},[860,12028,12029,12032,12034,12036,12038,12041,12043],{"class":862,"line":1896},[860,12030,12031],{"class":978},"  dim",[860,12033,849],{"class":874},[860,12035,1847],{"class":874},[860,12037,5986],{"class":870},[860,12039,12040],{"class":878},"[2m",[860,12042,875],{"class":874},[860,12044,967],{"class":874},[860,12046,12047,12049,12051,12053,12055,12057,12059],{"class":862,"line":1917},[860,12048,6016],{"class":978},[860,12050,849],{"class":874},[860,12052,1847],{"class":874},[860,12054,5986],{"class":870},[860,12056,6025],{"class":878},[860,12058,875],{"class":874},[860,12060,967],{"class":874},[860,12062,12063,12065,12067,12069,12071,12073,12075],{"class":862,"line":1939},[860,12064,6034],{"class":978},[860,12066,849],{"class":874},[860,12068,1847],{"class":874},[860,12070,5986],{"class":870},[860,12072,6043],{"class":878},[860,12074,875],{"class":874},[860,12076,967],{"class":874},[860,12078,12079,12081,12083,12085,12087,12089,12091],{"class":862,"line":1949},[860,12080,6052],{"class":978},[860,12082,849],{"class":874},[860,12084,1847],{"class":874},[860,12086,5986],{"class":870},[860,12088,6061],{"class":878},[860,12090,875],{"class":874},[860,12092,967],{"class":874},[860,12094,12095,12097,12099,12101,12103,12105,12107],{"class":862,"line":3940},[860,12096,6070],{"class":978},[860,12098,849],{"class":874},[860,12100,1847],{"class":874},[860,12102,5986],{"class":870},[860,12104,6079],{"class":878},[860,12106,875],{"class":874},[860,12108,967],{"class":874},[860,12110,12111,12113,12115,12117,12119,12121],{"class":862,"line":3945},[860,12112,6088],{"class":978},[860,12114,849],{"class":874},[860,12116,1847],{"class":874},[860,12118,5986],{"class":870},[860,12120,6097],{"class":878},[860,12122,1994],{"class":874},[860,12124,12125],{"class":862,"line":3950},[860,12126,1014],{"class":874},[860,12128,12129],{"class":862,"line":3956},[860,12130,1232],{"emptyLinePlaceholder":526},[860,12132,12133,12135,12137,12139,12141,12143,12145,12147,12149,12151,12153,12155],{"class":862,"line":3962},[860,12134,6327],{"class":1045},[860,12136,6330],{"class":866},[860,12138,871],{"class":874},[860,12140,5730],{"class":1570},[860,12142,1091],{"class":874},[860,12144,6339],{"class":1570},[860,12146,1222],{"class":874},[860,12148,6344],{"class":870},[860,12150,759],{"class":874},[860,12152,6349],{"class":870},[860,12154,884],{"class":874},[860,12156,942],{"class":874},[860,12158,12159,12161,12163,12165,12167,12169,12171,12173,12175,12177,12179,12181,12183,12185],{"class":862,"line":3967},[860,12160,6358],{"class":870},[860,12162,759],{"class":874},[860,12164,6363],{"class":866},[860,12166,871],{"class":978},[860,12168,6368],{"class":874},[860,12170,6371],{"class":870},[860,12172,6374],{"class":874},[860,12174,5730],{"class":870},[860,12176,6374],{"class":874},[860,12178,6381],{"class":870},[860,12180,759],{"class":874},[860,12182,6349],{"class":870},[860,12184,1351],{"class":874},[860,12186,1417],{"class":978},[860,12188,12189],{"class":862,"line":3973},[860,12190,1014],{"class":874},[860,12192,12193],{"class":862,"line":3979},[860,12194,1232],{"emptyLinePlaceholder":526},[860,12196,12197,12199,12201,12203,12205,12207,12209],{"class":862,"line":3985},[860,12198,6582],{"class":1045},[860,12200,5248],{"class":1045},[860,12202,6587],{"class":866},[860,12204,871],{"class":874},[860,12206,6592],{"class":1570},[860,12208,884],{"class":874},[860,12210,942],{"class":874},[860,12212,12213,12215,12217,12219,12221,12223,12225,12227],{"class":862,"line":3991},[860,12214,5265],{"class":1045},[860,12216,6603],{"class":870},[860,12218,1222],{"class":874},[860,12220,6608],{"class":870},[860,12222,759],{"class":874},[860,12224,6613],{"class":866},[860,12226,871],{"class":978},[860,12228,1815],{"class":874},[860,12230,12231,12233,12235,12237,12239,12241],{"class":862,"line":3997},[860,12232,6622],{"class":978},[860,12234,849],{"class":874},[860,12236,2874],{"class":870},[860,12238,759],{"class":874},[860,12240,6631],{"class":870},[860,12242,967],{"class":874},[860,12244,12245,12247,12249,12251,12253],{"class":862,"line":4003},[860,12246,6638],{"class":978},[860,12248,849],{"class":874},[860,12250,2874],{"class":870},[860,12252,759],{"class":874},[860,12254,6647],{"class":870},[860,12256,12257,12259],{"class":862,"line":4008},[860,12258,2108],{"class":874},[860,12260,1417],{"class":978},[860,12262,12263],{"class":862,"line":4014},[860,12264,1232],{"emptyLinePlaceholder":526},[860,12266,12267,12269,12271,12273,12275,12277,12279],{"class":862,"line":4019},[860,12268,5357],{"class":1085},[860,12270,5330],{"class":874},[860,12272,6666],{"class":936},[860,12274,871],{"class":978},[860,12276,6671],{"class":1570},[860,12278,1063],{"class":1045},[860,12280,942],{"class":874},[860,12282,12283,12285,12287,12289,12291,12293,12295,12297,12299],{"class":862,"line":4024},[860,12284,6680],{"class":870},[860,12286,759],{"class":874},[860,12288,6592],{"class":866},[860,12290,871],{"class":978},[860,12292,6592],{"class":870},[860,12294,1091],{"class":874},[860,12296,6693],{"class":1570},[860,12298,1063],{"class":1045},[860,12300,942],{"class":874},[860,12302,12303,12305,12307,12309],{"class":862,"line":4030},[860,12304,6702],{"class":870},[860,12306,759],{"class":874},[860,12308,6707],{"class":866},[860,12310,905],{"class":978},[860,12312,12313,12315,12317,12319,12321,12323],{"class":862,"line":4036},[860,12314,6714],{"class":866},[860,12316,871],{"class":978},[860,12318,6719],{"class":870},[860,12320,759],{"class":874},[860,12322,6724],{"class":866},[860,12324,6727],{"class":978},[860,12326,12327,12329],{"class":862,"line":4042},[860,12328,6519],{"class":874},[860,12330,1417],{"class":978},[860,12332,12333,12335],{"class":862,"line":4047},[860,12334,2108],{"class":874},[860,12336,1417],{"class":978},[860,12338,12339],{"class":862,"line":4053},[860,12340,1014],{"class":874},[860,12342,12343],{"class":862,"line":4058},[860,12344,1232],{"emptyLinePlaceholder":526},[860,12346,12347,12349,12351,12354,12356,12358,12360,12363,12365],{"class":862,"line":4064},[860,12348,6582],{"class":1045},[860,12350,5248],{"class":1045},[860,12352,12353],{"class":866}," fetchAPI",[860,12355,871],{"class":874},[860,12357,5869],{"class":1570},[860,12359,1091],{"class":874},[860,12361,12362],{"class":1570}," apiToken",[860,12364,884],{"class":874},[860,12366,942],{"class":874},[860,12368,12369,12371,12374,12376,12378,12381,12383,12385,12387],{"class":862,"line":4070},[860,12370,5265],{"class":1045},[860,12372,12373],{"class":870}," response",[860,12375,1222],{"class":874},[860,12377,1308],{"class":1085},[860,12379,12380],{"class":866}," fetch",[860,12382,871],{"class":978},[860,12384,5869],{"class":870},[860,12386,1091],{"class":874},[860,12388,942],{"class":874},[860,12390,12391,12394,12396],{"class":862,"line":4076},[860,12392,12393],{"class":978},"    headers",[860,12395,849],{"class":874},[860,12397,942],{"class":874},[860,12399,12400,12402,12405,12407,12409,12411,12414,12416,12419,12421],{"class":862,"line":4081},[860,12401,4364],{"class":874},[860,12403,12404],{"class":978},"Authorization",[860,12406,875],{"class":874},[860,12408,849],{"class":874},[860,12410,7310],{"class":874},[860,12412,12413],{"class":878},"Bearer ",[860,12415,1326],{"class":874},[860,12417,12418],{"class":870},"apiToken",[860,12420,1351],{"class":874},[860,12422,967],{"class":874},[860,12424,12425,12427,12429,12431,12433,12435,12437],{"class":862,"line":4086},[860,12426,4364],{"class":874},[860,12428,5679],{"class":978},[860,12430,875],{"class":874},[860,12432,849],{"class":874},[860,12434,1847],{"class":874},[860,12436,5688],{"class":878},[860,12438,1994],{"class":874},[860,12440,12441],{"class":862,"line":4091},[860,12442,2380],{"class":874},[860,12444,12445,12447],{"class":862,"line":4096},[860,12446,2108],{"class":874},[860,12448,1417],{"class":978},[860,12450,12451],{"class":862,"line":4102},[860,12452,1232],{"emptyLinePlaceholder":526},[860,12454,12455,12457,12459,12461,12464,12466,12469,12471],{"class":862,"line":4108},[860,12456,5311],{"class":1085},[860,12458,1567],{"class":978},[860,12460,1804],{"class":874},[860,12462,12463],{"class":870},"response",[860,12465,759],{"class":874},[860,12467,12468],{"class":870},"ok",[860,12470,5320],{"class":978},[860,12472,1815],{"class":874},[860,12474,12475,12477,12480,12482,12484,12486,12488,12490],{"class":862,"line":4114},[860,12476,1378],{"class":1045},[860,12478,12479],{"class":870}," text",[860,12481,1222],{"class":874},[860,12483,1308],{"class":1085},[860,12485,12373],{"class":870},[860,12487,759],{"class":874},[860,12489,720],{"class":866},[860,12491,905],{"class":978},[860,12493,12494,12496,12498,12500,12502,12504,12507,12509,12511,12513,12515,12517,12520,12522,12524,12526],{"class":862,"line":4119},[860,12495,5327],{"class":1085},[860,12497,5330],{"class":874},[860,12499,5333],{"class":866},[860,12501,871],{"class":978},[860,12503,6900],{"class":874},[860,12505,12506],{"class":878},"API Error (",[860,12508,1326],{"class":874},[860,12510,12463],{"class":870},[860,12512,759],{"class":874},[860,12514,5605],{"class":870},[860,12516,1219],{"class":874},[860,12518,12519],{"class":878},"): ",[860,12521,1326],{"class":874},[860,12523,720],{"class":870},[860,12525,1351],{"class":874},[860,12527,1417],{"class":978},[860,12529,12530],{"class":862,"line":4125},[860,12531,1008],{"class":874},[860,12533,12534],{"class":862,"line":4131},[860,12535,1232],{"emptyLinePlaceholder":526},[860,12537,12538,12540,12542,12544,12546,12548,12550,12552],{"class":862,"line":4136},[860,12539,5265],{"class":1045},[860,12541,1296],{"class":870},[860,12543,1222],{"class":874},[860,12545,1308],{"class":1085},[860,12547,12373],{"class":870},[860,12549,759],{"class":874},[860,12551,3020],{"class":866},[860,12553,905],{"class":978},[860,12555,12556,12558,12560,12562],{"class":862,"line":4141},[860,12557,5357],{"class":1085},[860,12559,1296],{"class":870},[860,12561,759],{"class":874},[860,12563,12564],{"class":870},"result\n",[860,12566,12567],{"class":862,"line":4146},[860,12568,1014],{"class":874},[860,12570,12571],{"class":862,"line":4152},[860,12572,1232],{"emptyLinePlaceholder":526},[860,12574,12575,12577,12579,12582,12584,12587,12589,12591,12593],{"class":862,"line":4157},[860,12576,6582],{"class":1045},[860,12578,5248],{"class":1045},[860,12580,12581],{"class":866}," listWorkers",[860,12583,871],{"class":874},[860,12585,12586],{"class":1570},"accountId",[860,12588,1091],{"class":874},[860,12590,12362],{"class":1570},[860,12592,884],{"class":874},[860,12594,942],{"class":874},[860,12596,12597,12599,12601,12603,12605,12608,12610,12612,12614,12616,12618],{"class":862,"line":4163},[860,12598,6765],{"class":866},[860,12600,871],{"class":978},[860,12602,875],{"class":874},[860,12604,6772],{"class":870},[860,12606,12607],{"class":878},"📋 Fetching workers...",[860,12609,875],{"class":874},[860,12611,1091],{"class":874},[860,12613,6344],{"class":870},[860,12615,759],{"class":874},[860,12617,484],{"class":870},[860,12619,1417],{"class":978},[860,12621,12622,12624,12627,12629,12631,12634,12636,12638,12640,12643],{"class":862,"line":4169},[860,12623,5265],{"class":1045},[860,12625,12626],{"class":870}," url",[860,12628,1222],{"class":874},[860,12630,7310],{"class":874},[860,12632,12633],{"class":878},"https://api.cloudflare.com/client/v4/accounts/",[860,12635,1326],{"class":874},[860,12637,12586],{"class":870},[860,12639,1219],{"class":874},[860,12641,12642],{"class":878},"/workers/scripts",[860,12644,8183],{"class":874},[860,12646,12647,12649,12651,12653,12655,12657,12659,12661],{"class":862,"line":4174},[860,12648,5357],{"class":1085},[860,12650,1308],{"class":1085},[860,12652,12353],{"class":866},[860,12654,871],{"class":978},[860,12656,5869],{"class":870},[860,12658,1091],{"class":874},[860,12660,12362],{"class":870},[860,12662,1417],{"class":978},[860,12664,12665],{"class":862,"line":6800},[860,12666,1014],{"class":874},[860,12668,12669],{"class":862,"line":6827},[860,12670,1232],{"emptyLinePlaceholder":526},[860,12672,12673,12675,12677,12680,12682,12685,12687],{"class":862,"line":6832},[860,12674,6582],{"class":1045},[860,12676,5248],{"class":1045},[860,12678,12679],{"class":866}," selectWorker",[860,12681,871],{"class":874},[860,12683,12684],{"class":1570},"workers",[860,12686,884],{"class":874},[860,12688,942],{"class":874},[860,12690,12691,12693,12695,12697,12699,12702,12704,12706,12708,12710,12712,12714,12716,12718,12720,12722],{"class":862,"line":6861},[860,12692,6765],{"class":866},[860,12694,871],{"class":978},[860,12696,875],{"class":874},[860,12698,6772],{"class":870},[860,12700,12701],{"class":878},"📂 Available Workers:",[860,12703,6772],{"class":870},[860,12705,875],{"class":874},[860,12707,1091],{"class":874},[860,12709,6344],{"class":870},[860,12711,759],{"class":874},[860,12713,484],{"class":870},[860,12715,6788],{"class":874},[860,12717,6344],{"class":870},[860,12719,759],{"class":874},[860,12721,6795],{"class":870},[860,12723,1417],{"class":978},[860,12725,12726],{"class":862,"line":6892},[860,12727,1232],{"emptyLinePlaceholder":526},[860,12729,12730,12733,12735,12737,12739,12741,12744,12746,12748,12750,12752],{"class":862,"line":6961},[860,12731,12732],{"class":870},"  workers",[860,12734,759],{"class":874},[860,12736,6840],{"class":866},[860,12738,871],{"class":978},[860,12740,871],{"class":874},[860,12742,12743],{"class":1570},"worker",[860,12745,1091],{"class":874},[860,12747,6852],{"class":1570},[860,12749,884],{"class":874},[860,12751,1063],{"class":1045},[860,12753,942],{"class":874},[860,12755,12756,12758,12760,12762,12764,12766,12768,12770,12772,12774,12776,12778,12780,12782,12784],{"class":862,"line":6968},[860,12757,1378],{"class":1045},[860,12759,9730],{"class":870},[860,12761,1222],{"class":874},[860,12763,9735],{"class":874},[860,12765,6906],{"class":870},[860,12767,6909],{"class":874},[860,12769,6912],{"class":1836},[860,12771,1219],{"class":874},[860,12773,759],{"class":878},[860,12775,6900],{"class":874},[860,12777,759],{"class":874},[860,12779,9752],{"class":866},[860,12781,871],{"class":978},[860,12783,9757],{"class":1836},[860,12785,1417],{"class":978},[860,12787,12788,12790,12792,12794,12796,12798,12800,12802,12804,12807,12809,12811,12813,12815,12817],{"class":862,"line":6973},[860,12789,6895],{"class":866},[860,12791,871],{"class":978},[860,12793,6900],{"class":874},[860,12795,9918],{"class":874},[860,12797,9921],{"class":870},[860,12799,6374],{"class":874},[860,12801,12743],{"class":870},[860,12803,759],{"class":874},[860,12805,12806],{"class":870},"id",[860,12808,1351],{"class":874},[860,12810,1091],{"class":874},[860,12812,6344],{"class":870},[860,12814,759],{"class":874},[860,12816,6956],{"class":870},[860,12818,1417],{"class":978},[860,12820,12821,12823,12825,12827,12829,12832,12834],{"class":862,"line":6985},[860,12822,6541],{"class":1085},[860,12824,1567],{"class":978},[860,12826,12743],{"class":870},[860,12828,759],{"class":874},[860,12830,12831],{"class":870},"created_on",[860,12833,5320],{"class":978},[860,12835,1815],{"class":874},[860,12837,12838,12841,12844,12846,12848,12851,12853,12855,12857,12859,12861,12863,12866],{"class":862,"line":7009},[860,12839,12840],{"class":1045},"      const",[860,12842,12843],{"class":870}," date",[860,12845,1222],{"class":874},[860,12847,5330],{"class":874},[860,12849,12850],{"class":866}," Date",[860,12852,871],{"class":978},[860,12854,12743],{"class":870},[860,12856,759],{"class":874},[860,12858,12831],{"class":870},[860,12860,884],{"class":978},[860,12862,759],{"class":874},[860,12864,12865],{"class":866},"toLocaleDateString",[860,12867,905],{"class":978},[860,12869,12870,12872,12874,12876,12879,12881,12883,12885,12887,12889,12891,12893],{"class":862,"line":7041},[860,12871,7460],{"class":866},[860,12873,871],{"class":978},[860,12875,6900],{"class":874},[860,12877,12878],{"class":878},"        Created: ",[860,12880,1326],{"class":874},[860,12882,2067],{"class":870},[860,12884,1351],{"class":874},[860,12886,1091],{"class":874},[860,12888,6344],{"class":870},[860,12890,759],{"class":874},[860,12892,9977],{"class":870},[860,12894,1417],{"class":978},[860,12896,12897],{"class":862,"line":7046},[860,12898,2380],{"class":874},[860,12900,12901,12903],{"class":862,"line":7091},[860,12902,2108],{"class":874},[860,12904,1417],{"class":978},[860,12906,12907],{"class":862,"line":7115},[860,12908,1232],{"emptyLinePlaceholder":526},[860,12910,12911,12913,12915,12917],{"class":862,"line":7130},[860,12912,6765],{"class":866},[860,12914,871],{"class":978},[860,12916,6980],{"class":874},[860,12918,1417],{"class":978},[860,12920,12921,12923,12925,12927,12929,12931,12933,12935,12938,12940],{"class":862,"line":7135},[860,12922,5265],{"class":1045},[860,12924,6693],{"class":870},[860,12926,1222],{"class":874},[860,12928,1308],{"class":1085},[860,12930,6587],{"class":866},[860,12932,871],{"class":978},[860,12934,875],{"class":874},[860,12936,12937],{"class":878},"Select worker (number) or Enter to cancel: ",[860,12939,875],{"class":874},[860,12941,1417],{"class":978},[860,12943,12944],{"class":862,"line":7140},[860,12945,1232],{"emptyLinePlaceholder":526},[860,12947,12948,12950,12952,12954,12956,12958,12960,12962],{"class":862,"line":7163},[860,12949,5311],{"class":1085},[860,12951,1567],{"class":978},[860,12953,6719],{"class":870},[860,12955,7021],{"class":874},[860,12957,1094],{"class":874},[860,12959,5320],{"class":978},[860,12961,2914],{"class":1085},[860,12963,6558],{"class":874},[860,12965,12966],{"class":862,"line":7213},[860,12967,1232],{"emptyLinePlaceholder":526},[860,12969,12970,12972,12974,12976,12978,12980,12982],{"class":862,"line":7221},[860,12971,5265],{"class":1045},[860,12973,7014],{"class":870},[860,12975,1222],{"class":874},[860,12977,7032],{"class":866},[860,12979,871],{"class":978},[860,12981,6719],{"class":870},[860,12983,1417],{"class":978},[860,12985,12986,12988,12990,12992,12994,12996,12998,13000,13002,13004,13006,13008,13010,13012,13015,13017,13019,13021],{"class":862,"line":7226},[860,12987,5311],{"class":1085},[860,12989,1567],{"class":978},[860,12991,7053],{"class":866},[860,12993,871],{"class":978},[860,12995,7058],{"class":870},[860,12997,5320],{"class":978},[860,12999,2887],{"class":874},[860,13001,7014],{"class":870},[860,13003,7067],{"class":874},[860,13005,6912],{"class":1836},[860,13007,5284],{"class":874},[860,13009,7014],{"class":870},[860,13011,7076],{"class":874},[860,13013,13014],{"class":870}," workers",[860,13016,759],{"class":874},[860,13018,7084],{"class":870},[860,13020,5320],{"class":978},[860,13022,1815],{"class":874},[860,13024,13025,13027,13029,13031,13034,13036,13038,13040,13042,13044],{"class":862,"line":7231},[860,13026,6895],{"class":866},[860,13028,871],{"class":978},[860,13030,875],{"class":874},[860,13032,13033],{"class":878},"❌ Invalid selection",[860,13035,875],{"class":874},[860,13037,1091],{"class":874},[860,13039,6344],{"class":870},[860,13041,759],{"class":874},[860,13043,7576],{"class":870},[860,13045,1417],{"class":978},[860,13047,13048,13050],{"class":862,"line":7249},[860,13049,1451],{"class":1085},[860,13051,6558],{"class":874},[860,13053,13054],{"class":862,"line":7288},[860,13055,1008],{"class":874},[860,13057,13058],{"class":862,"line":7293},[860,13059,1232],{"emptyLinePlaceholder":526},[860,13061,13062,13064,13066,13068,13070,13072,13074],{"class":862,"line":7300},[860,13063,5357],{"class":1085},[860,13065,13014],{"class":870},[860,13067,7122],{"class":978},[860,13069,7058],{"class":870},[860,13071,7156],{"class":874},[860,13073,6912],{"class":1836},[860,13075,4337],{"class":978},[860,13077,13078],{"class":862,"line":7327},[860,13079,1014],{"class":874},[860,13081,13082],{"class":862,"line":7341},[860,13083,1232],{"emptyLinePlaceholder":526},[860,13085,13086,13088,13090,13093,13095,13097,13099,13101,13103,13106,13108],{"class":862,"line":7359},[860,13087,6582],{"class":1045},[860,13089,5248],{"class":1045},[860,13091,13092],{"class":866}," getWorkerSettings",[860,13094,871],{"class":874},[860,13096,12586],{"class":1570},[860,13098,1091],{"class":874},[860,13100,12362],{"class":1570},[860,13102,1091],{"class":874},[860,13104,13105],{"class":1570}," workerName",[860,13107,884],{"class":874},[860,13109,942],{"class":874},[860,13111,13112,13114,13116,13118,13120,13122,13124,13126,13128,13131,13133,13136,13138,13141],{"class":862,"line":7374},[860,13113,5265],{"class":1045},[860,13115,12626],{"class":870},[860,13117,1222],{"class":874},[860,13119,7310],{"class":874},[860,13121,12633],{"class":878},[860,13123,1326],{"class":874},[860,13125,12586],{"class":870},[860,13127,1219],{"class":874},[860,13129,13130],{"class":878},"/workers/scripts/",[860,13132,1326],{"class":874},[860,13134,13135],{"class":870},"workerName",[860,13137,1219],{"class":874},[860,13139,13140],{"class":878},"/settings",[860,13142,8183],{"class":874},[860,13144,13145,13147,13149,13151,13153,13155,13157,13159],{"class":862,"line":7380},[860,13146,5357],{"class":1085},[860,13148,1308],{"class":1085},[860,13150,12353],{"class":866},[860,13152,871],{"class":978},[860,13154,5869],{"class":870},[860,13156,1091],{"class":874},[860,13158,12362],{"class":870},[860,13160,1417],{"class":978},[860,13162,13163],{"class":862,"line":7385},[860,13164,1014],{"class":874},[860,13166,13167],{"class":862,"line":7433},[860,13168,1232],{"emptyLinePlaceholder":526},[860,13170,13171,13173,13176,13178,13181,13183],{"class":862,"line":7457},[860,13172,6327],{"class":1045},[860,13174,13175],{"class":866}," parseBindings",[860,13177,871],{"class":874},[860,13179,13180],{"class":1570},"bindings",[860,13182,884],{"class":874},[860,13184,942],{"class":874},[860,13186,13187,13189,13192,13194],{"class":862,"line":7482},[860,13188,5265],{"class":1045},[860,13190,13191],{"class":870}," categorized",[860,13193,1222],{"class":874},[860,13195,942],{"class":874},[860,13197,13198,13201,13203,13206],{"class":862,"line":7515},[860,13199,13200],{"class":978},"    kv_namespaces",[860,13202,849],{"class":874},[860,13204,13205],{"class":978}," []",[860,13207,967],{"class":874},[860,13209,13210,13213,13215,13217],{"class":862,"line":7529},[860,13211,13212],{"class":978},"    d1_databases",[860,13214,849],{"class":874},[860,13216,13205],{"class":978},[860,13218,967],{"class":874},[860,13220,13221,13224,13226,13228],{"class":862,"line":7534},[860,13222,13223],{"class":978},"    r2_buckets",[860,13225,849],{"class":874},[860,13227,13205],{"class":978},[860,13229,967],{"class":874},[860,13231,13232,13235,13237,13239],{"class":862,"line":7541},[860,13233,13234],{"class":978},"    analytics_engine_datasets",[860,13236,849],{"class":874},[860,13238,13205],{"class":978},[860,13240,967],{"class":874},[860,13242,13243,13246,13248],{"class":862,"line":7556},[860,13244,13245],{"class":978},"    vars",[860,13247,849],{"class":874},[860,13249,13250],{"class":874}," {},\n",[860,13252,13253,13256,13258],{"class":862,"line":7581},[860,13254,13255],{"class":978},"    secrets",[860,13257,849],{"class":874},[860,13259,9631],{"class":978},[860,13261,13262],{"class":862,"line":7588},[860,13263,1008],{"class":874},[860,13265,13266],{"class":862,"line":7593},[860,13267,1232],{"emptyLinePlaceholder":526},[860,13269,13270,13272,13274,13276,13279,13281,13284,13286],{"class":862,"line":7598},[860,13271,11350],{"class":1085},[860,13273,1567],{"class":978},[860,13275,1046],{"class":1045},[860,13277,13278],{"class":870}," binding",[860,13280,11359],{"class":874},[860,13282,13283],{"class":870}," bindings",[860,13285,5320],{"class":978},[860,13287,1815],{"class":874},[860,13289,13290,13292,13295,13297,13299,13301,13303,13305],{"class":862,"line":7603},[860,13291,1378],{"class":1045},[860,13293,13294],{"class":870}," type",[860,13296,1222],{"class":874},[860,13298,13278],{"class":870},[860,13300,759],{"class":874},[860,13302,4463],{"class":870},[860,13304,5284],{"class":874},[860,13306,6889],{"class":874},[860,13308,13309,13311,13313,13315,13317,13319,13321,13323],{"class":862,"line":7628},[860,13310,1378],{"class":1045},[860,13312,6140],{"class":870},[860,13314,1222],{"class":874},[860,13316,13278],{"class":870},[860,13318,759],{"class":874},[860,13320,4429],{"class":870},[860,13322,5284],{"class":874},[860,13324,6889],{"class":874},[860,13326,13327],{"class":862,"line":7653},[860,13328,1232],{"emptyLinePlaceholder":526},[860,13330,13331,13334,13336,13338,13340],{"class":862,"line":7692},[860,13332,13333],{"class":1085},"    switch",[860,13335,1567],{"class":978},[860,13337,4463],{"class":870},[860,13339,5320],{"class":978},[860,13341,1815],{"class":874},[860,13343,13344,13347,13349,13352,13354],{"class":862,"line":7697},[860,13345,13346],{"class":1085},"      case",[860,13348,1847],{"class":874},[860,13350,13351],{"class":878},"kv_namespace",[860,13353,875],{"class":874},[860,13355,13356],{"class":874},":\n",[860,13358,13359,13362,13364,13367,13369,13371,13373],{"class":862,"line":7704},[860,13360,13361],{"class":870},"        categorized",[860,13363,759],{"class":874},[860,13365,13366],{"class":870},"kv_namespaces",[860,13368,759],{"class":874},[860,13370,11399],{"class":866},[860,13372,871],{"class":978},[860,13374,1815],{"class":874},[860,13376,13377,13380,13382,13384],{"class":862,"line":7729},[860,13378,13379],{"class":978},"          binding",[860,13381,849],{"class":874},[860,13383,6140],{"class":870},[860,13385,967],{"class":874},[860,13387,13388,13391,13393,13395,13397,13400,13402],{"class":862,"line":7742},[860,13389,13390],{"class":978},"          id",[860,13392,849],{"class":874},[860,13394,13278],{"class":870},[860,13396,759],{"class":874},[860,13398,13399],{"class":870},"namespace_id",[860,13401,5284],{"class":874},[860,13403,6889],{"class":874},[860,13405,13406,13409],{"class":862,"line":7766},[860,13407,13408],{"class":874},"        }",[860,13410,1417],{"class":978},[860,13412,13413],{"class":862,"line":7779},[860,13414,13415],{"class":1085},"        break\n",[860,13417,13418],{"class":862,"line":7784},[860,13419,1232],{"emptyLinePlaceholder":526},[860,13421,13422,13424,13426,13429,13431],{"class":862,"line":7789},[860,13423,13346],{"class":1085},[860,13425,1847],{"class":874},[860,13427,13428],{"class":878},"d1",[860,13430,875],{"class":874},[860,13432,13356],{"class":874},[860,13434,13435,13437,13439,13442,13444,13446,13448],{"class":862,"line":7831},[860,13436,13361],{"class":870},[860,13438,759],{"class":874},[860,13440,13441],{"class":870},"d1_databases",[860,13443,759],{"class":874},[860,13445,11399],{"class":866},[860,13447,871],{"class":978},[860,13449,1815],{"class":874},[860,13451,13452,13454,13456,13458],{"class":862,"line":7852},[860,13453,13379],{"class":978},[860,13455,849],{"class":874},[860,13457,6140],{"class":870},[860,13459,967],{"class":874},[860,13461,13462,13465,13467,13469,13471,13474,13476,13478],{"class":862,"line":7876},[860,13463,13464],{"class":978},"          database_name",[860,13466,849],{"class":874},[860,13468,13278],{"class":870},[860,13470,759],{"class":874},[860,13472,13473],{"class":870},"database_name",[860,13475,5284],{"class":874},[860,13477,6140],{"class":870},[860,13479,967],{"class":874},[860,13481,13482,13485,13487,13489,13491,13493,13495],{"class":862,"line":7908},[860,13483,13484],{"class":978},"          database_id",[860,13486,849],{"class":874},[860,13488,13278],{"class":870},[860,13490,759],{"class":874},[860,13492,12806],{"class":870},[860,13494,5284],{"class":874},[860,13496,6889],{"class":874},[860,13498,13499,13501],{"class":862,"line":7921},[860,13500,13408],{"class":874},[860,13502,1417],{"class":978},[860,13504,13505],{"class":862,"line":7926},[860,13506,13415],{"class":1085},[860,13508,13509],{"class":862,"line":7933},[860,13510,1232],{"emptyLinePlaceholder":526},[860,13512,13513,13515,13517,13520,13522],{"class":862,"line":7948},[860,13514,13346],{"class":1085},[860,13516,1847],{"class":874},[860,13518,13519],{"class":878},"r2_bucket",[860,13521,875],{"class":874},[860,13523,13356],{"class":874},[860,13525,13526,13528,13530,13533,13535,13537,13539],{"class":862,"line":7972},[860,13527,13361],{"class":870},[860,13529,759],{"class":874},[860,13531,13532],{"class":870},"r2_buckets",[860,13534,759],{"class":874},[860,13536,11399],{"class":866},[860,13538,871],{"class":978},[860,13540,1815],{"class":874},[860,13542,13543,13545,13547,13549],{"class":862,"line":7979},[860,13544,13379],{"class":978},[860,13546,849],{"class":874},[860,13548,6140],{"class":870},[860,13550,967],{"class":874},[860,13552,13553,13556,13558,13560,13562,13565,13567],{"class":862,"line":7984},[860,13554,13555],{"class":978},"          bucket_name",[860,13557,849],{"class":874},[860,13559,13278],{"class":870},[860,13561,759],{"class":874},[860,13563,13564],{"class":870},"bucket_name",[860,13566,5284],{"class":874},[860,13568,6889],{"class":874},[860,13570,13571,13573],{"class":862,"line":7989},[860,13572,13408],{"class":874},[860,13574,1417],{"class":978},[860,13576,13577],{"class":862,"line":7994},[860,13578,13415],{"class":1085},[860,13580,13581],{"class":862,"line":8021},[860,13582,1232],{"emptyLinePlaceholder":526},[860,13584,13585,13587,13589,13592,13594],{"class":862,"line":8047},[860,13586,13346],{"class":1085},[860,13588,1847],{"class":874},[860,13590,13591],{"class":878},"analytics_engine",[860,13593,875],{"class":874},[860,13595,13356],{"class":874},[860,13597,13598,13600,13602,13605,13607,13609,13611],{"class":862,"line":8052},[860,13599,13361],{"class":870},[860,13601,759],{"class":874},[860,13603,13604],{"class":870},"analytics_engine_datasets",[860,13606,759],{"class":874},[860,13608,11399],{"class":866},[860,13610,871],{"class":978},[860,13612,1815],{"class":874},[860,13614,13615,13617,13619,13621],{"class":862,"line":8059},[860,13616,13379],{"class":978},[860,13618,849],{"class":874},[860,13620,6140],{"class":870},[860,13622,967],{"class":874},[860,13624,13625,13628,13630,13632,13634,13637,13639],{"class":862,"line":8086},[860,13626,13627],{"class":978},"          dataset",[860,13629,849],{"class":874},[860,13631,13278],{"class":870},[860,13633,759],{"class":874},[860,13635,13636],{"class":870},"dataset",[860,13638,5284],{"class":874},[860,13640,13641],{"class":870}," name\n",[860,13643,13644,13646],{"class":862,"line":8114},[860,13645,13408],{"class":874},[860,13647,1417],{"class":978},[860,13649,13650],{"class":862,"line":8119},[860,13651,13415],{"class":1085},[860,13653,13654],{"class":862,"line":8132},[860,13655,1232],{"emptyLinePlaceholder":526},[860,13657,13658,13660,13662,13665,13667],{"class":862,"line":8148},[860,13659,13346],{"class":1085},[860,13661,1847],{"class":874},[860,13663,13664],{"class":878},"plain_text",[860,13666,875],{"class":874},[860,13668,13356],{"class":874},[860,13670,13671,13673,13675,13678,13680,13682,13684,13686,13688,13690,13692,13694],{"class":862,"line":8166},[860,13672,13361],{"class":870},[860,13674,759],{"class":874},[860,13676,13677],{"class":870},"vars",[860,13679,7122],{"class":978},[860,13681,4429],{"class":870},[860,13683,2814],{"class":978},[860,13685,1052],{"class":874},[860,13687,13278],{"class":870},[860,13689,759],{"class":874},[860,13691,720],{"class":870},[860,13693,5284],{"class":874},[860,13695,6889],{"class":874},[860,13697,13698],{"class":862,"line":8186},[860,13699,13415],{"class":1085},[860,13701,13702],{"class":862,"line":8192},[860,13703,1232],{"emptyLinePlaceholder":526},[860,13705,13706,13708,13710,13713,13715],{"class":862,"line":8197},[860,13707,13346],{"class":1085},[860,13709,1847],{"class":874},[860,13711,13712],{"class":878},"secret_text",[860,13714,875],{"class":874},[860,13716,13356],{"class":874},[860,13718,13719,13721,13723,13726,13728,13730,13732,13734],{"class":862,"line":8202},[860,13720,13361],{"class":870},[860,13722,759],{"class":874},[860,13724,13725],{"class":870},"secrets",[860,13727,759],{"class":874},[860,13729,11399],{"class":866},[860,13731,871],{"class":978},[860,13733,4429],{"class":870},[860,13735,1417],{"class":978},[860,13737,13738],{"class":862,"line":8216},[860,13739,13415],{"class":1085},[860,13741,13742],{"class":862,"line":8231},[860,13743,2380],{"class":874},[860,13745,13746],{"class":862,"line":8248},[860,13747,1008],{"class":874},[860,13749,13750],{"class":862,"line":8266},[860,13751,1232],{"emptyLinePlaceholder":526},[860,13753,13754,13756],{"class":862,"line":8271},[860,13755,5357],{"class":1085},[860,13757,13758],{"class":870}," categorized\n",[860,13760,13761],{"class":862,"line":8276},[860,13762,1014],{"class":874},[860,13764,13765],{"class":862,"line":8281},[860,13766,1232],{"emptyLinePlaceholder":526},[860,13768,13769,13771,13774,13776,13778,13780,13783,13785,13787,13789],{"class":862,"line":8295},[860,13770,6327],{"class":1045},[860,13772,13773],{"class":866}," generateWranglerConfig",[860,13775,871],{"class":874},[860,13777,13135],{"class":1570},[860,13779,1091],{"class":874},[860,13781,13782],{"class":1570}," settings",[860,13784,1091],{"class":874},[860,13786,13283],{"class":1570},[860,13788,884],{"class":874},[860,13790,942],{"class":874},[860,13792,13793,13795,13798,13800],{"class":862,"line":8310},[860,13794,5265],{"class":1045},[860,13796,13797],{"class":870}," config",[860,13799,1222],{"class":874},[860,13801,942],{"class":874},[860,13803,13804,13807,13809,13811],{"class":862,"line":8327},[860,13805,13806],{"class":978},"    name",[860,13808,849],{"class":874},[860,13810,13105],{"class":870},[860,13812,967],{"class":874},[860,13814,13815,13818,13820,13822,13825,13827],{"class":862,"line":8345},[860,13816,13817],{"class":978},"    main",[860,13819,849],{"class":874},[860,13821,1847],{"class":874},[860,13823,13824],{"class":878},"./.output/server/index.mjs",[860,13826,875],{"class":874},[860,13828,967],{"class":874},[860,13830,13831,13834,13836,13838,13840,13843,13845,13847,13850],{"class":862,"line":8350},[860,13832,13833],{"class":978},"    compatibility_date",[860,13835,849],{"class":874},[860,13837,13782],{"class":870},[860,13839,759],{"class":874},[860,13841,13842],{"class":870},"compatibility_date",[860,13844,5284],{"class":874},[860,13846,1847],{"class":874},[860,13848,13849],{"class":878},"2024-01-01",[860,13851,1994],{"class":874},[860,13853,13854],{"class":862,"line":8355},[860,13855,1008],{"class":874},[860,13857,13858],{"class":862,"line":8360},[860,13859,1232],{"emptyLinePlaceholder":526},[860,13861,13862,13864,13866,13869,13871,13874,13876,13878,13880,13882,13884],{"class":862,"line":8384},[860,13863,5311],{"class":1085},[860,13865,1567],{"class":978},[860,13867,13868],{"class":870},"settings",[860,13870,759],{"class":874},[860,13872,13873],{"class":870},"compatibility_flags",[860,13875,2898],{"class":874},[860,13877,7084],{"class":870},[860,13879,7076],{"class":874},[860,13881,10530],{"class":1836},[860,13883,5320],{"class":978},[860,13885,1815],{"class":874},[860,13887,13888,13891,13893,13895,13897,13899,13901],{"class":862,"line":8408},[860,13889,13890],{"class":870},"    config",[860,13892,759],{"class":874},[860,13894,13873],{"class":870},[860,13896,1222],{"class":874},[860,13898,13782],{"class":870},[860,13900,759],{"class":874},[860,13902,13903],{"class":870},"compatibility_flags\n",[860,13905,13906],{"class":862,"line":8415},[860,13907,1008],{"class":874},[860,13909,13910],{"class":862,"line":8430},[860,13911,1232],{"emptyLinePlaceholder":526},[860,13913,13914,13916,13918,13920,13922,13924,13926,13928,13930,13932,13934],{"class":862,"line":8454},[860,13915,5311],{"class":1085},[860,13917,1567],{"class":978},[860,13919,13180],{"class":870},[860,13921,759],{"class":874},[860,13923,13366],{"class":870},[860,13925,759],{"class":874},[860,13927,7084],{"class":870},[860,13929,7076],{"class":874},[860,13931,10530],{"class":1836},[860,13933,5320],{"class":978},[860,13935,1815],{"class":874},[860,13937,13938,13940,13942,13944,13946,13948,13950],{"class":862,"line":8462},[860,13939,13890],{"class":870},[860,13941,759],{"class":874},[860,13943,13366],{"class":870},[860,13945,1222],{"class":874},[860,13947,13283],{"class":870},[860,13949,759],{"class":874},[860,13951,13952],{"class":870},"kv_namespaces\n",[860,13954,13955],{"class":862,"line":8467},[860,13956,1008],{"class":874},[860,13958,13959],{"class":862,"line":8472},[860,13960,1232],{"emptyLinePlaceholder":526},[860,13962,13963,13965,13967,13969,13971,13973,13975,13977,13979,13981,13983],{"class":862,"line":8477},[860,13964,5311],{"class":1085},[860,13966,1567],{"class":978},[860,13968,13180],{"class":870},[860,13970,759],{"class":874},[860,13972,13441],{"class":870},[860,13974,759],{"class":874},[860,13976,7084],{"class":870},[860,13978,7076],{"class":874},[860,13980,10530],{"class":1836},[860,13982,5320],{"class":978},[860,13984,1815],{"class":874},[860,13986,13987,13989,13991,13993,13995,13997,13999],{"class":862,"line":8491},[860,13988,13890],{"class":870},[860,13990,759],{"class":874},[860,13992,13441],{"class":870},[860,13994,1222],{"class":874},[860,13996,13283],{"class":870},[860,13998,759],{"class":874},[860,14000,14001],{"class":870},"d1_databases\n",[860,14003,14004],{"class":862,"line":8534},[860,14005,1008],{"class":874},[860,14007,14008],{"class":862,"line":8566},[860,14009,1232],{"emptyLinePlaceholder":526},[860,14011,14012,14014,14016,14019,14021,14024,14026,14028,14030,14032,14034,14036,14038,14040,14042,14044],{"class":862,"line":8607},[860,14013,5311],{"class":1085},[860,14015,1567],{"class":978},[860,14017,14018],{"class":870},"Object",[860,14020,759],{"class":874},[860,14022,14023],{"class":866},"keys",[860,14025,871],{"class":978},[860,14027,13180],{"class":870},[860,14029,759],{"class":874},[860,14031,13677],{"class":870},[860,14033,884],{"class":978},[860,14035,759],{"class":874},[860,14037,7084],{"class":870},[860,14039,7076],{"class":874},[860,14041,10530],{"class":1836},[860,14043,5320],{"class":978},[860,14045,1815],{"class":874},[860,14047,14048,14050,14052,14054,14056,14058,14060],{"class":862,"line":8612},[860,14049,13890],{"class":870},[860,14051,759],{"class":874},[860,14053,13677],{"class":870},[860,14055,1222],{"class":874},[860,14057,13283],{"class":870},[860,14059,759],{"class":874},[860,14061,14062],{"class":870},"vars\n",[860,14064,14065],{"class":862,"line":8627},[860,14066,1008],{"class":874},[860,14068,14069],{"class":862,"line":8647},[860,14070,1232],{"emptyLinePlaceholder":526},[860,14072,14073,14075],{"class":862,"line":8673},[860,14074,5357],{"class":1085},[860,14076,14077],{"class":870}," config\n",[860,14079,14080],{"class":862,"line":8698},[860,14081,1014],{"class":874},[860,14083,14084],{"class":862,"line":8703},[860,14085,1232],{"emptyLinePlaceholder":526},[860,14087,14088,14090,14092,14094,14096],{"class":862,"line":8723},[860,14089,6582],{"class":1045},[860,14091,5248],{"class":1045},[860,14093,8484],{"class":866},[860,14095,1060],{"class":874},[860,14097,942],{"class":874},[860,14099,14100,14102,14104,14106,14108,14110,14112,14114,14116,14118,14120],{"class":862,"line":8728},[860,14101,5265],{"class":1045},[860,14103,10951],{"class":870},[860,14105,1222],{"class":874},[860,14107,2874],{"class":870},[860,14109,759],{"class":874},[860,14111,10960],{"class":870},[860,14113,759],{"class":874},[860,14115,10965],{"class":866},[860,14117,871],{"class":978},[860,14119,752],{"class":1836},[860,14121,1417],{"class":978},[860,14123,14124],{"class":862,"line":8762},[860,14125,1232],{"emptyLinePlaceholder":526},[860,14127,14128,14130,14132,14134,14136,14138,14140,14142,14144,14146,14148,14150,14152,14154,14156,14158,14160,14162,14164],{"class":862,"line":8788},[860,14129,6765],{"class":866},[860,14131,871],{"class":978},[860,14133,875],{"class":874},[860,14135,6772],{"class":870},[860,14137,875],{"class":874},[860,14139,6788],{"class":874},[860,14141,1847],{"class":874},[860,14143,1052],{"class":878},[860,14145,875],{"class":874},[860,14147,759],{"class":874},[860,14149,8514],{"class":866},[860,14151,871],{"class":978},[860,14153,11084],{"class":1836},[860,14155,884],{"class":978},[860,14157,1091],{"class":874},[860,14159,6344],{"class":870},[860,14161,759],{"class":874},[860,14163,6795],{"class":870},[860,14165,1417],{"class":978},[860,14167,14168,14170,14172,14174,14177,14179,14181,14183,14185,14187,14189,14191,14193,14195],{"class":862,"line":8812},[860,14169,6765],{"class":866},[860,14171,871],{"class":978},[860,14173,875],{"class":874},[860,14175,14176],{"class":878},"📦 Worker Configuration Extractor",[860,14178,875],{"class":874},[860,14180,1091],{"class":874},[860,14182,6344],{"class":870},[860,14184,759],{"class":874},[860,14186,484],{"class":870},[860,14188,6788],{"class":874},[860,14190,6344],{"class":870},[860,14192,759],{"class":874},[860,14194,6795],{"class":870},[860,14196,1417],{"class":978},[860,14198,14199,14201,14203,14205,14207,14209,14211,14213,14215,14217,14219,14221,14223,14225,14227,14229,14231,14233,14235],{"class":862,"line":8836},[860,14200,6765],{"class":866},[860,14202,871],{"class":978},[860,14204,875],{"class":874},[860,14206,1052],{"class":878},[860,14208,875],{"class":874},[860,14210,759],{"class":874},[860,14212,8514],{"class":866},[860,14214,871],{"class":978},[860,14216,11084],{"class":1836},[860,14218,5320],{"class":978},[860,14220,6909],{"class":874},[860,14222,1847],{"class":874},[860,14224,6772],{"class":870},[860,14226,875],{"class":874},[860,14228,1091],{"class":874},[860,14230,6344],{"class":870},[860,14232,759],{"class":874},[860,14234,6795],{"class":870},[860,14236,1417],{"class":978},[860,14238,14239],{"class":862,"line":8862},[860,14240,1232],{"emptyLinePlaceholder":526},[860,14242,14243,14245,14247,14249,14251,14253,14255,14257],{"class":862,"line":8867},[860,14244,11275],{"class":1045},[860,14246,12362],{"class":870},[860,14248,1222],{"class":874},[860,14250,2874],{"class":870},[860,14252,759],{"class":874},[860,14254,2879],{"class":870},[860,14256,759],{"class":874},[860,14258,14259],{"class":870},"CLOUDFLARE_API_TOKEN\n",[860,14261,14262,14264,14267,14269,14271,14273,14275,14277],{"class":862,"line":8872},[860,14263,11275],{"class":1045},[860,14265,14266],{"class":870}," accountId",[860,14268,1222],{"class":874},[860,14270,2874],{"class":870},[860,14272,759],{"class":874},[860,14274,2879],{"class":870},[860,14276,759],{"class":874},[860,14278,14279],{"class":870},"CLOUDFLARE_ACCOUNT_ID\n",[860,14281,14282,14284,14286,14288],{"class":862,"line":8893},[860,14283,11275],{"class":1045},[860,14285,13105],{"class":870},[860,14287,1222],{"class":874},[860,14289,6558],{"class":874},[860,14291,14292],{"class":862,"line":8919},[860,14293,1232],{"emptyLinePlaceholder":526},[860,14295,14296,14298,14300,14302,14305,14307,14309,14311],{"class":862,"line":8943},[860,14297,11350],{"class":1085},[860,14299,1567],{"class":978},[860,14301,1046],{"class":1045},[860,14303,14304],{"class":870}," arg",[860,14306,11359],{"class":874},[860,14308,10951],{"class":870},[860,14310,5320],{"class":978},[860,14312,1815],{"class":874},[860,14314,14315,14317,14319,14322,14324,14327,14329,14331,14334,14336,14339,14341,14343,14345,14347,14349,14351,14353,14355,14357,14360,14362],{"class":862,"line":8960},[860,14316,6541],{"class":1085},[860,14318,1567],{"class":978},[860,14320,14321],{"class":870},"arg",[860,14323,759],{"class":874},[860,14325,14326],{"class":866},"startsWith",[860,14328,871],{"class":978},[860,14330,875],{"class":874},[860,14332,14333],{"class":878},"--api-token=",[860,14335,875],{"class":874},[860,14337,14338],{"class":978},")) ",[860,14340,12418],{"class":870},[860,14342,1222],{"class":874},[860,14344,14304],{"class":870},[860,14346,759],{"class":874},[860,14348,9851],{"class":866},[860,14350,871],{"class":978},[860,14352,875],{"class":874},[860,14354,1052],{"class":878},[860,14356,875],{"class":874},[860,14358,14359],{"class":978},")[",[860,14361,7449],{"class":1836},[860,14363,4337],{"class":978},[860,14365,14367,14369,14371,14373,14375,14377,14379,14381,14384,14386,14388,14390,14392,14394,14396,14398,14400,14402,14404,14406,14408,14410],{"class":862,"line":14366},199,[860,14368,6541],{"class":1085},[860,14370,1567],{"class":978},[860,14372,14321],{"class":870},[860,14374,759],{"class":874},[860,14376,14326],{"class":866},[860,14378,871],{"class":978},[860,14380,875],{"class":874},[860,14382,14383],{"class":878},"--account-id=",[860,14385,875],{"class":874},[860,14387,14338],{"class":978},[860,14389,12586],{"class":870},[860,14391,1222],{"class":874},[860,14393,14304],{"class":870},[860,14395,759],{"class":874},[860,14397,9851],{"class":866},[860,14399,871],{"class":978},[860,14401,875],{"class":874},[860,14403,1052],{"class":878},[860,14405,875],{"class":874},[860,14407,14359],{"class":978},[860,14409,7449],{"class":1836},[860,14411,4337],{"class":978},[860,14413,14414,14416,14418,14420,14422,14424,14426,14428,14431,14433,14435,14437,14439,14441,14443,14445,14447,14449,14451,14453,14455,14457],{"class":862,"line":451},[860,14415,6541],{"class":1085},[860,14417,1567],{"class":978},[860,14419,14321],{"class":870},[860,14421,759],{"class":874},[860,14423,14326],{"class":866},[860,14425,871],{"class":978},[860,14427,875],{"class":874},[860,14429,14430],{"class":878},"--worker-name=",[860,14432,875],{"class":874},[860,14434,14338],{"class":978},[860,14436,13135],{"class":870},[860,14438,1222],{"class":874},[860,14440,14304],{"class":870},[860,14442,759],{"class":874},[860,14444,9851],{"class":866},[860,14446,871],{"class":978},[860,14448,875],{"class":874},[860,14450,1052],{"class":878},[860,14452,875],{"class":874},[860,14454,14359],{"class":978},[860,14456,7449],{"class":1836},[860,14458,4337],{"class":978},[860,14460,14462],{"class":862,"line":14461},201,[860,14463,1008],{"class":874},[860,14465,14467],{"class":862,"line":14466},202,[860,14468,1232],{"emptyLinePlaceholder":526},[860,14470,14472,14474,14476,14478,14480,14482,14484,14486,14488,14490,14492,14494,14497,14499],{"class":862,"line":14471},203,[860,14473,5311],{"class":1085},[860,14475,1567],{"class":978},[860,14477,1804],{"class":874},[860,14479,12418],{"class":870},[860,14481,5320],{"class":978},[860,14483,12418],{"class":870},[860,14485,1222],{"class":874},[860,14487,1308],{"class":1085},[860,14489,6587],{"class":866},[860,14491,871],{"class":978},[860,14493,875],{"class":874},[860,14495,14496],{"class":878},"Cloudflare API Token: ",[860,14498,875],{"class":874},[860,14500,1417],{"class":978},[860,14502,14504,14506,14508,14510,14512,14514,14516,14518,14520,14522,14524,14526,14529,14531],{"class":862,"line":14503},204,[860,14505,5311],{"class":1085},[860,14507,1567],{"class":978},[860,14509,1804],{"class":874},[860,14511,12586],{"class":870},[860,14513,5320],{"class":978},[860,14515,12586],{"class":870},[860,14517,1222],{"class":874},[860,14519,1308],{"class":1085},[860,14521,6587],{"class":866},[860,14523,871],{"class":978},[860,14525,875],{"class":874},[860,14527,14528],{"class":878},"Cloudflare Account ID: ",[860,14530,875],{"class":874},[860,14532,1417],{"class":978},[860,14534,14536],{"class":862,"line":14535},205,[860,14537,1232],{"emptyLinePlaceholder":526},[860,14539,14541,14543,14545,14547,14549,14551,14553,14555,14557],{"class":862,"line":14540},206,[860,14542,5311],{"class":1085},[860,14544,1567],{"class":978},[860,14546,1804],{"class":874},[860,14548,12418],{"class":870},[860,14550,5284],{"class":874},[860,14552,10511],{"class":874},[860,14554,12586],{"class":870},[860,14556,5320],{"class":978},[860,14558,1815],{"class":874},[860,14560,14562,14564,14566,14568,14570,14573,14575,14577,14579,14581,14583,14585],{"class":862,"line":14561},207,[860,14563,6895],{"class":866},[860,14565,871],{"class":978},[860,14567,875],{"class":874},[860,14569,6772],{"class":870},[860,14571,14572],{"class":878},"❌ API Token and Account ID required",[860,14574,6772],{"class":870},[860,14576,875],{"class":874},[860,14578,1091],{"class":874},[860,14580,6344],{"class":870},[860,14582,759],{"class":874},[860,14584,7576],{"class":870},[860,14586,1417],{"class":978},[860,14588,14590,14592,14594,14596,14598,14600],{"class":862,"line":14589},208,[860,14591,10377],{"class":870},[860,14593,759],{"class":874},[860,14595,8951],{"class":866},[860,14597,871],{"class":978},[860,14599,7449],{"class":1836},[860,14601,1417],{"class":978},[860,14603,14605],{"class":862,"line":14604},209,[860,14606,1008],{"class":874},[860,14608,14610],{"class":862,"line":14609},210,[860,14611,1232],{"emptyLinePlaceholder":526},[860,14613,14615,14617],{"class":862,"line":14614},211,[860,14616,6426],{"class":1085},[860,14618,942],{"class":874},[860,14620,14622,14624,14626,14628,14630,14632,14634,14636,14638,14640],{"class":862,"line":14621},212,[860,14623,1378],{"class":1045},[860,14625,13014],{"class":870},[860,14627,1222],{"class":874},[860,14629,1308],{"class":1085},[860,14631,12581],{"class":866},[860,14633,871],{"class":978},[860,14635,12586],{"class":870},[860,14637,1091],{"class":874},[860,14639,12362],{"class":870},[860,14641,1417],{"class":978},[860,14643,14645],{"class":862,"line":14644},213,[860,14646,1232],{"emptyLinePlaceholder":526},[860,14648,14650,14652,14654,14656,14658,14660,14662,14664,14666],{"class":862,"line":14649},214,[860,14651,6541],{"class":1085},[860,14653,1567],{"class":978},[860,14655,12684],{"class":870},[860,14657,759],{"class":874},[860,14659,7084],{"class":870},[860,14661,7021],{"class":874},[860,14663,10530],{"class":1836},[860,14665,5320],{"class":978},[860,14667,1815],{"class":874},[860,14669,14671,14673,14675,14677,14679,14682,14684,14686,14688,14690,14692,14694],{"class":862,"line":14670},215,[860,14672,7460],{"class":866},[860,14674,871],{"class":978},[860,14676,875],{"class":874},[860,14678,6772],{"class":870},[860,14680,14681],{"class":878},"⚠️  No workers found",[860,14683,6772],{"class":870},[860,14685,875],{"class":874},[860,14687,1091],{"class":874},[860,14689,6344],{"class":870},[860,14691,759],{"class":874},[860,14693,6822],{"class":870},[860,14695,1417],{"class":978},[860,14697,14699,14702,14704,14706,14708,14710],{"class":862,"line":14698},216,[860,14700,14701],{"class":870},"      process",[860,14703,759],{"class":874},[860,14705,8951],{"class":866},[860,14707,871],{"class":978},[860,14709,7125],{"class":1836},[860,14711,1417],{"class":978},[860,14713,14715],{"class":862,"line":14714},217,[860,14716,2380],{"class":874},[860,14718,14720],{"class":862,"line":14719},218,[860,14721,1232],{"emptyLinePlaceholder":526},[860,14723,14725,14727,14729,14731,14734,14736,14738,14740,14742,14744,14747,14749,14751,14753,14755,14757],{"class":862,"line":14724},219,[860,14726,6895],{"class":866},[860,14728,871],{"class":978},[860,14730,6900],{"class":874},[860,14732,14733],{"class":878},"✅ Found ",[860,14735,1326],{"class":874},[860,14737,12684],{"class":870},[860,14739,759],{"class":874},[860,14741,7084],{"class":870},[860,14743,1219],{"class":874},[860,14745,14746],{"class":878}," worker(s)",[860,14748,6900],{"class":874},[860,14750,1091],{"class":874},[860,14752,6344],{"class":870},[860,14754,759],{"class":874},[860,14756,7208],{"class":870},[860,14758,1417],{"class":978},[860,14760,14762],{"class":862,"line":14761},220,[860,14763,1232],{"emptyLinePlaceholder":526},[860,14765,14767,14769],{"class":862,"line":14766},221,[860,14768,8089],{"class":1045},[860,14770,14771],{"class":870}," selectedWorker\n",[860,14773,14775,14777,14779,14781,14783],{"class":862,"line":14774},222,[860,14776,6541],{"class":1085},[860,14778,1567],{"class":978},[860,14780,13135],{"class":870},[860,14782,5320],{"class":978},[860,14784,1815],{"class":874},[860,14786,14788,14791,14793,14795,14797,14800,14802,14805,14807,14810,14812,14814,14816,14818],{"class":862,"line":14787},223,[860,14789,14790],{"class":870},"      selectedWorker",[860,14792,1222],{"class":874},[860,14794,13014],{"class":870},[860,14796,759],{"class":874},[860,14798,14799],{"class":866},"find",[860,14801,871],{"class":978},[860,14803,14804],{"class":1570},"w",[860,14806,1063],{"class":1045},[860,14808,14809],{"class":870}," w",[860,14811,759],{"class":874},[860,14813,12806],{"class":870},[860,14815,7021],{"class":874},[860,14817,13105],{"class":870},[860,14819,1417],{"class":978},[860,14821,14823,14826,14828,14830,14833,14835],{"class":862,"line":14822},224,[860,14824,14825],{"class":1085},"      if",[860,14827,1567],{"class":978},[860,14829,1804],{"class":874},[860,14831,14832],{"class":870},"selectedWorker",[860,14834,5320],{"class":978},[860,14836,1815],{"class":874},[860,14838,14840,14843,14845,14847,14849,14852,14854,14856,14858,14861,14863,14865,14867,14869,14871,14873],{"class":862,"line":14839},225,[860,14841,14842],{"class":866},"        log",[860,14844,871],{"class":978},[860,14846,6900],{"class":874},[860,14848,6772],{"class":870},[860,14850,14851],{"class":878},"❌ Worker \"",[860,14853,1326],{"class":874},[860,14855,13135],{"class":870},[860,14857,1219],{"class":874},[860,14859,14860],{"class":878},"\" not found",[860,14862,6772],{"class":870},[860,14864,6900],{"class":874},[860,14866,1091],{"class":874},[860,14868,6344],{"class":870},[860,14870,759],{"class":874},[860,14872,7576],{"class":870},[860,14874,1417],{"class":978},[860,14876,14878,14881,14883,14885,14887,14889],{"class":862,"line":14877},226,[860,14879,14880],{"class":870},"        process",[860,14882,759],{"class":874},[860,14884,8951],{"class":866},[860,14886,871],{"class":978},[860,14888,7449],{"class":1836},[860,14890,1417],{"class":978},[860,14892,14894],{"class":862,"line":14893},227,[860,14895,2827],{"class":874},[860,14897,14899,14901,14903],{"class":862,"line":14898},228,[860,14900,6519],{"class":874},[860,14902,11308],{"class":1085},[860,14904,942],{"class":874},[860,14906,14908,14910,14912,14914,14916,14918,14920],{"class":862,"line":14907},229,[860,14909,14790],{"class":870},[860,14911,1222],{"class":874},[860,14913,1308],{"class":1085},[860,14915,12679],{"class":866},[860,14917,871],{"class":978},[860,14919,12684],{"class":870},[860,14921,1417],{"class":978},[860,14923,14925,14927,14929,14931,14933,14935],{"class":862,"line":14924},230,[860,14926,14825],{"class":1085},[860,14928,1567],{"class":978},[860,14930,1804],{"class":874},[860,14932,14832],{"class":870},[860,14934,5320],{"class":978},[860,14936,1815],{"class":874},[860,14938,14940,14942,14944,14946,14948,14950,14952,14954,14956,14958,14960,14962],{"class":862,"line":14939},231,[860,14941,14842],{"class":866},[860,14943,871],{"class":978},[860,14945,875],{"class":874},[860,14947,6772],{"class":870},[860,14949,10358],{"class":878},[860,14951,6772],{"class":870},[860,14953,875],{"class":874},[860,14955,1091],{"class":874},[860,14957,6344],{"class":870},[860,14959,759],{"class":874},[860,14961,6822],{"class":870},[860,14963,1417],{"class":978},[860,14965,14967,14969,14971,14973,14975,14977],{"class":862,"line":14966},232,[860,14968,14880],{"class":870},[860,14970,759],{"class":874},[860,14972,8951],{"class":866},[860,14974,871],{"class":978},[860,14976,7125],{"class":1836},[860,14978,1417],{"class":978},[860,14980,14982],{"class":862,"line":14981},233,[860,14983,2827],{"class":874},[860,14985,14987],{"class":862,"line":14986},234,[860,14988,2380],{"class":874},[860,14990,14992],{"class":862,"line":14991},235,[860,14993,1232],{"emptyLinePlaceholder":526},[860,14995,14997,15000,15002,15005,15007],{"class":862,"line":14996},236,[860,14998,14999],{"class":870},"    workerName",[860,15001,1222],{"class":874},[860,15003,15004],{"class":870}," selectedWorker",[860,15006,759],{"class":874},[860,15008,15009],{"class":870},"id\n",[860,15011,15013,15015,15017,15019,15021,15024,15026,15028,15030,15032,15034,15036,15038,15040,15042,15044,15046],{"class":862,"line":15012},237,[860,15014,6895],{"class":866},[860,15016,871],{"class":978},[860,15018,6900],{"class":874},[860,15020,6772],{"class":870},[860,15022,15023],{"class":878},"📦 Selected: ",[860,15025,1326],{"class":874},[860,15027,13135],{"class":870},[860,15029,1351],{"class":874},[860,15031,1091],{"class":874},[860,15033,6344],{"class":870},[860,15035,759],{"class":874},[860,15037,6956],{"class":870},[860,15039,6788],{"class":874},[860,15041,6344],{"class":870},[860,15043,759],{"class":874},[860,15045,6795],{"class":870},[860,15047,1417],{"class":978},[860,15049,15051],{"class":862,"line":15050},238,[860,15052,1232],{"emptyLinePlaceholder":526},[860,15054,15056,15058,15060,15062,15064,15067,15069,15071,15073,15075,15077],{"class":862,"line":15055},239,[860,15057,6895],{"class":866},[860,15059,871],{"class":978},[860,15061,875],{"class":874},[860,15063,6772],{"class":870},[860,15065,15066],{"class":878},"🔍 Fetching configuration...",[860,15068,875],{"class":874},[860,15070,1091],{"class":874},[860,15072,6344],{"class":870},[860,15074,759],{"class":874},[860,15076,484],{"class":870},[860,15078,1417],{"class":978},[860,15080,15082,15084,15086,15088,15090,15092,15094,15096,15098,15100,15102,15104],{"class":862,"line":15081},240,[860,15083,1378],{"class":1045},[860,15085,13782],{"class":870},[860,15087,1222],{"class":874},[860,15089,1308],{"class":1085},[860,15091,13092],{"class":866},[860,15093,871],{"class":978},[860,15095,12586],{"class":870},[860,15097,1091],{"class":874},[860,15099,12362],{"class":870},[860,15101,1091],{"class":874},[860,15103,13105],{"class":870},[860,15105,1417],{"class":978},[860,15107,15109,15111,15113,15115,15117,15119,15121,15123,15125,15127],{"class":862,"line":15108},241,[860,15110,1378],{"class":1045},[860,15112,13283],{"class":870},[860,15114,1222],{"class":874},[860,15116,13175],{"class":866},[860,15118,871],{"class":978},[860,15120,13868],{"class":870},[860,15122,759],{"class":874},[860,15124,13180],{"class":870},[860,15126,5284],{"class":874},[860,15128,15129],{"class":978}," [])\n",[860,15131,15133],{"class":862,"line":15132},242,[860,15134,1232],{"emptyLinePlaceholder":526},[860,15136,15138,15140,15142,15144,15146,15148,15150,15152,15154,15156,15158],{"class":862,"line":15137},243,[860,15139,1378],{"class":1045},[860,15141,13797],{"class":870},[860,15143,1222],{"class":874},[860,15145,13773],{"class":866},[860,15147,871],{"class":978},[860,15149,13135],{"class":870},[860,15151,1091],{"class":874},[860,15153,13782],{"class":870},[860,15155,1091],{"class":874},[860,15157,13283],{"class":870},[860,15159,1417],{"class":978},[860,15161,15163],{"class":862,"line":15162},244,[860,15164,1232],{"emptyLinePlaceholder":526},[860,15166,15168,15170,15173,15175,15177,15179,15181,15183,15185,15188,15190,15192,15194,15197,15199],{"class":862,"line":15167},245,[860,15169,1378],{"class":1045},[860,15171,15172],{"class":870}," configFile",[860,15174,1222],{"class":874},[860,15176,5836],{"class":866},[860,15178,871],{"class":978},[860,15180,8073],{"class":870},[860,15182,1091],{"class":874},[860,15184,7310],{"class":874},[860,15186,15187],{"class":878},"wrangler.",[860,15189,1326],{"class":874},[860,15191,13135],{"class":870},[860,15193,1219],{"class":874},[860,15195,15196],{"class":878},".jsonc",[860,15198,6900],{"class":874},[860,15200,1417],{"class":978},[860,15202,15204,15206,15208,15211,15213,15216,15218,15221,15223,15226,15228,15231,15234],{"class":862,"line":15203},246,[860,15205,8363],{"class":866},[860,15207,871],{"class":978},[860,15209,15210],{"class":870},"configFile",[860,15212,1091],{"class":874},[860,15214,15215],{"class":870}," JSON",[860,15217,759],{"class":874},[860,15219,15220],{"class":866},"stringify",[860,15222,871],{"class":978},[860,15224,15225],{"class":870},"config",[860,15227,1091],{"class":874},[860,15229,15230],{"class":874}," null,",[860,15232,15233],{"class":1836}," 2",[860,15235,1097],{"class":978},[860,15237,15239],{"class":862,"line":15238},247,[860,15240,1232],{"emptyLinePlaceholder":526},[860,15242,15244,15246,15248,15250,15252,15255,15257,15259,15261,15263,15265,15267,15269],{"class":862,"line":15243},248,[860,15245,6895],{"class":866},[860,15247,871],{"class":978},[860,15249,6900],{"class":874},[860,15251,6772],{"class":870},[860,15253,15254],{"class":878},"✅ Config written to: ",[860,15256,1326],{"class":874},[860,15258,15210],{"class":870},[860,15260,1351],{"class":874},[860,15262,1091],{"class":874},[860,15264,6344],{"class":870},[860,15266,759],{"class":874},[860,15268,7208],{"class":870},[860,15270,1417],{"class":978},[860,15272,15274,15276,15278,15280,15282,15285,15287,15289,15291,15293,15295,15297],{"class":862,"line":15273},249,[860,15275,6895],{"class":866},[860,15277,871],{"class":978},[860,15279,875],{"class":874},[860,15281,6772],{"class":870},[860,15283,15284],{"class":878},"💡 Review the file and update as needed",[860,15286,6772],{"class":870},[860,15288,875],{"class":874},[860,15290,1091],{"class":874},[860,15292,6344],{"class":870},[860,15294,759],{"class":874},[860,15296,484],{"class":870},[860,15298,1417],{"class":978},[860,15300,15302],{"class":862,"line":15301},250,[860,15303,1232],{"emptyLinePlaceholder":526},[860,15305,15307,15309,15311,15313,15315,15317],{"class":862,"line":15306},251,[860,15308,2108],{"class":874},[860,15310,6528],{"class":1085},[860,15312,1567],{"class":978},[860,15314,5562],{"class":870},[860,15316,5320],{"class":978},[860,15318,1815],{"class":874},[860,15320,15322,15324,15326,15328,15330,15333,15335,15337,15339,15341,15343,15345,15347,15349,15351],{"class":862,"line":15321},252,[860,15323,6895],{"class":866},[860,15325,871],{"class":978},[860,15327,6900],{"class":874},[860,15329,6772],{"class":870},[860,15331,15332],{"class":878},"❌ Error: ",[860,15334,1326],{"class":874},[860,15336,5562],{"class":870},[860,15338,759],{"class":874},[860,15340,5730],{"class":870},[860,15342,1351],{"class":874},[860,15344,1091],{"class":874},[860,15346,6344],{"class":870},[860,15348,759],{"class":874},[860,15350,7576],{"class":870},[860,15352,1417],{"class":978},[860,15354,15356,15358,15360,15362,15364,15366],{"class":862,"line":15355},253,[860,15357,10377],{"class":870},[860,15359,759],{"class":874},[860,15361,8951],{"class":866},[860,15363,871],{"class":978},[860,15365,7449],{"class":1836},[860,15367,1417],{"class":978},[860,15369,15371],{"class":862,"line":15370},254,[860,15372,1008],{"class":874},[860,15374,15376],{"class":862,"line":15375},255,[860,15377,1014],{"class":874},[860,15379,15381],{"class":862,"line":15380},256,[860,15382,1232],{"emptyLinePlaceholder":526},[860,15384,15386,15388],{"class":862,"line":15385},257,[860,15387,8875],{"class":866},[860,15389,905],{"class":870},[851,15391,15394],{"className":5746,"code":15392,"filename":15393,"language":5749,"meta":856,"style":856},"#!/usr/bin/env node\n\n/**\n * Sync Environment Variables to Wrangler\n *\n * This script reads .env file and updates wrangler.jsonc with non-secret environment variables.\n * Secrets must be added manually using wrangler CLI for security.\n *\n * Usage: pnpm run env:sync\n */\n\nimport { readFileSync, writeFileSync } from 'fs'\nimport { resolve, dirname } from 'path'\nimport { fileURLToPath } from 'url'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\nconst projectRoot = resolve(__dirname, '..')\n\n// Define which variables are secrets (should use wrangler secret put)\nconst SECRETS = [\n  'BETTER_AUTH_SECRET',\n  'GOOGLE_CLIENT_SECRET',\n  'AWS_SECRET_ACCESS_KEY',\n  'NUXT_TURNSTILE_SECRET_KEY',\n  'CLOUDFLARE_API_TOKEN',\n]\n\n// Variables to skip (not needed in production or handled differently)\nconst SKIP_VARS = [\n  'NODE_ENV', // Already set in wrangler.jsonc\n  'CLOUDFLARE_ACCOUNT_ID', // Already set as account_id in wrangler.jsonc\n]\n\n/**\n * Parse .env file into key-value pairs\n */\nfunction parseEnvFile(filePath) {\n  const content = readFileSync(filePath, 'utf-8')\n  const vars = {}\n\n  content.split('\\n').forEach(line => {\n    // Skip comments and empty lines\n    if (line.trim().startsWith('#') || !line.trim()) {\n      return\n    }\n\n    // Parse KEY=VALUE (with or without quotes)\n    const match = line.match(/^([A-Z_][A-Z0-9_]*)\\s*=\\s*(.*)$/)\n    if (match) {\n      const [, key, value] = match\n      // Remove surrounding quotes if present\n      const cleanValue = value.replace(/^[\"']|[\"']$/g, '').trim()\n      vars[key] = cleanValue\n    }\n  })\n\n  return vars\n}\n\n/**\n * Read and parse wrangler.jsonc (with comments)\n */\nfunction readWranglerConfig(filePath) {\n  const content = readFileSync(filePath, 'utf-8')\n\n  // Remove comments to parse JSON\n  const jsonContent = content\n    .split('\\n')\n    .filter(line => !line.trim().startsWith('//'))\n    .join('\\n')\n    .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Remove block comments\n\n  return {\n    raw: content,\n    parsed: JSON.parse(jsonContent)\n  }\n}\n\n/**\n * Update wrangler.jsonc with new vars\n */\nfunction updateWranglerVars(wranglerPath, envVars) {\n  const { raw, parsed } = readWranglerConfig(wranglerPath)\n\n  // Separate public and secret vars\n  const publicVars = {}\n  const secretVars = []\n\n  Object.entries(envVars).forEach(([key, value]) => {\n    if (SKIP_VARS.includes(key)) {\n      console.log(`⏭️  Skipping ${key} (already configured)`)\n      return\n    }\n\n    if (SECRETS.includes(key)) {\n      secretVars.push(key)\n      console.log(`🔐 Secret detected: ${key}`)\n    } else if (value) {\n      publicVars[key] = value\n      console.log(`✅ Adding: ${key}`)\n    }\n  })\n\n  // Update parsed config\n  parsed.vars = {\n    ...parsed.vars,\n    ...publicVars\n  }\n\n  // Find the vars section in raw content and replace it\n  const varsStart = raw.indexOf('\"vars\": {')\n  if (varsStart === -1) {\n    console.error('❌ Could not find \"vars\" section in wrangler.jsonc')\n    process.exit(1)\n  }\n\n  // Format the vars object with proper indentation\n  const varsJson = JSON.stringify(parsed.vars, null, 2)\n    .split('\\n')\n    .map((line, i) => i === 0 ? line : '  ' + line)\n    .join('\\n')\n\n  // Find the end of vars section\n  let braceCount = 0\n  let varsEnd = varsStart\n  let foundStart = false\n\n  for (let i = varsStart; i \u003C raw.length; i++) {\n    if (raw[i] === '{') {\n      braceCount++\n      foundStart = true\n    } else if (raw[i] === '}') {\n      braceCount--\n      if (foundStart && braceCount === 0) {\n        varsEnd = i + 1\n        break\n      }\n    }\n  }\n\n  // Replace the vars section\n  const before = raw.substring(0, varsStart)\n  const after = raw.substring(varsEnd)\n  const newContent = before + '\"vars\": ' + varsJson + after\n\n  // Write updated config\n  writeFileSync(wranglerPath, newContent, 'utf-8')\n\n  console.log('\\n✅ wrangler.jsonc updated successfully!')\n  console.log(`   Added ${Object.keys(publicVars).length} public variables`)\n\n  // Print instructions for secrets\n  if (secretVars.length > 0) {\n    console.log('\\n🔐 SECRETS DETECTED - Add manually using wrangler CLI:')\n    console.log('   Secrets should NEVER be committed to wrangler.jsonc\\n')\n\n    secretVars.forEach(secret => {\n      console.log(`   wrangler secret put ${secret}`)\n      console.log(`   # Enter value when prompted`)\n      console.log('')\n    })\n  }\n\n  console.log('\\n📝 Note: Secrets are encrypted and stored separately by Cloudflare')\n}\n\n/**\n * Main\n */\nfunction main() {\n  const envPath = resolve(projectRoot, '.env')\n  const wranglerPath = resolve(projectRoot, 'wrangler.jsonc')\n\n  console.log('🔄 Syncing environment variables to wrangler.jsonc...\\n')\n\n  try {\n    const envVars = parseEnvFile(envPath)\n    updateWranglerVars(wranglerPath, envVars)\n  } catch (error) {\n    console.error('❌ Error:', error.message)\n    process.exit(1)\n  }\n}\n\nmain()\n","scripts/sync-env-to-wrangler.mjs",[816,15395,15396,15400,15404,15408,15413,15417,15422,15427,15431,15436,15440,15444,15466,15489,15507,15511,15533,15545,15567,15571,15576,15587,15598,15609,15620,15630,15641,15645,15649,15654,15665,15678,15692,15696,15700,15704,15709,15713,15728,15752,15764,15768,15799,15804,15848,15853,15857,15861,15866,15924,15936,15958,15963,16015,16031,16035,16041,16045,16052,16056,16060,16064,16069,16073,16088,16112,16116,16121,16133,16149,16186,16203,16240,16244,16250,16261,16282,16286,16290,16294,16298,16303,16307,16327,16353,16357,16362,16373,16384,16388,16426,16447,16476,16480,16484,16488,16509,16524,16547,16564,16580,16603,16607,16613,16617,16622,16635,16649,16656,16660,16664,16669,16696,16715,16735,16749,16753,16757,16762,16793,16809,16852,16868,16872,16877,16889,16901,16912,16916,16955,16983,16991,17000,17030,17037,17058,17072,17076,17080,17084,17088,17092,17097,17123,17145,17174,17178,17183,17206,17210,17231,17270,17274,17279,17300,17321,17342,17346,17364,17387,17406,17420,17426,17430,17434,17455,17459,17463,17467,17472,17476,17486,17511,17535,17539,17560,17564,17570,17587,17602,17616,17643,17657,17661,17665,17669],{"__ignoreMap":856},[860,15397,15398],{"class":862,"line":863},[860,15399,5756],{"class":1237},[860,15401,15402],{"class":862,"line":945},[860,15403,1232],{"emptyLinePlaceholder":526},[860,15405,15406],{"class":862,"line":929},[860,15407,3820],{"class":1237},[860,15409,15410],{"class":862,"line":970},[860,15411,15412],{"class":1237}," * Sync Environment Variables to Wrangler\n",[860,15414,15415],{"class":862,"line":994},[860,15416,11821],{"class":1237},[860,15418,15419],{"class":862,"line":1005},[860,15420,15421],{"class":1237}," * This script reads .env file and updates wrangler.jsonc with non-secret environment variables.\n",[860,15423,15424],{"class":862,"line":1011},[860,15425,15426],{"class":1237}," * Secrets must be added manually using wrangler CLI for security.\n",[860,15428,15429],{"class":862,"line":1284},[860,15430,11821],{"class":1237},[860,15432,15433],{"class":862,"line":1289},[860,15434,15435],{"class":1237}," * Usage: pnpm run env:sync\n",[860,15437,15438],{"class":862,"line":1317},[860,15439,3835],{"class":1237},[860,15441,15442],{"class":862,"line":1356},[860,15443,1232],{"emptyLinePlaceholder":526},[860,15445,15446,15448,15450,15452,15454,15456,15458,15460,15462,15464],{"class":862,"line":1369},[860,15447,1966],{"class":1085},[860,15449,1213],{"class":874},[860,15451,5811],{"class":870},[860,15453,1091],{"class":874},[860,15455,5816],{"class":870},[860,15457,1855],{"class":874},[860,15459,1986],{"class":1085},[860,15461,1847],{"class":874},[860,15463,5825],{"class":878},[860,15465,1994],{"class":874},[860,15467,15468,15470,15472,15475,15477,15479,15481,15483,15485,15487],{"class":862,"line":1146},[860,15469,1966],{"class":1085},[860,15471,1213],{"class":874},[860,15473,15474],{"class":870}," resolve",[860,15476,1091],{"class":874},[860,15478,5841],{"class":870},[860,15480,1855],{"class":874},[860,15482,1986],{"class":1085},[860,15484,1847],{"class":874},[860,15486,889],{"class":878},[860,15488,1994],{"class":874},[860,15490,15491,15493,15495,15497,15499,15501,15503,15505],{"class":862,"line":1147},[860,15492,1966],{"class":1085},[860,15494,1213],{"class":874},[860,15496,5860],{"class":870},[860,15498,1855],{"class":874},[860,15500,1986],{"class":1085},[860,15502,1847],{"class":874},[860,15504,5869],{"class":878},[860,15506,1994],{"class":874},[860,15508,15509],{"class":862,"line":1148},[860,15510,1232],{"emptyLinePlaceholder":526},[860,15512,15513,15515,15517,15519,15521,15523,15525,15527,15529,15531],{"class":862,"line":1434},[860,15514,1046],{"class":1045},[860,15516,5902],{"class":870},[860,15518,1052],{"class":874},[860,15520,5860],{"class":866},[860,15522,871],{"class":870},[860,15524,1966],{"class":1085},[860,15526,759],{"class":874},[860,15528,5915],{"class":870},[860,15530,759],{"class":874},[860,15532,5920],{"class":870},[860,15534,15535,15537,15539,15541,15543],{"class":862,"line":1443},[860,15536,1046],{"class":1045},[860,15538,5927],{"class":870},[860,15540,1052],{"class":874},[860,15542,5841],{"class":866},[860,15544,5934],{"class":870},[860,15546,15547,15549,15551,15553,15555,15557,15559,15561,15563,15565],{"class":862,"line":1448},[860,15548,1046],{"class":1045},[860,15550,5941],{"class":870},[860,15552,1052],{"class":874},[860,15554,15474],{"class":866},[860,15556,5948],{"class":870},[860,15558,1091],{"class":874},[860,15560,1847],{"class":874},[860,15562,5955],{"class":878},[860,15564,875],{"class":874},[860,15566,1417],{"class":870},[860,15568,15569],{"class":862,"line":1457},[860,15570,1232],{"emptyLinePlaceholder":526},[860,15572,15573],{"class":862,"line":1462},[860,15574,15575],{"class":1237},"// Define which variables are secrets (should use wrangler secret put)\n",[860,15577,15578,15580,15583,15585],{"class":862,"line":1467},[860,15579,1046],{"class":1045},[860,15581,15582],{"class":870}," SECRETS ",[860,15584,1052],{"class":874},[860,15586,2639],{"class":870},[860,15588,15589,15592,15594,15596],{"class":862,"line":1885},[860,15590,15591],{"class":874},"  '",[860,15593,3482],{"class":878},[860,15595,875],{"class":874},[860,15597,967],{"class":874},[860,15599,15600,15602,15605,15607],{"class":862,"line":1896},[860,15601,15591],{"class":874},[860,15603,15604],{"class":878},"GOOGLE_CLIENT_SECRET",[860,15606,875],{"class":874},[860,15608,967],{"class":874},[860,15610,15611,15613,15616,15618],{"class":862,"line":1917},[860,15612,15591],{"class":874},[860,15614,15615],{"class":878},"AWS_SECRET_ACCESS_KEY",[860,15617,875],{"class":874},[860,15619,967],{"class":874},[860,15621,15622,15624,15626,15628],{"class":862,"line":1939},[860,15623,15591],{"class":874},[860,15625,3506],{"class":878},[860,15627,875],{"class":874},[860,15629,967],{"class":874},[860,15631,15632,15634,15637,15639],{"class":862,"line":1949},[860,15633,15591],{"class":874},[860,15635,15636],{"class":878},"CLOUDFLARE_API_TOKEN",[860,15638,875],{"class":874},[860,15640,967],{"class":874},[860,15642,15643],{"class":862,"line":3940},[860,15644,4337],{"class":870},[860,15646,15647],{"class":862,"line":3945},[860,15648,1232],{"emptyLinePlaceholder":526},[860,15650,15651],{"class":862,"line":3950},[860,15652,15653],{"class":1237},"// Variables to skip (not needed in production or handled differently)\n",[860,15655,15656,15658,15661,15663],{"class":862,"line":3956},[860,15657,1046],{"class":1045},[860,15659,15660],{"class":870}," SKIP_VARS ",[860,15662,1052],{"class":874},[860,15664,2639],{"class":870},[860,15666,15667,15669,15671,15673,15675],{"class":862,"line":3962},[860,15668,15591],{"class":874},[860,15670,3520],{"class":878},[860,15672,875],{"class":874},[860,15674,1091],{"class":874},[860,15676,15677],{"class":1237}," // Already set in wrangler.jsonc\n",[860,15679,15680,15682,15685,15687,15689],{"class":862,"line":3967},[860,15681,15591],{"class":874},[860,15683,15684],{"class":878},"CLOUDFLARE_ACCOUNT_ID",[860,15686,875],{"class":874},[860,15688,1091],{"class":874},[860,15690,15691],{"class":1237}," // Already set as account_id in wrangler.jsonc\n",[860,15693,15694],{"class":862,"line":3973},[860,15695,4337],{"class":870},[860,15697,15698],{"class":862,"line":3979},[860,15699,1232],{"emptyLinePlaceholder":526},[860,15701,15702],{"class":862,"line":3985},[860,15703,3820],{"class":1237},[860,15705,15706],{"class":862,"line":3991},[860,15707,15708],{"class":1237}," * Parse .env file into key-value pairs\n",[860,15710,15711],{"class":862,"line":3997},[860,15712,3835],{"class":1237},[860,15714,15715,15717,15720,15722,15724,15726],{"class":862,"line":4003},[860,15716,6327],{"class":1045},[860,15718,15719],{"class":866}," parseEnvFile",[860,15721,871],{"class":874},[860,15723,9825],{"class":1570},[860,15725,884],{"class":874},[860,15727,942],{"class":874},[860,15729,15730,15732,15734,15736,15738,15740,15742,15744,15746,15748,15750],{"class":862,"line":4008},[860,15731,5265],{"class":1045},[860,15733,8092],{"class":870},[860,15735,1222],{"class":874},[860,15737,5811],{"class":866},[860,15739,871],{"class":978},[860,15741,9825],{"class":870},[860,15743,1091],{"class":874},[860,15745,1847],{"class":874},[860,15747,6454],{"class":878},[860,15749,875],{"class":874},[860,15751,1417],{"class":978},[860,15753,15754,15756,15759,15761],{"class":862,"line":4014},[860,15755,5265],{"class":1045},[860,15757,15758],{"class":870}," vars",[860,15760,1222],{"class":874},[860,15762,15763],{"class":874}," {}\n",[860,15765,15766],{"class":862,"line":4019},[860,15767,1232],{"emptyLinePlaceholder":526},[860,15769,15770,15773,15775,15777,15779,15781,15783,15785,15787,15789,15791,15793,15795,15797],{"class":862,"line":4024},[860,15771,15772],{"class":870},"  content",[860,15774,759],{"class":874},[860,15776,9851],{"class":866},[860,15778,871],{"class":978},[860,15780,875],{"class":874},[860,15782,6772],{"class":870},[860,15784,875],{"class":874},[860,15786,884],{"class":978},[860,15788,759],{"class":874},[860,15790,6840],{"class":866},[860,15792,871],{"class":978},[860,15794,862],{"class":1570},[860,15796,1063],{"class":1045},[860,15798,942],{"class":874},[860,15800,15801],{"class":862,"line":4030},[860,15802,15803],{"class":1237},"    // Skip comments and empty lines\n",[860,15805,15806,15808,15810,15812,15814,15816,15818,15820,15822,15824,15826,15829,15831,15833,15835,15837,15839,15841,15843,15846],{"class":862,"line":4036},[860,15807,6541],{"class":1085},[860,15809,1567],{"class":978},[860,15811,862],{"class":870},[860,15813,759],{"class":874},[860,15815,6724],{"class":866},[860,15817,1060],{"class":978},[860,15819,759],{"class":874},[860,15821,14326],{"class":866},[860,15823,871],{"class":978},[860,15825,875],{"class":874},[860,15827,15828],{"class":878},"#",[860,15830,875],{"class":874},[860,15832,5320],{"class":978},[860,15834,2887],{"class":874},[860,15836,10511],{"class":874},[860,15838,862],{"class":870},[860,15840,759],{"class":874},[860,15842,6724],{"class":866},[860,15844,15845],{"class":978},"()) ",[860,15847,1815],{"class":874},[860,15849,15850],{"class":862,"line":4042},[860,15851,15852],{"class":1085},"      return\n",[860,15854,15855],{"class":862,"line":4047},[860,15856,2380],{"class":874},[860,15858,15859],{"class":862,"line":4053},[860,15860,1232],{"emptyLinePlaceholder":526},[860,15862,15863],{"class":862,"line":4058},[860,15864,15865],{"class":1237},"    // Parse KEY=VALUE (with or without quotes)\n",[860,15867,15868,15870,15872,15874,15877,15879,15881,15883,15885,15888,15891,15894,15897,15900,15903,15906,15908,15910,15913,15915,15918,15920,15922],{"class":862,"line":4064},[860,15869,1378],{"class":1045},[860,15871,7390],{"class":870},[860,15873,1222],{"class":874},[860,15875,15876],{"class":870}," line",[860,15878,759],{"class":874},[860,15880,7399],{"class":866},[860,15882,871],{"class":978},[860,15884,566],{"class":874},[860,15886,15887],{"class":1085},"^",[860,15889,15890],{"class":874},"([",[860,15892,15893],{"class":878},"A-Z_",[860,15895,15896],{"class":874},"][",[860,15898,15899],{"class":878},"A-Z0-9_",[860,15901,15902],{"class":874},"]*)",[860,15904,15905],{"class":878},"\\s",[860,15907,7409],{"class":874},[860,15909,7412],{"class":878},[860,15911,15912],{"class":874},"*(",[860,15914,759],{"class":878},[860,15916,15917],{"class":874},"*)",[860,15919,1086],{"class":1085},[860,15921,566],{"class":874},[860,15923,1417],{"class":978},[860,15925,15926,15928,15930,15932,15934],{"class":862,"line":4070},[860,15927,6541],{"class":1085},[860,15929,1567],{"class":978},[860,15931,7399],{"class":870},[860,15933,5320],{"class":978},[860,15935,1815],{"class":874},[860,15937,15938,15940,15943,15946,15948,15951,15953,15955],{"class":862,"line":4076},[860,15939,12840],{"class":1045},[860,15941,15942],{"class":874}," [,",[860,15944,15945],{"class":870}," key",[860,15947,1091],{"class":874},[860,15949,15950],{"class":870}," value",[860,15952,989],{"class":874},[860,15954,1222],{"class":874},[860,15956,15957],{"class":870}," match\n",[860,15959,15960],{"class":862,"line":4081},[860,15961,15962],{"class":1237},"      // Remove surrounding quotes if present\n",[860,15964,15965,15967,15970,15972,15974,15976,15978,15980,15982,15984,15986,15989,15992,15994,15996,15998,16000,16003,16005,16007,16009,16011,16013],{"class":862,"line":4086},[860,15966,12840],{"class":1045},[860,15968,15969],{"class":870}," cleanValue",[860,15971,1222],{"class":874},[860,15973,15950],{"class":870},[860,15975,759],{"class":874},[860,15977,1075],{"class":866},[860,15979,871],{"class":978},[860,15981,566],{"class":874},[860,15983,15887],{"class":1085},[860,15985,7122],{"class":874},[860,15987,15988],{"class":878},"\"'",[860,15990,15991],{"class":874},"]|[",[860,15993,15988],{"class":878},[860,15995,989],{"class":874},[860,15997,1086],{"class":1085},[860,15999,566],{"class":874},[860,16001,16002],{"class":1836},"g",[860,16004,1091],{"class":874},[860,16006,1094],{"class":874},[860,16008,884],{"class":978},[860,16010,759],{"class":874},[860,16012,6724],{"class":866},[860,16014,905],{"class":978},[860,16016,16017,16020,16022,16024,16026,16028],{"class":862,"line":4091},[860,16018,16019],{"class":870},"      vars",[860,16021,7122],{"class":978},[860,16023,1571],{"class":870},[860,16025,2814],{"class":978},[860,16027,1052],{"class":874},[860,16029,16030],{"class":870}," cleanValue\n",[860,16032,16033],{"class":862,"line":4096},[860,16034,2380],{"class":874},[860,16036,16037,16039],{"class":862,"line":4102},[860,16038,2108],{"class":874},[860,16040,1417],{"class":978},[860,16042,16043],{"class":862,"line":4108},[860,16044,1232],{"emptyLinePlaceholder":526},[860,16046,16047,16049],{"class":862,"line":4114},[860,16048,5357],{"class":1085},[860,16050,16051],{"class":870}," vars\n",[860,16053,16054],{"class":862,"line":4119},[860,16055,1014],{"class":874},[860,16057,16058],{"class":862,"line":4125},[860,16059,1232],{"emptyLinePlaceholder":526},[860,16061,16062],{"class":862,"line":4131},[860,16063,3820],{"class":1237},[860,16065,16066],{"class":862,"line":4136},[860,16067,16068],{"class":1237}," * Read and parse wrangler.jsonc (with comments)\n",[860,16070,16071],{"class":862,"line":4141},[860,16072,3835],{"class":1237},[860,16074,16075,16077,16080,16082,16084,16086],{"class":862,"line":4146},[860,16076,6327],{"class":1045},[860,16078,16079],{"class":866}," readWranglerConfig",[860,16081,871],{"class":874},[860,16083,9825],{"class":1570},[860,16085,884],{"class":874},[860,16087,942],{"class":874},[860,16089,16090,16092,16094,16096,16098,16100,16102,16104,16106,16108,16110],{"class":862,"line":4152},[860,16091,5265],{"class":1045},[860,16093,8092],{"class":870},[860,16095,1222],{"class":874},[860,16097,5811],{"class":866},[860,16099,871],{"class":978},[860,16101,9825],{"class":870},[860,16103,1091],{"class":874},[860,16105,1847],{"class":874},[860,16107,6454],{"class":878},[860,16109,875],{"class":874},[860,16111,1417],{"class":978},[860,16113,16114],{"class":862,"line":4157},[860,16115,1232],{"emptyLinePlaceholder":526},[860,16117,16118],{"class":862,"line":4163},[860,16119,16120],{"class":1237},"  // Remove comments to parse JSON\n",[860,16122,16123,16125,16128,16130],{"class":862,"line":4169},[860,16124,5265],{"class":1045},[860,16126,16127],{"class":870}," jsonContent",[860,16129,1222],{"class":874},[860,16131,16132],{"class":870}," content\n",[860,16134,16135,16137,16139,16141,16143,16145,16147],{"class":862,"line":4174},[860,16136,10453],{"class":874},[860,16138,9851],{"class":866},[860,16140,871],{"class":978},[860,16142,875],{"class":874},[860,16144,6772],{"class":870},[860,16146,875],{"class":874},[860,16148,1417],{"class":978},[860,16150,16151,16153,16155,16157,16159,16161,16163,16165,16167,16169,16171,16173,16175,16177,16179,16182,16184],{"class":862,"line":6800},[860,16152,10453],{"class":874},[860,16154,9577],{"class":866},[860,16156,871],{"class":978},[860,16158,862],{"class":1570},[860,16160,1063],{"class":1045},[860,16162,10511],{"class":874},[860,16164,862],{"class":870},[860,16166,759],{"class":874},[860,16168,6724],{"class":866},[860,16170,1060],{"class":978},[860,16172,759],{"class":874},[860,16174,14326],{"class":866},[860,16176,871],{"class":978},[860,16178,875],{"class":874},[860,16180,16181],{"class":878},"//",[860,16183,875],{"class":874},[860,16185,1097],{"class":978},[860,16187,16188,16190,16193,16195,16197,16199,16201],{"class":862,"line":6827},[860,16189,10453],{"class":874},[860,16191,16192],{"class":866},"join",[860,16194,871],{"class":978},[860,16196,875],{"class":874},[860,16198,6772],{"class":870},[860,16200,875],{"class":874},[860,16202,1417],{"class":978},[860,16204,16205,16207,16209,16211,16213,16216,16218,16221,16224,16227,16229,16231,16233,16235,16237],{"class":862,"line":6832},[860,16206,10453],{"class":874},[860,16208,1075],{"class":866},[860,16210,871],{"class":978},[860,16212,566],{"class":874},[860,16214,16215],{"class":870},"\\/\\*",[860,16217,7122],{"class":874},[860,16219,16220],{"class":878},"\\s\\S",[860,16222,16223],{"class":874},"]*?",[860,16225,16226],{"class":870},"\\*\\/",[860,16228,566],{"class":874},[860,16230,16002],{"class":1836},[860,16232,1091],{"class":874},[860,16234,1094],{"class":874},[860,16236,5320],{"class":978},[860,16238,16239],{"class":1237},"// Remove block comments\n",[860,16241,16242],{"class":862,"line":6861},[860,16243,1232],{"emptyLinePlaceholder":526},[860,16245,16246,16248],{"class":862,"line":6892},[860,16247,5357],{"class":1085},[860,16249,942],{"class":874},[860,16251,16252,16255,16257,16259],{"class":862,"line":6961},[860,16253,16254],{"class":978},"    raw",[860,16256,849],{"class":874},[860,16258,8092],{"class":870},[860,16260,967],{"class":874},[860,16262,16263,16266,16268,16270,16272,16275,16277,16280],{"class":862,"line":6968},[860,16264,16265],{"class":978},"    parsed",[860,16267,849],{"class":874},[860,16269,15215],{"class":870},[860,16271,759],{"class":874},[860,16273,16274],{"class":866},"parse",[860,16276,871],{"class":978},[860,16278,16279],{"class":870},"jsonContent",[860,16281,1417],{"class":978},[860,16283,16284],{"class":862,"line":6973},[860,16285,1008],{"class":874},[860,16287,16288],{"class":862,"line":6985},[860,16289,1014],{"class":874},[860,16291,16292],{"class":862,"line":7009},[860,16293,1232],{"emptyLinePlaceholder":526},[860,16295,16296],{"class":862,"line":7041},[860,16297,3820],{"class":1237},[860,16299,16300],{"class":862,"line":7046},[860,16301,16302],{"class":1237}," * Update wrangler.jsonc with new vars\n",[860,16304,16305],{"class":862,"line":7091},[860,16306,3835],{"class":1237},[860,16308,16309,16311,16314,16316,16318,16320,16323,16325],{"class":862,"line":7115},[860,16310,6327],{"class":1045},[860,16312,16313],{"class":866}," updateWranglerVars",[860,16315,871],{"class":874},[860,16317,8101],{"class":1570},[860,16319,1091],{"class":874},[860,16321,16322],{"class":1570}," envVars",[860,16324,884],{"class":874},[860,16326,942],{"class":874},[860,16328,16329,16331,16333,16336,16338,16341,16343,16345,16347,16349,16351],{"class":862,"line":7130},[860,16330,5265],{"class":1045},[860,16332,1213],{"class":874},[860,16334,16335],{"class":870}," raw",[860,16337,1091],{"class":874},[860,16339,16340],{"class":870}," parsed",[860,16342,1855],{"class":874},[860,16344,1222],{"class":874},[860,16346,16079],{"class":866},[860,16348,871],{"class":978},[860,16350,8101],{"class":870},[860,16352,1417],{"class":978},[860,16354,16355],{"class":862,"line":7135},[860,16356,1232],{"emptyLinePlaceholder":526},[860,16358,16359],{"class":862,"line":7140},[860,16360,16361],{"class":1237},"  // Separate public and secret vars\n",[860,16363,16364,16366,16369,16371],{"class":862,"line":7163},[860,16365,5265],{"class":1045},[860,16367,16368],{"class":870}," publicVars",[860,16370,1222],{"class":874},[860,16372,15763],{"class":874},[860,16374,16375,16377,16380,16382],{"class":862,"line":7213},[860,16376,5265],{"class":1045},[860,16378,16379],{"class":870}," secretVars",[860,16381,1222],{"class":874},[860,16383,9631],{"class":978},[860,16385,16386],{"class":862,"line":7221},[860,16387,1232],{"emptyLinePlaceholder":526},[860,16389,16390,16393,16395,16398,16400,16403,16405,16407,16409,16411,16413,16415,16417,16419,16422,16424],{"class":862,"line":7226},[860,16391,16392],{"class":870},"  Object",[860,16394,759],{"class":874},[860,16396,16397],{"class":866},"entries",[860,16399,871],{"class":978},[860,16401,16402],{"class":870},"envVars",[860,16404,884],{"class":978},[860,16406,759],{"class":874},[860,16408,6840],{"class":866},[860,16410,871],{"class":978},[860,16412,15890],{"class":874},[860,16414,1571],{"class":1570},[860,16416,1091],{"class":874},[860,16418,15950],{"class":1570},[860,16420,16421],{"class":874},"])",[860,16423,1063],{"class":1045},[860,16425,942],{"class":874},[860,16427,16428,16430,16432,16435,16437,16439,16441,16443,16445],{"class":862,"line":7231},[860,16429,6541],{"class":1085},[860,16431,1567],{"class":978},[860,16433,16434],{"class":870},"SKIP_VARS",[860,16436,759],{"class":874},[860,16438,10986],{"class":866},[860,16440,871],{"class":978},[860,16442,1571],{"class":870},[860,16444,14338],{"class":978},[860,16446,1815],{"class":874},[860,16448,16449,16452,16454,16456,16458,16460,16463,16465,16467,16469,16472,16474],{"class":862,"line":7249},[860,16450,16451],{"class":870},"      console",[860,16453,759],{"class":874},[860,16455,6363],{"class":866},[860,16457,871],{"class":978},[860,16459,6900],{"class":874},[860,16461,16462],{"class":878},"⏭️  Skipping ",[860,16464,1326],{"class":874},[860,16466,1571],{"class":870},[860,16468,1219],{"class":874},[860,16470,16471],{"class":878}," (already configured)",[860,16473,6900],{"class":874},[860,16475,1417],{"class":978},[860,16477,16478],{"class":862,"line":7288},[860,16479,15852],{"class":1085},[860,16481,16482],{"class":862,"line":7293},[860,16483,2380],{"class":874},[860,16485,16486],{"class":862,"line":7300},[860,16487,1232],{"emptyLinePlaceholder":526},[860,16489,16490,16492,16494,16497,16499,16501,16503,16505,16507],{"class":862,"line":7327},[860,16491,6541],{"class":1085},[860,16493,1567],{"class":978},[860,16495,16496],{"class":870},"SECRETS",[860,16498,759],{"class":874},[860,16500,10986],{"class":866},[860,16502,871],{"class":978},[860,16504,1571],{"class":870},[860,16506,14338],{"class":978},[860,16508,1815],{"class":874},[860,16510,16511,16514,16516,16518,16520,16522],{"class":862,"line":7341},[860,16512,16513],{"class":870},"      secretVars",[860,16515,759],{"class":874},[860,16517,11399],{"class":866},[860,16519,871],{"class":978},[860,16521,1571],{"class":870},[860,16523,1417],{"class":978},[860,16525,16526,16528,16530,16532,16534,16536,16539,16541,16543,16545],{"class":862,"line":7359},[860,16527,16451],{"class":870},[860,16529,759],{"class":874},[860,16531,6363],{"class":866},[860,16533,871],{"class":978},[860,16535,6900],{"class":874},[860,16537,16538],{"class":878},"🔐 Secret detected: ",[860,16540,1326],{"class":874},[860,16542,1571],{"class":870},[860,16544,1351],{"class":874},[860,16546,1417],{"class":978},[860,16548,16549,16551,16553,16556,16558,16560,16562],{"class":862,"line":7374},[860,16550,6519],{"class":874},[860,16552,11308],{"class":1085},[860,16554,16555],{"class":1085}," if",[860,16557,1567],{"class":978},[860,16559,1334],{"class":870},[860,16561,5320],{"class":978},[860,16563,1815],{"class":874},[860,16565,16566,16569,16571,16573,16575,16577],{"class":862,"line":7380},[860,16567,16568],{"class":870},"      publicVars",[860,16570,7122],{"class":978},[860,16572,1571],{"class":870},[860,16574,2814],{"class":978},[860,16576,1052],{"class":874},[860,16578,16579],{"class":870}," value\n",[860,16581,16582,16584,16586,16588,16590,16592,16595,16597,16599,16601],{"class":862,"line":7385},[860,16583,16451],{"class":870},[860,16585,759],{"class":874},[860,16587,6363],{"class":866},[860,16589,871],{"class":978},[860,16591,6900],{"class":874},[860,16593,16594],{"class":878},"✅ Adding: ",[860,16596,1326],{"class":874},[860,16598,1571],{"class":870},[860,16600,1351],{"class":874},[860,16602,1417],{"class":978},[860,16604,16605],{"class":862,"line":7433},[860,16606,2380],{"class":874},[860,16608,16609,16611],{"class":862,"line":7457},[860,16610,2108],{"class":874},[860,16612,1417],{"class":978},[860,16614,16615],{"class":862,"line":7482},[860,16616,1232],{"emptyLinePlaceholder":526},[860,16618,16619],{"class":862,"line":7515},[860,16620,16621],{"class":1237},"  // Update parsed config\n",[860,16623,16624,16627,16629,16631,16633],{"class":862,"line":7529},[860,16625,16626],{"class":870},"  parsed",[860,16628,759],{"class":874},[860,16630,13677],{"class":870},[860,16632,1222],{"class":874},[860,16634,942],{"class":874},[860,16636,16637,16640,16643,16645,16647],{"class":862,"line":7534},[860,16638,16639],{"class":874},"    ...",[860,16641,16642],{"class":870},"parsed",[860,16644,759],{"class":874},[860,16646,13677],{"class":870},[860,16648,967],{"class":874},[860,16650,16651,16653],{"class":862,"line":7541},[860,16652,16639],{"class":874},[860,16654,16655],{"class":870},"publicVars\n",[860,16657,16658],{"class":862,"line":7556},[860,16659,1008],{"class":874},[860,16661,16662],{"class":862,"line":7581},[860,16663,1232],{"emptyLinePlaceholder":526},[860,16665,16666],{"class":862,"line":7588},[860,16667,16668],{"class":1237},"  // Find the vars section in raw content and replace it\n",[860,16670,16671,16673,16676,16678,16680,16682,16685,16687,16689,16692,16694],{"class":862,"line":7593},[860,16672,5265],{"class":1045},[860,16674,16675],{"class":870}," varsStart",[860,16677,1222],{"class":874},[860,16679,16335],{"class":870},[860,16681,759],{"class":874},[860,16683,16684],{"class":866},"indexOf",[860,16686,871],{"class":978},[860,16688,875],{"class":874},[860,16690,16691],{"class":878},"\"vars\": {",[860,16693,875],{"class":874},[860,16695,1417],{"class":978},[860,16697,16698,16700,16702,16705,16707,16709,16711,16713],{"class":862,"line":7598},[860,16699,5311],{"class":1085},[860,16701,1567],{"class":978},[860,16703,16704],{"class":870},"varsStart",[860,16706,7021],{"class":874},[860,16708,7156],{"class":874},[860,16710,7449],{"class":1836},[860,16712,5320],{"class":978},[860,16714,1815],{"class":874},[860,16716,16717,16720,16722,16724,16726,16728,16731,16733],{"class":862,"line":7603},[860,16718,16719],{"class":870},"    console",[860,16721,759],{"class":874},[860,16723,5562],{"class":866},[860,16725,871],{"class":978},[860,16727,875],{"class":874},[860,16729,16730],{"class":878},"❌ Could not find \"vars\" section in wrangler.jsonc",[860,16732,875],{"class":874},[860,16734,1417],{"class":978},[860,16736,16737,16739,16741,16743,16745,16747],{"class":862,"line":7628},[860,16738,10377],{"class":870},[860,16740,759],{"class":874},[860,16742,8951],{"class":866},[860,16744,871],{"class":978},[860,16746,7449],{"class":1836},[860,16748,1417],{"class":978},[860,16750,16751],{"class":862,"line":7653},[860,16752,1008],{"class":874},[860,16754,16755],{"class":862,"line":7692},[860,16756,1232],{"emptyLinePlaceholder":526},[860,16758,16759],{"class":862,"line":7697},[860,16760,16761],{"class":1237},"  // Format the vars object with proper indentation\n",[860,16763,16764,16766,16769,16771,16773,16775,16777,16779,16781,16783,16785,16787,16789,16791],{"class":862,"line":7704},[860,16765,5265],{"class":1045},[860,16767,16768],{"class":870}," varsJson",[860,16770,1222],{"class":874},[860,16772,15215],{"class":870},[860,16774,759],{"class":874},[860,16776,15220],{"class":866},[860,16778,871],{"class":978},[860,16780,16642],{"class":870},[860,16782,759],{"class":874},[860,16784,13677],{"class":870},[860,16786,1091],{"class":874},[860,16788,15230],{"class":874},[860,16790,15233],{"class":1836},[860,16792,1417],{"class":978},[860,16794,16795,16797,16799,16801,16803,16805,16807],{"class":862,"line":7729},[860,16796,10453],{"class":874},[860,16798,9851],{"class":866},[860,16800,871],{"class":978},[860,16802,875],{"class":874},[860,16804,6772],{"class":870},[860,16806,875],{"class":874},[860,16808,1417],{"class":978},[860,16810,16811,16813,16815,16817,16819,16821,16823,16826,16828,16830,16832,16834,16836,16838,16840,16842,16844,16846,16848,16850],{"class":862,"line":7742},[860,16812,10453],{"class":874},[860,16814,10475],{"class":866},[860,16816,871],{"class":978},[860,16818,871],{"class":874},[860,16820,862],{"class":1570},[860,16822,1091],{"class":874},[860,16824,16825],{"class":1570}," i",[860,16827,884],{"class":874},[860,16829,1063],{"class":1045},[860,16831,16825],{"class":870},[860,16833,7021],{"class":874},[860,16835,10530],{"class":1836},[860,16837,6475],{"class":874},[860,16839,15876],{"class":870},[860,16841,6485],{"class":874},[860,16843,1847],{"class":874},[860,16845,15591],{"class":874},[860,16847,6788],{"class":874},[860,16849,15876],{"class":870},[860,16851,1417],{"class":978},[860,16853,16854,16856,16858,16860,16862,16864,16866],{"class":862,"line":7766},[860,16855,10453],{"class":874},[860,16857,16192],{"class":866},[860,16859,871],{"class":978},[860,16861,875],{"class":874},[860,16863,6772],{"class":870},[860,16865,875],{"class":874},[860,16867,1417],{"class":978},[860,16869,16870],{"class":862,"line":7779},[860,16871,1232],{"emptyLinePlaceholder":526},[860,16873,16874],{"class":862,"line":7784},[860,16875,16876],{"class":1237},"  // Find the end of vars section\n",[860,16878,16879,16881,16884,16886],{"class":862,"line":7789},[860,16880,11275],{"class":1045},[860,16882,16883],{"class":870}," braceCount",[860,16885,1222],{"class":874},[860,16887,16888],{"class":1836}," 0\n",[860,16890,16891,16893,16896,16898],{"class":862,"line":7831},[860,16892,11275],{"class":1045},[860,16894,16895],{"class":870}," varsEnd",[860,16897,1222],{"class":874},[860,16899,16900],{"class":870}," varsStart\n",[860,16902,16903,16905,16908,16910],{"class":862,"line":7852},[860,16904,11275],{"class":1045},[860,16906,16907],{"class":870}," foundStart",[860,16909,1222],{"class":874},[860,16911,8459],{"class":963},[860,16913,16914],{"class":862,"line":7876},[860,16915,1232],{"emptyLinePlaceholder":526},[860,16917,16918,16920,16922,16925,16927,16929,16931,16934,16936,16938,16940,16942,16944,16946,16948,16951,16953],{"class":862,"line":7908},[860,16919,11350],{"class":1085},[860,16921,1567],{"class":978},[860,16923,16924],{"class":1045},"let",[860,16926,16825],{"class":870},[860,16928,1222],{"class":874},[860,16930,16675],{"class":870},[860,16932,16933],{"class":874},";",[860,16935,16825],{"class":870},[860,16937,7067],{"class":874},[860,16939,16335],{"class":870},[860,16941,759],{"class":874},[860,16943,7084],{"class":870},[860,16945,16933],{"class":874},[860,16947,16825],{"class":870},[860,16949,16950],{"class":874},"++",[860,16952,5320],{"class":978},[860,16954,1815],{"class":874},[860,16956,16957,16959,16961,16964,16966,16969,16971,16973,16975,16977,16979,16981],{"class":862,"line":7921},[860,16958,6541],{"class":1085},[860,16960,1567],{"class":978},[860,16962,16963],{"class":870},"raw",[860,16965,7122],{"class":978},[860,16967,16968],{"class":870},"i",[860,16970,2814],{"class":978},[860,16972,10334],{"class":874},[860,16974,1847],{"class":874},[860,16976,1828],{"class":878},[860,16978,875],{"class":874},[860,16980,5320],{"class":978},[860,16982,1815],{"class":874},[860,16984,16985,16988],{"class":862,"line":7926},[860,16986,16987],{"class":870},"      braceCount",[860,16989,16990],{"class":874},"++\n",[860,16992,16993,16996,16998],{"class":862,"line":7933},[860,16994,16995],{"class":870},"      foundStart",[860,16997,1222],{"class":874},[860,16999,1002],{"class":963},[860,17001,17002,17004,17006,17008,17010,17012,17014,17016,17018,17020,17022,17024,17026,17028],{"class":862,"line":7948},[860,17003,6519],{"class":874},[860,17005,11308],{"class":1085},[860,17007,16555],{"class":1085},[860,17009,1567],{"class":978},[860,17011,16963],{"class":870},[860,17013,7122],{"class":978},[860,17015,16968],{"class":870},[860,17017,2814],{"class":978},[860,17019,10334],{"class":874},[860,17021,1847],{"class":874},[860,17023,1219],{"class":878},[860,17025,875],{"class":874},[860,17027,5320],{"class":978},[860,17029,1815],{"class":874},[860,17031,17032,17034],{"class":862,"line":7972},[860,17033,16987],{"class":870},[860,17035,17036],{"class":874},"--\n",[860,17038,17039,17041,17043,17046,17048,17050,17052,17054,17056],{"class":862,"line":7979},[860,17040,14825],{"class":1085},[860,17042,1567],{"class":978},[860,17044,17045],{"class":870},"foundStart",[860,17047,7442],{"class":874},[860,17049,16883],{"class":870},[860,17051,7021],{"class":874},[860,17053,10530],{"class":1836},[860,17055,5320],{"class":978},[860,17057,1815],{"class":874},[860,17059,17060,17063,17065,17067,17069],{"class":862,"line":7984},[860,17061,17062],{"class":870},"        varsEnd",[860,17064,1222],{"class":874},[860,17066,16825],{"class":870},[860,17068,6788],{"class":874},[860,17070,17071],{"class":1836}," 1\n",[860,17073,17074],{"class":862,"line":7989},[860,17075,13415],{"class":1085},[860,17077,17078],{"class":862,"line":7994},[860,17079,2827],{"class":874},[860,17081,17082],{"class":862,"line":8021},[860,17083,2380],{"class":874},[860,17085,17086],{"class":862,"line":8047},[860,17087,1008],{"class":874},[860,17089,17090],{"class":862,"line":8052},[860,17091,1232],{"emptyLinePlaceholder":526},[860,17093,17094],{"class":862,"line":8059},[860,17095,17096],{"class":1237},"  // Replace the vars section\n",[860,17098,17099,17101,17104,17106,17108,17110,17113,17115,17117,17119,17121],{"class":862,"line":8086},[860,17100,5265],{"class":1045},[860,17102,17103],{"class":870}," before",[860,17105,1222],{"class":874},[860,17107,16335],{"class":870},[860,17109,759],{"class":874},[860,17111,17112],{"class":866},"substring",[860,17114,871],{"class":978},[860,17116,7125],{"class":1836},[860,17118,1091],{"class":874},[860,17120,16675],{"class":870},[860,17122,1417],{"class":978},[860,17124,17125,17127,17130,17132,17134,17136,17138,17140,17143],{"class":862,"line":8114},[860,17126,5265],{"class":1045},[860,17128,17129],{"class":870}," after",[860,17131,1222],{"class":874},[860,17133,16335],{"class":870},[860,17135,759],{"class":874},[860,17137,17112],{"class":866},[860,17139,871],{"class":978},[860,17141,17142],{"class":870},"varsEnd",[860,17144,1417],{"class":978},[860,17146,17147,17149,17152,17154,17156,17158,17160,17163,17165,17167,17169,17171],{"class":862,"line":8119},[860,17148,5265],{"class":1045},[860,17150,17151],{"class":870}," newContent",[860,17153,1222],{"class":874},[860,17155,17103],{"class":870},[860,17157,6788],{"class":874},[860,17159,1847],{"class":874},[860,17161,17162],{"class":878},"\"vars\": ",[860,17164,875],{"class":874},[860,17166,6788],{"class":874},[860,17168,16768],{"class":870},[860,17170,6788],{"class":874},[860,17172,17173],{"class":870}," after\n",[860,17175,17176],{"class":862,"line":8132},[860,17177,1232],{"emptyLinePlaceholder":526},[860,17179,17180],{"class":862,"line":8148},[860,17181,17182],{"class":1237},"  // Write updated config\n",[860,17184,17185,17188,17190,17192,17194,17196,17198,17200,17202,17204],{"class":862,"line":8166},[860,17186,17187],{"class":866},"  writeFileSync",[860,17189,871],{"class":978},[860,17191,8101],{"class":870},[860,17193,1091],{"class":874},[860,17195,17151],{"class":870},[860,17197,1091],{"class":874},[860,17199,1847],{"class":874},[860,17201,6454],{"class":878},[860,17203,875],{"class":874},[860,17205,1417],{"class":978},[860,17207,17208],{"class":862,"line":8186},[860,17209,1232],{"emptyLinePlaceholder":526},[860,17211,17212,17214,17216,17218,17220,17222,17224,17227,17229],{"class":862,"line":8192},[860,17213,6358],{"class":870},[860,17215,759],{"class":874},[860,17217,6363],{"class":866},[860,17219,871],{"class":978},[860,17221,875],{"class":874},[860,17223,6772],{"class":870},[860,17225,17226],{"class":878},"✅ wrangler.jsonc updated successfully!",[860,17228,875],{"class":874},[860,17230,1417],{"class":978},[860,17232,17233,17235,17237,17239,17241,17243,17246,17248,17250,17252,17254,17257,17259,17261,17263,17266,17268],{"class":862,"line":8197},[860,17234,6358],{"class":870},[860,17236,759],{"class":874},[860,17238,6363],{"class":866},[860,17240,871],{"class":978},[860,17242,6900],{"class":874},[860,17244,17245],{"class":878},"   Added ",[860,17247,1326],{"class":874},[860,17249,14018],{"class":870},[860,17251,759],{"class":874},[860,17253,14023],{"class":866},[860,17255,17256],{"class":870},"(publicVars)",[860,17258,759],{"class":874},[860,17260,7084],{"class":870},[860,17262,1219],{"class":874},[860,17264,17265],{"class":878}," public variables",[860,17267,6900],{"class":874},[860,17269,1417],{"class":978},[860,17271,17272],{"class":862,"line":8202},[860,17273,1232],{"emptyLinePlaceholder":526},[860,17275,17276],{"class":862,"line":8216},[860,17277,17278],{"class":1237},"  // Print instructions for secrets\n",[860,17280,17281,17283,17285,17288,17290,17292,17294,17296,17298],{"class":862,"line":8231},[860,17282,5311],{"class":1085},[860,17284,1567],{"class":978},[860,17286,17287],{"class":870},"secretVars",[860,17289,759],{"class":874},[860,17291,7084],{"class":870},[860,17293,7076],{"class":874},[860,17295,10530],{"class":1836},[860,17297,5320],{"class":978},[860,17299,1815],{"class":874},[860,17301,17302,17304,17306,17308,17310,17312,17314,17317,17319],{"class":862,"line":8248},[860,17303,16719],{"class":870},[860,17305,759],{"class":874},[860,17307,6363],{"class":866},[860,17309,871],{"class":978},[860,17311,875],{"class":874},[860,17313,6772],{"class":870},[860,17315,17316],{"class":878},"🔐 SECRETS DETECTED - Add manually using wrangler CLI:",[860,17318,875],{"class":874},[860,17320,1417],{"class":978},[860,17322,17323,17325,17327,17329,17331,17333,17336,17338,17340],{"class":862,"line":8266},[860,17324,16719],{"class":870},[860,17326,759],{"class":874},[860,17328,6363],{"class":866},[860,17330,871],{"class":978},[860,17332,875],{"class":874},[860,17334,17335],{"class":878},"   Secrets should NEVER be committed to wrangler.jsonc",[860,17337,6772],{"class":870},[860,17339,875],{"class":874},[860,17341,1417],{"class":978},[860,17343,17344],{"class":862,"line":8271},[860,17345,1232],{"emptyLinePlaceholder":526},[860,17347,17348,17351,17353,17355,17357,17360,17362],{"class":862,"line":8276},[860,17349,17350],{"class":870},"    secretVars",[860,17352,759],{"class":874},[860,17354,6840],{"class":866},[860,17356,871],{"class":978},[860,17358,17359],{"class":1570},"secret",[860,17361,1063],{"class":1045},[860,17363,942],{"class":874},[860,17365,17366,17368,17370,17372,17374,17376,17379,17381,17383,17385],{"class":862,"line":8281},[860,17367,16451],{"class":870},[860,17369,759],{"class":874},[860,17371,6363],{"class":866},[860,17373,871],{"class":978},[860,17375,6900],{"class":874},[860,17377,17378],{"class":878},"   wrangler secret put ",[860,17380,1326],{"class":874},[860,17382,17359],{"class":870},[860,17384,1351],{"class":874},[860,17386,1417],{"class":978},[860,17388,17389,17391,17393,17395,17397,17399,17402,17404],{"class":862,"line":8295},[860,17390,16451],{"class":870},[860,17392,759],{"class":874},[860,17394,6363],{"class":866},[860,17396,871],{"class":978},[860,17398,6900],{"class":874},[860,17400,17401],{"class":878},"   # Enter value when prompted",[860,17403,6900],{"class":874},[860,17405,1417],{"class":978},[860,17407,17408,17410,17412,17414,17416,17418],{"class":862,"line":8310},[860,17409,16451],{"class":870},[860,17411,759],{"class":874},[860,17413,6363],{"class":866},[860,17415,871],{"class":978},[860,17417,6980],{"class":874},[860,17419,1417],{"class":978},[860,17421,17422,17424],{"class":862,"line":8327},[860,17423,6519],{"class":874},[860,17425,1417],{"class":978},[860,17427,17428],{"class":862,"line":8345},[860,17429,1008],{"class":874},[860,17431,17432],{"class":862,"line":8350},[860,17433,1232],{"emptyLinePlaceholder":526},[860,17435,17436,17438,17440,17442,17444,17446,17448,17451,17453],{"class":862,"line":8355},[860,17437,6358],{"class":870},[860,17439,759],{"class":874},[860,17441,6363],{"class":866},[860,17443,871],{"class":978},[860,17445,875],{"class":874},[860,17447,6772],{"class":870},[860,17449,17450],{"class":878},"📝 Note: Secrets are encrypted and stored separately by Cloudflare",[860,17452,875],{"class":874},[860,17454,1417],{"class":978},[860,17456,17457],{"class":862,"line":8360},[860,17458,1014],{"class":874},[860,17460,17461],{"class":862,"line":8384},[860,17462,1232],{"emptyLinePlaceholder":526},[860,17464,17465],{"class":862,"line":8408},[860,17466,3820],{"class":1237},[860,17468,17469],{"class":862,"line":8415},[860,17470,17471],{"class":1237}," * Main\n",[860,17473,17474],{"class":862,"line":8430},[860,17475,3835],{"class":1237},[860,17477,17478,17480,17482,17484],{"class":862,"line":8454},[860,17479,6327],{"class":1045},[860,17481,8484],{"class":866},[860,17483,1060],{"class":874},[860,17485,942],{"class":874},[860,17487,17488,17490,17493,17495,17497,17499,17501,17503,17505,17507,17509],{"class":862,"line":8462},[860,17489,5265],{"class":1045},[860,17491,17492],{"class":870}," envPath",[860,17494,1222],{"class":874},[860,17496,15474],{"class":866},[860,17498,871],{"class":978},[860,17500,8073],{"class":870},[860,17502,1091],{"class":874},[860,17504,1847],{"class":874},[860,17506,3568],{"class":878},[860,17508,875],{"class":874},[860,17510,1417],{"class":978},[860,17512,17513,17515,17517,17519,17521,17523,17525,17527,17529,17531,17533],{"class":862,"line":8467},[860,17514,5265],{"class":1045},[860,17516,8064],{"class":870},[860,17518,1222],{"class":874},[860,17520,15474],{"class":866},[860,17522,871],{"class":978},[860,17524,8073],{"class":870},[860,17526,1091],{"class":874},[860,17528,1847],{"class":874},[860,17530,2607],{"class":878},[860,17532,875],{"class":874},[860,17534,1417],{"class":978},[860,17536,17537],{"class":862,"line":8472},[860,17538,1232],{"emptyLinePlaceholder":526},[860,17540,17541,17543,17545,17547,17549,17551,17554,17556,17558],{"class":862,"line":8477},[860,17542,6358],{"class":870},[860,17544,759],{"class":874},[860,17546,6363],{"class":866},[860,17548,871],{"class":978},[860,17550,875],{"class":874},[860,17552,17553],{"class":878},"🔄 Syncing environment variables to wrangler.jsonc...",[860,17555,6772],{"class":870},[860,17557,875],{"class":874},[860,17559,1417],{"class":978},[860,17561,17562],{"class":862,"line":8491},[860,17563,1232],{"emptyLinePlaceholder":526},[860,17565,17566,17568],{"class":862,"line":8534},[860,17567,6426],{"class":1085},[860,17569,942],{"class":874},[860,17571,17572,17574,17576,17578,17580,17582,17585],{"class":862,"line":8566},[860,17573,1378],{"class":1045},[860,17575,16322],{"class":870},[860,17577,1222],{"class":874},[860,17579,15719],{"class":866},[860,17581,871],{"class":978},[860,17583,17584],{"class":870},"envPath",[860,17586,1417],{"class":978},[860,17588,17589,17592,17594,17596,17598,17600],{"class":862,"line":8607},[860,17590,17591],{"class":866},"    updateWranglerVars",[860,17593,871],{"class":978},[860,17595,8101],{"class":870},[860,17597,1091],{"class":874},[860,17599,16322],{"class":870},[860,17601,1417],{"class":978},[860,17603,17604,17606,17608,17610,17612,17614],{"class":862,"line":8612},[860,17605,2108],{"class":874},[860,17607,6528],{"class":1085},[860,17609,1567],{"class":978},[860,17611,5562],{"class":870},[860,17613,5320],{"class":978},[860,17615,1815],{"class":874},[860,17617,17618,17620,17622,17624,17626,17628,17631,17633,17635,17637,17639,17641],{"class":862,"line":8627},[860,17619,16719],{"class":870},[860,17621,759],{"class":874},[860,17623,5562],{"class":866},[860,17625,871],{"class":978},[860,17627,875],{"class":874},[860,17629,17630],{"class":878},"❌ Error:",[860,17632,875],{"class":874},[860,17634,1091],{"class":874},[860,17636,5591],{"class":870},[860,17638,759],{"class":874},[860,17640,5730],{"class":870},[860,17642,1417],{"class":978},[860,17644,17645,17647,17649,17651,17653,17655],{"class":862,"line":8647},[860,17646,10377],{"class":870},[860,17648,759],{"class":874},[860,17650,8951],{"class":866},[860,17652,871],{"class":978},[860,17654,7449],{"class":1836},[860,17656,1417],{"class":978},[860,17658,17659],{"class":862,"line":8673},[860,17660,1008],{"class":874},[860,17662,17663],{"class":862,"line":8698},[860,17664,1014],{"class":874},[860,17666,17667],{"class":862,"line":8703},[860,17668,1232],{"emptyLinePlaceholder":526},[860,17670,17671,17673],{"class":862,"line":8723},[860,17672,8875],{"class":866},[860,17674,905],{"class":870},[851,17676,17679],{"className":853,"code":17677,"filename":17678,"language":855,"meta":856,"style":856},"import type { Config } from 'drizzle-kit'\n\nexport default {\n  schema: './server/database/schema.ts',\n  out: './server/database/migrations',\n  dialect: 'sqlite'\n} satisfies Config\n","drizzle.config.ts",[816,17680,17681,17702,17706,17714,17730,17746,17760],{"__ignoreMap":856},[860,17682,17683,17685,17687,17689,17692,17694,17696,17698,17700],{"class":862,"line":863},[860,17684,1966],{"class":1085},[860,17686,13294],{"class":1085},[860,17688,1213],{"class":874},[860,17690,17691],{"class":870}," Config",[860,17693,1855],{"class":874},[860,17695,1986],{"class":1085},[860,17697,1847],{"class":874},[860,17699,5016],{"class":878},[860,17701,1994],{"class":874},[860,17703,17704],{"class":862,"line":945},[860,17705,1232],{"emptyLinePlaceholder":526},[860,17707,17708,17710,17712],{"class":862,"line":929},[860,17709,2155],{"class":1085},[860,17711,2246],{"class":1085},[860,17713,942],{"class":874},[860,17715,17716,17719,17721,17723,17726,17728],{"class":862,"line":970},[860,17717,17718],{"class":978},"  schema",[860,17720,849],{"class":874},[860,17722,1847],{"class":874},[860,17724,17725],{"class":878},"./server/database/schema.ts",[860,17727,875],{"class":874},[860,17729,967],{"class":874},[860,17731,17732,17735,17737,17739,17742,17744],{"class":862,"line":994},[860,17733,17734],{"class":978},"  out",[860,17736,849],{"class":874},[860,17738,1847],{"class":874},[860,17740,17741],{"class":878},"./server/database/migrations",[860,17743,875],{"class":874},[860,17745,967],{"class":874},[860,17747,17748,17751,17753,17755,17758],{"class":862,"line":1005},[860,17749,17750],{"class":978},"  dialect",[860,17752,849],{"class":874},[860,17754,1847],{"class":874},[860,17756,17757],{"class":878},"sqlite",[860,17759,1994],{"class":874},[860,17761,17762,17764,17767],{"class":862,"line":1011},[860,17763,1219],{"class":874},[860,17765,17766],{"class":1085}," satisfies",[860,17768,17769],{"class":936}," Config\n",[851,17771,17774],{"className":2523,"code":17772,"filename":17773,"language":2526,"meta":856,"style":856},"# Production Environment Variables\n# For Cloudflare Workers, use Wrangler Secrets instead of .env files\n\n# How to set production secrets:\n# wrangler secret put BETTER_AUTH_SECRET\n# wrangler secret put NUXT_TURNSTILE_SECRET_KEY\n# wrangler secret put RESEND_API_KEY\n\n# Note: These are NOT stored in files in production.\n# They're encrypted secrets in Cloudflare Workers.\n\n# For reference, these are the secrets you'll need:\n# - BETTER_AUTH_SECRET (authentication)\n# - BETTER_AUTH_URL (your production URL, e.g., https://example.com)\n# - NUXT_TURNSTILE_SECRET_KEY (Cloudflare Turnstile)\n# - RESEND_API_KEY (email service, if using Resend)\n# - GOOGLE_CLIENT_ID (OAuth, if enabled)\n# - GOOGLE_CLIENT_SECRET (OAuth, if enabled)\n\n# Non-sensitive variables go in wrangler.jsonc under \"vars\"\n",".env.production.example",[816,17775,17776,17781,17786,17790,17795,17800,17805,17810,17814,17819,17824,17828,17833,17838,17843,17848,17853,17858,17863,17867],{"__ignoreMap":856},[860,17777,17778],{"class":862,"line":863},[860,17779,17780],{"class":1237},"# Production Environment Variables\n",[860,17782,17783],{"class":862,"line":945},[860,17784,17785],{"class":1237},"# For Cloudflare Workers, use Wrangler Secrets instead of .env files\n",[860,17787,17788],{"class":862,"line":929},[860,17789,1232],{"emptyLinePlaceholder":526},[860,17791,17792],{"class":862,"line":970},[860,17793,17794],{"class":1237},"# How to set production secrets:\n",[860,17796,17797],{"class":862,"line":994},[860,17798,17799],{"class":1237},"# wrangler secret put BETTER_AUTH_SECRET\n",[860,17801,17802],{"class":862,"line":1005},[860,17803,17804],{"class":1237},"# wrangler secret put NUXT_TURNSTILE_SECRET_KEY\n",[860,17806,17807],{"class":862,"line":1011},[860,17808,17809],{"class":1237},"# wrangler secret put RESEND_API_KEY\n",[860,17811,17812],{"class":862,"line":1284},[860,17813,1232],{"emptyLinePlaceholder":526},[860,17815,17816],{"class":862,"line":1289},[860,17817,17818],{"class":1237},"# Note: These are NOT stored in files in production.\n",[860,17820,17821],{"class":862,"line":1317},[860,17822,17823],{"class":1237},"# They're encrypted secrets in Cloudflare Workers.\n",[860,17825,17826],{"class":862,"line":1356},[860,17827,1232],{"emptyLinePlaceholder":526},[860,17829,17830],{"class":862,"line":1369},[860,17831,17832],{"class":1237},"# For reference, these are the secrets you'll need:\n",[860,17834,17835],{"class":862,"line":1146},[860,17836,17837],{"class":1237},"# - BETTER_AUTH_SECRET (authentication)\n",[860,17839,17840],{"class":862,"line":1147},[860,17841,17842],{"class":1237},"# - BETTER_AUTH_URL (your production URL, e.g., https://example.com)\n",[860,17844,17845],{"class":862,"line":1148},[860,17846,17847],{"class":1237},"# - NUXT_TURNSTILE_SECRET_KEY (Cloudflare Turnstile)\n",[860,17849,17850],{"class":862,"line":1434},[860,17851,17852],{"class":1237},"# - RESEND_API_KEY (email service, if using Resend)\n",[860,17854,17855],{"class":862,"line":1443},[860,17856,17857],{"class":1237},"# - GOOGLE_CLIENT_ID (OAuth, if enabled)\n",[860,17859,17860],{"class":862,"line":1448},[860,17861,17862],{"class":1237},"# - GOOGLE_CLIENT_SECRET (OAuth, if enabled)\n",[860,17864,17865],{"class":862,"line":1457},[860,17866,1232],{"emptyLinePlaceholder":526},[860,17868,17869],{"class":862,"line":1462},[860,17870,17871],{"class":1237},"# Non-sensitive variables go in wrangler.jsonc under \"vars\"\n",[1132,17873],{},[786,17875,17877],{"id":17876},"troubleshooting","Troubleshooting",[711,17879,17880,17889,17890,17893,17894,2848,17896,17899],{},[1102,17881,17882,17883,1021,17886,17888],{},"Build outputting to ",[816,17884,17885],{},"dist",[816,17887,3781],{},"?","\nRemove ",[816,17891,17892],{},"@nuxthub/core"," from your modules, delete ",[816,17895,17885],{},[816,17897,17898],{},".nuxt"," folders, rebuild.",[711,17901,17902,17905,17906,17908,17909,17912,17913,17916,17917,759],{},[1102,17903,17904],{},"D1 Database binding not found?","\nCheck ",[816,17907,2607],{}," has the right ",[816,17910,17911],{},"database_id"," and binding name is ",[816,17914,17915],{},"\"DB\"",". For local dev, use ",[816,17918,17919],{},"pnpm run preview:local",[711,17921,17922,17925,17926,17928,17929,2848,17931,17934,17935,759],{},[1102,17923,17924],{},"KV binding not found?","\nMake sure ",[816,17927,2607],{}," has ",[816,17930,12806],{},[816,17932,17933],{},"preview_id"," set. Binding name should be ",[816,17936,17937],{},"\"KV\"",[711,17939,17940,17943,17944,17947],{},[1102,17941,17942],{},"Getting 500 errors instead of 401/403?","\nYour error handler needs to call ",[816,17945,17946],{},"setResponseStatus(event, statusCode)"," to set the proper HTTP status.",[1132,17949],{},[786,17951,17953],{"id":17952},"wrapping-up","Wrapping Up",[711,17955,17956],{},"After going through this migration myself, I am happy, because at least there is no a 3rd party dependency and it is free no matter how many websites I am deploying. The scripts I wrote (setup, extraction, seeding) handle all the tedious parts, and you get better control over your deployment.",[711,17958,17959],{},"Some notes:",[1109,17961,17962,17969],{},[1112,17963,17964,17965,17968],{},"That triple-check pattern for bindings (",[816,17966,17967],{},"process.env.DB || globalThis.__env__?.DB || globalThis.DB",") looks weird but it's necessary for different Cloudflare environments",[1112,17970,17971,17972,1021,17974,17976],{},"If your keep using nuxthub, the build outputs to ",[816,17973,17885],{},[816,17975,3781],{},", you may need to adjust scripts accordingly",[711,17978,17979],{},"We hope this guide makes your migration to Cloudflare Workers as smooth as possible.",[1132,17981],{},[2443,17983],{"button-icon":179,"button-text":525,"className":17984,"color":777,"description":17985,"form-action":476,"icon":2449,"title":17986},[2446,2447],"Migrating to Cloudflare Workers or need help hosting your Nuxt site? We can help you set everything up, migrate your data, and get you deployed without the headaches.","Need Help with Your Migration?",[2452,17988,17989],{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":856,"searchDepth":945,"depth":945,"links":17991},[17992,17993,17994,17995,17998,17999,18000,18001,18002,18003,18004],{"id":2494,"depth":945,"text":2495},{"id":2513,"depth":945,"text":2514},{"id":2579,"depth":945,"text":2580},{"id":3410,"depth":945,"text":3411,"children":17996},[17997],{"id":3561,"depth":929,"text":3562},{"id":3628,"depth":945,"text":3629},{"id":3694,"depth":945,"text":3695},{"id":3764,"depth":945,"text":3765},{"id":3790,"depth":945,"text":3791},{"id":3802,"depth":945,"text":3803},{"id":17876,"depth":945,"text":17877},{"id":17952,"depth":945,"text":17953},"2025-12-04","How to deploy Nuxt directly to Cloudflare Workers with wrangler.jsonc. Includes automated scripts for setup, migrations, and deployment. Works for new projects or migrating from NuxtHub.",{"src":18008},"blog/posts/202512/nuxthub/migrate_from_nuxthub.webp",{},"/blog/migrate-nuxthub-to-wrangler",{"title":2485,"description":18006},"3.blog/1.migrate-nuxthub-to-wrangler",[2478,2481,18014,18015],"Self-Hosting","DevOps","SUxeyVBHRhG86jkfLVASiLsQSE7LMFiWbDsajFCgDX0",{"id":18018,"title":18019,"authors":18020,"badge":18023,"body":18025,"date":18268,"description":18269,"extension":2470,"image":18270,"meta":18272,"navigation":526,"ogImage":519,"path":18273,"published":526,"seo":18274,"stem":18275,"tags":18276,"__hash__":18279},"posts/3.blog/0.welcome.md","What This Blog Is About (And Why You Might Care)",[18021],{"name":766,"avatar":18022},{"src":768},{"label":18024},"Welcome",{"type":772,"value":18026,"toc":18252},[18027,18031,18034,18037,18051,18054,18058,18061,18065,18068,18071,18075,18078,18081,18085,18088,18091,18095,18098,18101,18105,18108,18111,18115,18118,18121,18125,18128,18131,18135,18146,18150,18153,18156,18160,18163,18225,18228,18232,18239,18242,18245,18247],[786,18028,18030],{"id":18029},"hey","Hey 👋",[711,18032,18033],{},"If you're here, you probably found this site through a deployment guide or maybe you're just curious what we write about. Either way, welcome.",[711,18035,18036],{},"This blog exists because when building SaaS products, we kept running into the same frustrations:",[1109,18038,18039,18042,18045,18048],{},[1112,18040,18041],{},"Deployment shouldn't cost $500/month for a product with 10 users",[1112,18043,18044],{},"Most tutorials assume you're either a complete beginner or you already know everything",[1112,18046,18047],{},"A lot of \"production-ready\" advice is overkill for bootstrapped projects",[1112,18049,18050],{},"The space between \"hello world\" and \"enterprise architecture\" is weirdly empty",[711,18052,18053],{},"So we're writing the stuff we wish we'd read a few years ago. Practical, no-nonsense posts about building and shipping web apps without needing venture funding or a DevOps team.",[786,18055,18057],{"id":18056},"what-youll-find-here","What You'll Find Here",[711,18059,18060],{},"We write about whatever we're working on or whatever problem we just solved. The main topics:",[1479,18062,18064],{"id":18063},"cheap-but-good-deployments","Cheap (But Good) Deployments",[711,18066,18067],{},"Hetzner + Docker, Cloudflare Workers, self-hosting on VPS — no need to pay AWS/Vercel prices if you don't have to. You can run a solid SaaS on $10-50/month if you know what you're doing. We'll show you how.",[711,18069,18070],{},"Docker Swarm gets ignored by a lot of people in favor of Kubernetes, but for small-to-medium projects, it's perfect. Simple, cheap, scales when you need it to. We use it for client projects.",[1479,18072,18074],{"id":18073},"nuxt-vue","Nuxt & Vue",[711,18076,18077],{},"Our frontend framework of choice. Nuxt 4 is really good — server-side rendering, file-based routing, great developer experience. We'll write about building modules, patterns we use, weird gotchas we've found.",[711,18079,18080],{},"Vue 3 Composition API is the way to go. If you're still on Options API or considering React, we might convince you otherwise. Or not. Use what works.",[1479,18082,18084],{"id":18083},"django","Django",[711,18086,18087],{},"Sometimes you need a real backend framework, not just serverless functions. Django is boring in the best way. It works, it's been around forever, and it has answers for basically everything.",[711,18089,18090],{},"Posts will cover integrating Django with modern frontends, REST APIs, background tasks, deployment strategies. Probably some multi-tenancy stuff too since that comes up a lot.",[1479,18092,18094],{"id":18093},"architecting-stuff-that-scales-but-doesnt-have-to-yet","Architecting Stuff That Scales (But Doesn't Have To Yet)",[711,18096,18097],{},"The trick is building something that works now but doesn't need a full rewrite when you get your first 1,000 users. Code organization, database design, when to optimize and when not to.",[711,18099,18100],{},"Not \"best practices\" — just what actually works based on shipping real products. Sometimes the \"right\" architecture is the one you can ship this week.",[1479,18102,18104],{"id":18103},"building-saas-for-founders","Building SaaS for Founders",[711,18106,18107],{},"You don't need to be a senior engineer to build a SaaS product. You need to understand enough to make smart decisions and avoid costly mistakes.",[711,18109,18110],{},"Authentication, payments, email, background jobs, multi-tenancy — the boring infrastructure stuff that every SaaS needs. We'll show you how to set it up without overthinking it.",[1479,18112,18114],{"id":18113},"building-nuxt-modules","Building Nuxt Modules",[711,18116,18117],{},"Nuxt's module system is really powerful but also weirdly underdocumented. We've built modules for client projects and there's always some gotcha that takes a few hours (and sometimes days) to figure out.",[711,18119,18120],{},"Posts will cover module patterns, how to structure reusable features, auto-imports, build-time vs runtime, that sort of thing.",[1479,18122,18124],{"id":18123},"privacy-first-web-development","Privacy-First Web Development",[711,18126,18127],{},"Most people have no idea how much they're being tracked. FB pixel tracks you across every site that uses it. Email tracking pixels tell senders when you opened their email. AWS SES logs every email open. Cookies follow you everywhere.",[711,18129,18130],{},"We'll write about the privacy implications of third-party services, how tracking actually works, and how to build landing pages that don't need cookie consent banners at all (because they don't use optional cookies). The landing pages we build work perfectly fine without FB pixel, Google Analytics, or any tracking — but if you need those, we have a consent solution that only loads scripts after explicit user consent.",[786,18132,18134],{"id":18133},"what-this-blog-is-not","What This Blog Is Not",[1109,18136,18137,18140,18143],{},[1112,18138,18139],{},"Not \"enterprise architecture patterns\" — if you have 500 engineers, you don't need our advice",[1112,18141,18142],{},"Not framework wars — use what you know, ship something",[1112,18144,18145],{},"Not \"monetize your blog\" or \"7 ways to grow your audience\" — this isn't that kind of blog",[786,18147,18149],{"id":18148},"who-we-are","Who We Are",[711,18151,18152],{},"We're a web dev agency that builds landing pages, MVPs, browser extensions, that sort of thing. Mostly for SaaS founders who need something built fast and don't want to hire a full team.",[711,18154,18155],{},"We're based in Europe, which explains the Hetzner obsession. Their VPS prices are stupid cheap compared to US hosting, and they work great if you're not serving exclusively US traffic. If you're in Europe, you should host most of your backend in the EU to avoid GDPR headaches anyway.",[786,18157,18159],{"id":18158},"whats-next","What's Next",[711,18161,18162],{},"We've got a backlog of posts we want to write:",[1109,18164,18165,18171,18177,18183,18189,18195,18201,18207,18213,18219],{},[1112,18166,18167,18170],{},[1102,18168,18169],{},"Deploying Nuxt to Cloudflare Workers"," — already published, check it out if you haven't",[1112,18172,18173,18176],{},[1102,18174,18175],{},"Docker Swarm for SaaS apps"," — multi-node setup, zero-downtime deploys, secrets management",[1112,18178,18179,18182],{},[1102,18180,18181],{},"Building a multi-tenant SaaS backend"," — database design, isolation strategies, what actually matters",[1112,18184,18185,18188],{},[1102,18186,18187],{},"Nuxt module development"," — creating reusable features, auto-imports, best practices",[1112,18190,18191,18194],{},[1102,18192,18193],{},"Django + Nuxt integration"," — REST APIs, authentication, where to split frontend/backend logic",[1112,18196,18197,18200],{},[1102,18198,18199],{},"Cheap monitoring and logging"," — you don't need Datadog, we're building our own solution for this",[1112,18202,18203,18206],{},[1102,18204,18205],{},"How FB pixel actually tracks you"," — across every site that uses it, and why you might not need it",[1112,18208,18209,18212],{},[1102,18210,18211],{},"Email tracking explained"," — tracking pixels, SES open tracking, and how to avoid being tracked",[1112,18214,18215,18218],{},[1102,18216,18217],{},"Building landing pages without cookie consent"," — when you actually need it vs when you don't",[1112,18220,18221,18224],{},[1102,18222,18223],{},"Privacy-focused analytics"," — Umami (self-hosted or cloud), Fathom, and other privacy-first options that don't violate privacy",[711,18226,18227],{},"Posts get published as we write them. No schedule, no content calendar. Just whenever we've got something worth sharing.",[786,18229,18231],{"id":18230},"subscribe-follow-whatever","Subscribe? Follow? Whatever",[711,18233,18234,18235,18238],{},"If you want updates when new posts drop, there's an RSS feed (",[816,18236,18237],{},"/blog/rss.xml",") or you can check back whenever. No email newsletters or any of that.",[711,18240,18241],{},"If you've got questions or you're stuck on something, feel free to reach out.",[711,18243,18244],{},"Alright, that's enough intro. Let's build some stuff.",[1132,18246],{},[2443,18248],{"button-icon":179,"button-text":525,"className":18249,"color":777,"description":18250,"form-action":476,"icon":466,"title":18251},[2446,2447],"We build fast, modern landing pages for SaaS products. Also do MVPs, browser extensions, and full-stack work. If you need something built without the enterprise overhead, let's talk.","Need a Landing Page?",{"title":856,"searchDepth":945,"depth":945,"links":18253},[18254,18255,18264,18265,18266,18267],{"id":18029,"depth":945,"text":18030},{"id":18056,"depth":945,"text":18057,"children":18256},[18257,18258,18259,18260,18261,18262,18263],{"id":18063,"depth":929,"text":18064},{"id":18073,"depth":929,"text":18074},{"id":18083,"depth":929,"text":18084},{"id":18093,"depth":929,"text":18094},{"id":18103,"depth":929,"text":18104},{"id":18113,"depth":929,"text":18114},{"id":18123,"depth":929,"text":18124},{"id":18133,"depth":945,"text":18134},{"id":18148,"depth":945,"text":18149},{"id":18158,"depth":945,"text":18159},{"id":18230,"depth":945,"text":18231},"2025-12-01","Building SaaS products, deploying on a budget, and the stuff I wish someone had told me when I started. Docker, Nuxt, Django, and how to ship without burning cash.",{"src":18271},"blog/posts/202512/welcome/welcome_small.webp",{},"/blog/welcome",{"title":18019,"description":18269},"3.blog/0.welcome",[726,18015,2478,18277,18278],"Docker","Deployment","0vvobUFRgvMZNa-Bhp4MR20X9Q7Ud6_w9z1C0Z52e7U",1772977469831]